Integrated Web Browser
#1
Hi all. Here's my GSOC proposal.

Short description: This proposal is for working on integrating a web browser component within XBMC.

Summary: A lot of media content is made available through websites such as youtube.com and ustream.tv. There are also services such as Amazon video and Vudu which have their own websites where users can view their media content. Adding a web browser component to XBMC would make for a great feature in order to have access to all this media content via XBMC.

How will I achieve this: QtWebkit will be used to provide the web browser. QtWebkit (through the Qt framework) provides a widget that can be rendered inside a 3D texture. This will be needed in order to embed the web browser within XBMC.

Benefits: Any user who has ever wanted to view content on websites such as youtube.com or Amazon video through XBMC will benefit. Aside from media content, users will be able to access any website they wish through the use of the XBMC Media Center.

Goals: The first goal would be to have a basic browser component running within XBMC. This basic browser will have minimal functionality (i.e. functionality for going to the home page, stop, refresh, back, forward, the address bar, and a go functionality). Only one page would be viewable at a time and it will be more suited for use with a keyboard and mouse. The second goal will be usability refinements for the web browser. In particular, the usability refinements for the second goal is, navigation of a web page with a minimal input device (i.e. "tabbing" up, down, left, and right through web elements with a standard TV remote). The second goal will also include the ability to have multiple pages loaded and navigable (a sort of "tabbed" browser for XBMC).

What does it touch in XBMC: The Qt framework needs to be initiated via the main thread so there needs to be some code in main() or in the CApplication class which maintains an instance of Qt's QApplication class. Also, some way to process events for the Qt framework needs to be done, so there will be some code in CApplication:Tonguerocess() that does just that. It will need things such as translations, icons, configuration settings. Also, layout information needs to be added to the confluence skin package.

Requirements: C++, advanced knowledge of the XBMC codebase, and general knowledge in working with Qt widgets is required.

