CEF3 Development Status

Do not post support requests, bug reports or feature requests. Discuss CEF here. Non-CEF related discussion goes in General Discussion!

Re: CEF3 Development Status

Postby fddima » Thu Mar 15, 2012 8:23 am

magreenblatt wrote:I originally considered this but decided that the performance would be sub-optimal in many cases due to data being passed between processes unnecessarily. Instead, the application uses CefProcessMessage for communicating between processes and JS bindings are in the renderer process only. This allows for application-level optimization of both communication and bindings (JS API). So, for example, you can pass all of an object's attributes as a single CefProcessMessage and create a binding that exposes them to JS as separate accessors without additional inter-process communication. Design your JS APIs to work asynchronously as described here: http://www.chromium.org/developers/desi ... design-doc


I'm absolutely agreed with idea to minimize inter-process interactions, but from api headers i'm still little misunderstood how it work, i'm doesn't see any usage of CefProcessMessage. As i understand, that it will be possible to send custom message from JS to UI process and handle them, even without 'classic' JS bindings?
fddima
Master
 
Posts: 788
Joined: Tue Dec 07, 2010 6:10 am

Re: CEF3 Development Status

Postby fddima » Thu Mar 15, 2012 8:35 am

In addition: i'm worry about next use case:
1. UI process runned under Mono or .NET runtime.
2. Using native 'standard' render processes.
While first process hosting application services including network communication, and some application instance logic - it is required that JS can call services, and services can execute JS, with knowledge about document 'instance'. (I.e. it is possible to run two identical applications but they are will be really two different instances).
fddima
Master
 
Posts: 788
Joined: Tue Dec 07, 2010 6:10 am

Re: CEF3 Development Status

Postby magreenblatt » Thu Mar 15, 2012 9:19 am

fddima wrote:
magreenblatt wrote:I originally considered this but decided that the performance would be sub-optimal in many cases due to data being passed between processes unnecessarily. Instead, the application uses CefProcessMessage for communicating between processes and JS bindings are in the renderer process only. This allows for application-level optimization of both communication and bindings (JS API). So, for example, you can pass all of an object's attributes as a single CefProcessMessage and create a binding that exposes them to JS as separate accessors without additional inter-process communication. Design your JS APIs to work asynchronously as described here: http://www.chromium.org/developers/desi ... design-doc


I'm absolutely agreed with idea to minimize inter-process interactions, but from api headers i'm still little misunderstood how it work, i'm doesn't see any usage of CefProcessMessage. As i understand, that it will be possible to send custom message from JS to UI process and handle them, even without 'classic' JS bindings?

The related issue has a good description: http://code.google.com/p/chromiumembedd ... ail?id=544. See test_app.[cc|h] and process_message_unittest.cc for an example: http://code.google.com/p/chromiumembedd ... Funittests.

fddima wrote:In addition: i'm worry about next use case:
1. UI process runned under Mono or .NET runtime.
2. Using native 'standard' render processes.

I see two possible solutions:
A. Make the render process a Mono/.NET application as well, and/or
B. Add a layer on top of CefProcessMessage and V8 bindings that can be completely driven from the browser process. I may eventually do this for CEF once the common use cases are better understood.

fddima wrote:While first process hosting application services including network communication, and some application instance logic - it is required that JS can call services, and services can execute JS, with knowledge about document 'instance'. (I.e. it is possible to run two identical applications but they are will be really two different instances).

CefBrowser and CefFrame exist in both the browser and render processes. Each CefProcessMessage is sent from and delivered to a particular browser. You can for example pass the frame id as an attribute of your message and retrieve the associated CefFrame in the receiving process. Your message can also contain whatever additional state information is necessary, or you can supplement it by using XMLHttpRequest (XHR), WebSockets or similar. For example, an XHR can be sent from render process JS to a resource handler implemented in the browser process.
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: CEF3 Development Status

Postby fddima » Thu Mar 15, 2012 9:45 am

Thanks for explanation!

magreenblatt wrote:I see two possible solutions:
A. Make the render process a Mono/.NET application as well, and/or
B. Add a layer on top of CefProcessMessage and V8 bindings that can be completely driven from the browser process. I may eventually do this for CEF once the common use cases are better understood.

