Changeset 170757 in webkit


Ignore:
Timestamp:
Jul 3, 2014 10:13:02 AM (10 years ago)
Author:
Antti Koivisto
Message:

Ensure frame creation messages get through to UI process
https://bugs.webkit.org/show_bug.cgi?id=134591
<rdar://problem/16918218>

Reviewed by Anders Carlsson.

If we are middle of handling a synchronous message from UI process a frame creation message back gets delayed.
The subsequent synchronous DecidePolicyForNavigationAction message expects that the frame creation
message has arrived first and fails.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::createWithCoreMainFrame):
(WebKit::WebFrame::createSubframe):

Send messages with DispatchMessageEvenWhenWaitingForSyncReply so they always go through in order.

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r170756 r170757  
     12014-07-03  Antti Koivisto  <antti@apple.com>
     2
     3        Ensure frame creation messages get through to UI process
     4        https://bugs.webkit.org/show_bug.cgi?id=134591
     5        <rdar://problem/16918218>
     6
     7        Reviewed by Anders Carlsson.
     8
     9        If we are middle of handling a synchronous message from UI process a frame creation message back gets delayed.
     10        The subsequent synchronous DecidePolicyForNavigationAction message expects that the frame creation
     11        message has arrived first and fails.
     12
     13        * WebProcess/WebPage/WebFrame.cpp:
     14        (WebKit::WebFrame::createWithCoreMainFrame):
     15        (WebKit::WebFrame::createSubframe):
     16       
     17            Send messages with DispatchMessageEvenWhenWaitingForSyncReply so they always go through in order.
     18
    1192014-07-03  Anders Carlsson  <andersca@apple.com>
    220
  • trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp

    r170674 r170757  
    110110{
    111111    RefPtr<WebFrame> frame = create(std::unique_ptr<WebFrameLoaderClient>(static_cast<WebFrameLoaderClient*>(&coreFrame->loader().client())));
    112     page->send(Messages::WebPageProxy::DidCreateMainFrame(frame->frameID()));
     112    page->send(Messages::WebPageProxy::DidCreateMainFrame(frame->frameID()), page->pageID(), IPC::DispatchMessageEvenWhenWaitingForSyncReply);
    113113
    114114    frame->m_coreFrame = coreFrame;
     
    121121{
    122122    RefPtr<WebFrame> frame = create(std::make_unique<WebFrameLoaderClient>());
    123     page->send(Messages::WebPageProxy::DidCreateSubframe(frame->frameID()));
     123    page->send(Messages::WebPageProxy::DidCreateSubframe(frame->frameID()), page->pageID(), IPC::DispatchMessageEvenWhenWaitingForSyncReply);
    124124
    125125    RefPtr<Frame> coreFrame = Frame::create(page->corePage(), ownerElement, frame->m_frameLoaderClient.get());
Note: See TracChangeset for help on using the changeset viewer.