How long have you been writing software for work/fun?
For over 5 years now, for both work and fun.
Reply
#2
Would it be best to make this a plug-in/add-on? (If there is a distinction between the two post-Eden, please let me know. If not, the XBMC team should decide they're all plug-ins or add-ons and stick with it.)

Pros:
- Development cycles for both the plug-in and Core do not have to be in sync, otherwise each is dependent on the other for pushing out gold code.
- As a plug-in, users can decide whether or not to use it.
- Different uses, opinions, semantics, designs can and will change over the years and sometimes even between master builds. By not tying this to core, other styles of web viewing can be possible without worry of incompatible code (Could a Silverlight browser add-on conflict with this core product? Perhaps.)
- Easier customization.

Cons:
- Separate install from core. No "out-of-the-box" experience.
Reply
#3
This would be great, especially if addons could use HTML(5?) for their interfaces. However, historically, the devs have been apprehensive to include a browser due to the amount of dependencies it would add.
Reply
#4
Yes, it would be ideal to make this an addon. I would probably look into making this an addon as a third sub goal for this GSOC task.
Reply
#5
Here's a visual. This is the web browser component I worked on around this time two years ago. At the time I was experimenting with a fork of qtwebkit called llqtwebkit, so what you see is using llqtwebkit. However, it is certainly possible to embed a web browser into XBMC by just using vanilla qt and qtwebkit, which is what I intend to do.
Image
Reply
#6
Great! If I may throw a couple of requests your way then...

- Start browser in fullscreen
- Use either a hover or key press to reveal a close window icon
or
Use a key press to close the window


I ask because my own tests with browsers other than IE with XBMCflix (Netflix add-on) is aimed at achieving a multimedia experience without exposing the user to the web browser construct. I mean that someone using XBMC wants more of the video, music and games experiences than they do with applications and windows. A person who uses a laptop or desktop computer for things other than XBMC expects to see windowed environments with multiple windows (or browser tabs) open on their desktop. So if you can make the browser more about the content than the container, I think it'll fit nicely in an XBMC environment. To me that means at launch from XBMC, the browser opens full screen.

Also instead of a URL bar at the top of the browser, I see a function key or key presses (Ctrl+Q?) that opens a transparent window on top of the browser window that works as the URL bar or acts as a pull down or pull up menu. That way you can close or open it without a window resize.
Reply
#7
An integrated web browser would be great as it could enable addon web based DRM applications such as Netflix or other Silverlight and Flash based addons, such as Boxee does.

But why add dependency on Qt framework? Why not just use a pure version of WebKit or something with less dependencies?

And could the layout engine be abstracted so that you could later replace it with Gecko or whatever without too much work? Depending on Qt from the start might prevent that?
Reply
#8
@TheMonkeyKing The general usability of the web browser will definitely be considered. Of course, certain ways of using a web browser through a big screen tv via a remote have to be addressed.
Reply
#9
@RockerC Using webkit requires the use of some kind of widget library. The "pure webkit" so to speak uses gtk+. There is qtwebkit, and there is a list of other ports of webkit. Choosing one over another requires more or less the same number of dependencies. Using gecko follows a similar situation where you need make use of some kind of widget library.
Reply
#10
(2012-04-06, 20:48)amejia Wrote: @RockerC Using webkit requires the use of some kind of widget library. The "pure webkit" so to speak uses gtk+. There is qtwebkit, and there is a list of other ports of webkit. Choosing one over another requires more or less the same number of dependencies. Using gecko follows a similar situation where you need make use of some kind of widget library.
Should it not be XBMC's own GUI library that will be acting as the widget toolkit here?

How else could the web browser be fully integrated into XBMC for embedded addons, and not just for browsing the web classic style?

How does Boxee do it with its web based apps? Boxee too uses WebKit for apps but how can it integrate more than as just a classic web browser?
Reply
#11
Porting webkit so that it uses XBMC's gui is going to take a lot more effort than what I'm willing to expend for a GSOC project. Then there's the issue of maintaining that port. It serves XBMC better to use one of the well known ports of webkit, such as qtwebkit.

It will certainly be possible to embed a web browser in any addon. In fact, the plan is to have the web browser component be another addon.

I'm not familiar with how boxee does this as I don't follow their development anymore.
Reply
#12
(2012-04-08, 03:01)amejia Wrote: It serves XBMC better to use one of the well known ports of webkit, such as qtwebkit.

It will certainly be possible to embed a web browser in any addon. In fact, the plan is to have the web browser component be another addon.

I'm not familiar with how boxee does this as I don't follow their development anymore.
Why not at least look at Boxee's code surrounding WebKit before you begin? Maybe even get help from Boxee developers with ideas on how to make thier concept better, to learn from their mistakes and success?

With your own aproach would only get a classic web browser as an addon, so in reality not much more then launching an external Firefox with remote and zoom support?

IMHO the best thing with adding an integrated web browser would be the added capability to use it for embedded Silverlight and Flash addons such as Netflix, so not just to gain a classic web browser as an addon.
Reply
#13
MeeGo TV Browser which is Chromium / WebKit based MeeGo browser for TV platforms could perhaps be the perfect fit for XBMC? Huh

http://wiki.meego.com/TV_Browser
Quote:The internet world has created browser for PC. Assuming not only a mouse and a keyboard, but also a 50 cm viewing with a multi windows presentation layer and a skilled human who drive the beast. Unfortunately, a TV has neither a keyboard or a mouse, the vision is done from 3m, there is no windowing concept and the Live TV presentation remains in control of the UI all the time. TV needs is a browser which address some critical issues. Controllable by an external application.
  • Instant start
  • Accept alternative input method
  • Support HW accelerated Video
  • Give access to all the TV features from Javascript
    [**]System configuration
    [**]Asset browsing
    [**]Video and Audio
    [**]PVR and Pause live TV.
    [**]Video and Audio output
    [**]Input devices
http://meego.gitorious.org/meego-middlew...tv-browser

MeeGo TV Browser is still an active project and their developers also already use XBMC as their media player for MeeGo TV / Tizen.
Reply
#14
Any update on this? Integrated web browser in XBMC would be great! Is the only big missing feature on this great mediacenter!
Reply
#15
Indeed lots of use for a web browser.

Would be really cool to have a link from a music artist to their last.fm page and charts in a web browser Wink
Reply

Logout Mark Read Team Forum Stats Members Help
Integrated Web Browser1