A) Yes, i thinking about this - very good, that it is possible!
But disadvantages of this way - it is additional overhead by JIT runtime for each process.
And, exactly my case, - while apps live in custom security environment, when acquiring security credentials (per process) can be done only via manual login/pwd input, that becomes unusable this way. Or implementing additional IPC's... that look as no sense.

About B) it is sounds good.
I.e. simple common gateway which can transfer any (json-compatible) data?

magreenblatt wrote:CefBrowser and CefFrame exist in both the browser and render processes. Each CefProcessMessage is sent from and delivered to a particular browser. You can for example pass the frame id as an attribute of your message and retrieve the associated CefFrame in the receiving process. Your message can also contain whatever additional state information is necessary, or you can supplement it by using XMLHttpRequest (XHR), WebSockets or similar. For example, an XHR can be sent from render process JS to a resource handler implemented in the browser process.

Oh, there is a very good idea! May be this is better solution for me. Thanks!
Any ideas why (B) can be better, than this way? Performance for example?
But in other side XHR can be requested synchroniously, that some times can be useful. :)
fddima
Master
 
Posts: 788
Joined: Tue Dec 07, 2010 6:10 am

Re: CEF3 Development Status

Postby magreenblatt » Thu Mar 15, 2012 10:08 am

fddima wrote:About B) it is sounds good.
I.e. simple common gateway which can transfer any (json-compatible) data?

Sure.

fddima wrote:Any ideas why (B) can be better, than this way? Performance for example?

It just depends on what you're doing. Using standard Web technologies is better for portability. JS bindings may be better for well-defined JS APIs with registered callbacks, etc. There are probably performance trade-offs as well but that would likely depend on the use case.
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: CEF3 Development Status

Postby efrencd » Sun Apr 08, 2012 5:32 pm

Hello,

Very impressive and useful piece of software.

We are very interested in two features: Offscreen rendering, and transparency rendering.

Do you have any estimated time when these features will be enabled in CEF3?

Thanks a lot and best regards!
efrencd
Newbie
 
Posts: 5
Joined: Sun Apr 08, 2012 5:27 pm

Re: CEF3 Development Status

Postby DarthCoder » Mon Apr 09, 2012 5:54 am

Tried the preview and I have to say that integrating the Chromium renderer layer is the right direction for CEF. Great Work.. :)
There are some nice features like Multi-Process rendering, MS Active Accessibility support and potentially the integration of Selenium Web Driver in Future that interest me greatly.

That said, by when can we expect CEF3 to be getting the feature completeness on par with the current stable CEF? Would it be a long way off or can we expect most the current stable CEF features to be available in CEF3 in next 2~3 months.
DarthCoder
Techie
 
Posts: 23
Joined: Mon Jun 20, 2011 4:57 am

Re: CEF3 Development Status

Postby magreenblatt » Wed Apr 11, 2012 1:24 pm

DarthCoder wrote:when can we expect CEF3 to be getting the feature completeness on par with the current stable CEF?

My current goal is to have feature completeness with CEF1 by the end of Q2. Part of my prioritization is based on issue tracker star ratings, so please star the issues that are most important to you.

efrencd wrote:We are very interested in two features: Offscreen rendering, and transparency rendering. Do you have any estimated time when these features will be enabled in CEF3?

Offscreen rendering is a popular feature judging by the issue tracker. I'll likely work on it next month. If someone wants to tackle it sooner patches are welcome.
magreenblatt
Site Admin
 
Posts: 12382
Joined: Fri May 29, 2009 6:57 pm

Re: CEF3 Development Status

Postby efrencd » Wed May 23, 2012 1:01 pm

I can see from the source code changes that you have been working in the transparency stuff in the past days.

Does this mean we will have the off-screen rendering support added to CEF3 soon?

I check this page every single day just for that.

I hope this proyect gain a bit more of attention from the general developers comunity. It is very useful in many scenarios.

Thanks!
efrencd
Newbie
 
Posts: 5
Joined: Sun Apr 08, 2012 5:27 pm

Re: CEF3 Development Status

Postby fddima » Thu May 24, 2012 2:02 am

May be it is time to make new CEF3 binary preview version?
Current preview looks outdated (API have big changes).
fddima
Master
 
Posts: 788
Joined: Tue Dec 07, 2010 6:10 am

PreviousNext

Return to CEF Discussion

Who is online

Users browsing this forum: No registered users and 20 guests