Tutorial: Chromium Embedded Framework (CEF)

Now that we have a Second Life™ viewer with CEF, what can we do with it? For now I am not sure what limitations we will have from the viewer. But, we can look at CEF and see what is possible in general. Here I’ll try to give you the basic information about CEF and links to some tutorials.

Aspen Fell

Aspen Fell

CEF is an open source project built on the  Google Chromium project, which is another open source project to build a better web browser (Chromium) and the project is the parent of the Google Chrome browser. If you research these projects you will see a number of other projects tied together with these.

…  Unlike the Chromium project itself, which focuses mainly on Google Chrome application development, CEF focuses on facilitating embedded browser use cases in third-party applications. CEF insulates the user from the underlying Chromium and Blink code complexity by offering production-quality stable APIs, release branches tracking specific Chromium releases, and binary distributions. Most features in CEF have default implementations that provide rich functionality while requiring little or no integration work from the user. As of this article’s publication there are over 100 million installed instances of CEF around the world embedded in products from a wide range of companies and industries. (reference)

Or, in another place:

The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromium-based browsers in other applications.

The Webkit allowed us to have a browser inside the viewer. CEF does the same. That is handy, but not the complete story. For instance the viewer’s search panel opens the SL Search Page (https://search.secondlife.com/) that lives on the web. It is a custom ‘browser’ or app wityh an HTML interface. Profiles are similar.

The idea is instead of having to build a web page and a viewer panel that do the same thing, we have a way to open the web page as a panel in the viewer. The only thing we have to build is a simple panel that calls the right URL. To make another panel we just change the panel title and the URL it points to. Much easier and faster.

Many of the combat meters in SL use external servers. I think the idea of adding HTML dialogs to the viewer was to enable design of meters that use a web page for the controls. With CEF we have API’s that the viewer can use to talk to web based apps. I’m fuzzy on how much communication was possible between the older HTML dialogs and remote Webkit connected servers. CEF should improve that connection.

One of the basic ideas of CEF is to make user interfaces easier to design. One can essentially use HTML5 to build a user interface. This is much easier and more people know how to use HTML5 than they do the viewer’s XML based process.

CEF allows people to use.Net, Java, Delphi, and Python. That means we can likely use those tools to build things in the viewer.

The logic that is being developed for building apps in phones, tablets and laptops is taking over all of computing. Adding the same tech into the viewer opens up large possibilities.

You are going to find these are far more technical than most SL users want to deal with. Remember the viewer is just out as a project status viewer. This means the tech info on how to use the new feature is not yet ready. The Lindens will be adding information to the wiki as they finalize things.

The current tutorials show how to use CEF and build it into an application. My understanding is the Lab is building it into the viewer. Until they tell us how they have set that up, I doubt there is much we can do. But, Drax and Loki’s video suggests we can do more than I suspect.

Once the Linden provide the basic information for using the CEF API’s they have built inside the viewer we should be able to add CEF apps without having to do the heavy C programming part.

3 thoughts on “Tutorial: Chromium Embedded Framework (CEF)

  1. HTML interfaces… I had so hoped for it… A scripter friend of mine and me did some tests the night the viewer got released, only to get disappointed. First click interact is still broken, shared media still needs a click to give focus to the website, which, imho, makes the whole feature annoying and useless. We filed a JIRA on that, see yourself:

    I personally fail to see how giving focus to the website by hovering over it would make a dramatic difference from doing so by clicking it and feel, this is a strategical, not a technical issue:
    LL is either lacking interest or resources to introduce major new features into SL and is keeping it in maintainance and bugfixing mode, while concentrating efforts on Sansar.
    Without that feature, CEF is no more than a bugfix to avoid website display- and security issues caused by the aging WebKit framework…

  2. ‘With CEF we have API’s that the viewer can use to talk to web based apps. I’m fuzzy on how much communication was possible between the older HTML dialogs and remote Webkit connected servers. CEF should improve that connection.’

    Sorry to disappoint you, but there’s currently nothing that the CEF3 plugin does which couldn’t be done with the QtWebkit plugin (note that QtWebkit, is not just Webkit and CEF3 is actually based off Webkit too): they are fully interchangeable and the API (LL’s plugin API) is in fact exactly the same. The only advantage of CEF3 over QtWebkit is the HTML5 support.

    LL could eventually add more interaction between plugins (not just the HTML plugin, be it CEF3 or QtWebkit) and scripts, via the viewer, but there’s currently nothing new on that front.

  3. I merit to be corrected as I did not test yet. But CEF give access to html5 language and a rich core of tags. Which will give direct access to newest and greatest of the web in html format. In the later case playing videos ( other then youtube) or audio file via media on prim will now be possible referring to a html5 web page that uses simple video or audio tag. No more tag that work more or less only with flash or qtime recording.

    Hope it helps

Leave a Reply

Your email address will not be published. Required fields are marked *