Skip to content
  • commit-queue@webkit.org's avatar
    [BlackBerry] Possible JS re-entrancy caused by UI events. · c1bd9a12
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=84862
    
    Patch by Yong Li <yoli@rim.com> on 2012-04-25
    Reviewed by Antonio Gomes.
    
    1. block UI events when running in nested event loop
    2. defer some tasks we still want to perform when it is safe to do,
       with cached data.
    3. deferred task can be cancelled by clearing the flag. duplicate tasks
       is not a problem because they share same flag and data.
    4. move deferred manual script from FrameLoaderClientBlackBerry to WebPagePrivate
       and make it a deferred task
    
    * Api/WebPage.cpp:
    (WebKit):
    (BlackBerry::WebKit::WebPagePrivate::WebPagePrivate):
    (BlackBerry::WebKit::WebPagePrivate::load):
    (BlackBerry::WebKit::WebPagePrivate::stopCurrentLoad):
    (BlackBerry::WebKit::WebPagePrivate::willDeferLoading):
    (BlackBerry::WebKit::WebPagePrivate::didResumeLoading):
    (BlackBerry::WebKit::WebPagePrivate::deferredTasksTimerFired):
    (BlackBerry::WebKit::WebPage::assignFocus):
    (BlackBerry::WebKit::WebPagePrivate::setPageVisibilityState):
    (BlackBerry::WebKit::WebPage::setInputSelection):
    (BlackBerry::WebKit::WebPage::popupListClosed):
    (BlackBerry::WebKit::WebPage::setDateTimeInput):
    (BlackBerry::WebKit::WebPage::setColorInput):
    (BlackBerry::WebKit::WebPage::mouseEvent):
    (BlackBerry::WebKit::WebPage::touchEvent):
    (BlackBerry::WebKit::WebPage::touchPointAsMouseEvent):
    (BlackBerry::WebKit::WebPage::touchEventCancel):
    (BlackBerry::WebKit::WebPage::touchEventCancelAndClearFocusedNode):
    (BlackBerry::WebKit::WebPage::keyEvent):
    (BlackBerry::WebKit::WebPage::deleteTextRelativeToCursor):
    (BlackBerry::WebKit::WebPage::setComposingText):
    (BlackBerry::WebKit::WebPage::commitText):
    (BlackBerry::WebKit::WebPage::selectionCancelled):
    (BlackBerry::WebKit::WebPage::cutSelectedText):
    (BlackBerry::WebKit::WebPage::insertText):
    (BlackBerry::WebKit::WebPage::clearCurrentInputField):
    (BlackBerry::WebKit::WebPage::cut):
    (BlackBerry::WebKit::WebPage::paste):
    (BlackBerry::WebKit::WebPage::setSelection):
    (BlackBerry::WebKit::WebPage::setCaretPosition):
    (BlackBerry::WebKit::WebPage::selectAtPoint):
    (BlackBerry::WebKit::WebPage::setFocused):
    * Api/WebPage.h:
    * Api/WebPage_p.h:
    (WebCore):
    (WebPagePrivate):
    (DeferredTaskBase):
    (BlackBerry::WebKit::WebPagePrivate::DeferredTaskBase::perform):
    (BlackBerry::WebKit::WebPagePrivate::DeferredTaskBase::DeferredTaskBase):
    * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
    (WebCore::FrameLoaderClientBlackBerry::FrameLoaderClientBlackBerry):
    (WebCore::FrameLoaderClientBlackBerry::~FrameLoaderClientBlackBerry):
    (WebCore::FrameLoaderClientBlackBerry::willDeferLoading):
    (WebCore::FrameLoaderClientBlackBerry::didResumeLoading):
    * WebCoreSupport/FrameLoaderClientBlackBerry.h:
    (FrameLoaderClientBlackBerry):
    * WebKitSupport/InputHandler.cpp:
    (BlackBerry::WebKit::InputHandler::setPopupListIndexes):
    * WebKitSupport/InputHandler.h:
    (InputHandler):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@115245 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    c1bd9a12