CoordinatedGraphics: Set scene to active in WebView::paintToCurrentGLContext()
Created attachment 206623 [details] Patch
Previously, the scene was set to active in WebView::initialize(), but then if the Web Process crashed and we needed to recreate the drawing area, via WebPageProxy::initializeWebPage(), it would create a new scene which would never be set to active, and from that point on, we would only get a blank view. A simple way to verify this behavior on the EFL port would be to kill the Web Process: $ killall WebProcess After this, you will only get a blank view.
Comment on attachment 206623 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=206623&action=review > Source/WebKit2/ChangeLog:12 > + Previously, the scene was set to active in WebView::initialize(), but then > + if the Web Process crashed and we needed to recreate the drawing area, via > + WebPageProxy::initializeWebPage(), it would create a new scene which would > + never be set to active, and from that point on, we would only get a blank > + view. don't we get some kind of event, like didInitialize? Setting the scene to active during paint doesn't seem like the right solution. > Source/WebKit2/ChangeLog:19 > + A simple way to verify this behavior on the EFL port would be to kill the > + Web Process: > + > + $ killall WebProcess > + > + After this, you will only get a blank view. This requires an API test.
Thanks for the feedback. (In reply to comment #3) > (From update of attachment 206623 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=206623&action=review > > > Source/WebKit2/ChangeLog:12 > > + Previously, the scene was set to active in WebView::initialize(), but then > > + if the Web Process crashed and we needed to recreate the drawing area, via > > + WebPageProxy::initializeWebPage(), it would create a new scene which would > > + never be set to active, and from that point on, we would only get a blank > > + view. > > don't we get some kind of event, like didInitialize? Apparently not, but I will investigate it further. > Setting the scene to active during paint doesn't seem like the right solution. > I got the idea from QRawWebView::paint() (UIProcess/API/qt/raw/qrawwebview.cpp:~366), but I agree it feels a bit like a workaround, other than a proper solution. > > Source/WebKit2/ChangeLog:19 > > + A simple way to verify this behavior on the EFL port would be to kill the > > + Web Process: > > + > > + $ killall WebProcess > > + > > + After this, you will only get a blank view. > > This requires an API test. Okay, I will take a look at this as well.
@noam: Do you think it would be better to set the view to active in WebView::didRelaunchProcess() [UIProcess/CoordinatedGraphics/WebView.cpp], or should it be done by the clients, such as ViewClientEfl::webProcessDidRelaunch [UIProcess/efl/ViewClientEfl.cpp]? The latter seems to be more flexible to ports, since they would be able to choose the behavior they want without interfering with other ports.
Created attachment 208004 [details] Adding WKViewSetIsAtive to ViewClientEfl
(In reply to comment #6) > Created an attachment (id=208004) [details] > Adding WKViewSetIsAtive to ViewClientEfl If this patch is okay, I will update the title accordingly.
Comment on attachment 208004 [details] Adding WKViewSetIsAtive to ViewClientEfl Attachment 208004 [details] did not pass win-ews (win): Output: http://webkit-queues.appspot.com/results/1526444
Comment on attachment 208004 [details] Adding WKViewSetIsAtive to ViewClientEfl Clearing flags on attachment: 208004 Committed r157178: <http://trac.webkit.org/changeset/157178>
All reviewed patches have been landed. Closing bug.