Changeset 82970 in webkit


Ignore:
Timestamp:
Apr 5, 2011 1:02:42 PM (13 years ago)
Author:
andersca@apple.com
Message:

2011-04-05 Anders Carlsson <andersca@apple.com>

Reviewed by Oliver Hunt.

Invalidate callbacks if the WebPageProxy is no longer valid
https://bugs.webkit.org/show_bug.cgi?id=57873
<rdar://problem/9059717>

Audit all function calls that take callbacks and make sure to invalidate the callbacks
if the web page is no longer valid.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::runJavaScriptInMainFrame): (WebKit::WebPageProxy::getRenderTreeExternalRepresentation): (WebKit::WebPageProxy::getSourceForFrame): (WebKit::WebPageProxy::getContentsAsString): (WebKit::WebPageProxy::getSelectionOrContentsAsString): (WebKit::WebPageProxy::getMainResourceDataOfFrame): (WebKit::WebPageProxy::getResourceDataFromFrame): (WebKit::WebPageProxy::getWebArchiveOfFrame): (WebKit::WebPageProxy::forceRepaint): (WebKit::WebPageProxy::computePagesForPrinting): (WebKit::WebPageProxy::drawRectToPDF): (WebKit::WebPageProxy::drawPagesToPDF):
Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r82966 r82970  
     12011-04-05  Anders Carlsson  <andersca@apple.com>
     2
     3        Reviewed by Oliver Hunt.
     4
     5        Invalidate callbacks if the WebPageProxy is no longer valid
     6        https://bugs.webkit.org/show_bug.cgi?id=57873
     7        <rdar://problem/9059717>
     8
     9        Audit all function calls that take callbacks and make sure to invalidate the callbacks
     10        if the web page is no longer valid.
     11
     12        * UIProcess/WebPageProxy.cpp:
     13        (WebKit::WebPageProxy::runJavaScriptInMainFrame):
     14        (WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
     15        (WebKit::WebPageProxy::getSourceForFrame):
     16        (WebKit::WebPageProxy::getContentsAsString):
     17        (WebKit::WebPageProxy::getSelectionOrContentsAsString):
     18        (WebKit::WebPageProxy::getMainResourceDataOfFrame):
     19        (WebKit::WebPageProxy::getResourceDataFromFrame):
     20        (WebKit::WebPageProxy::getWebArchiveOfFrame):
     21        (WebKit::WebPageProxy::forceRepaint):
     22        (WebKit::WebPageProxy::computePagesForPrinting):
     23        (WebKit::WebPageProxy::drawRectToPDF):
     24        (WebKit::WebPageProxy::drawPagesToPDF):
     25
    1262011-04-05  Adam Roben  <aroben@apple.com>
    227
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r82894 r82970  
    11091109{
    11101110    RefPtr<ScriptValueCallback> callback = prpCallback;
     1111    if (!isValid()) {
     1112        callback->invalidate();
     1113        return;
     1114    }
     1115
    11111116    uint64_t callbackID = callback->callbackID();
    11121117    m_scriptValueCallbacks.set(callbackID, callback.get());
     
    11171122{
    11181123    RefPtr<StringCallback> callback = prpCallback;
     1124    if (!isValid()) {
     1125        callback->invalidate();
     1126        return;
     1127    }
     1128   
    11191129    uint64_t callbackID = callback->callbackID();
    11201130    m_stringCallbacks.set(callbackID, callback.get());
     
    11251135{
    11261136    RefPtr<StringCallback> callback = prpCallback;
     1137    if (!isValid()) {
     1138        callback->invalidate();
     1139        return;
     1140    }
     1141   
    11271142    uint64_t callbackID = callback->callbackID();
    11281143    m_loadDependentStringCallbackIDs.add(callbackID);
     
    11341149{
    11351150    RefPtr<StringCallback> callback = prpCallback;
     1151    if (!isValid()) {
     1152        callback->invalidate();
     1153        return;
     1154    }
     1155   
    11361156    uint64_t callbackID = callback->callbackID();
    11371157    m_loadDependentStringCallbackIDs.add(callbackID);
     
    11431163{
    11441164    RefPtr<StringCallback> callback = prpCallback;
     1165    if (!isValid()) {
     1166        callback->invalidate();
     1167        return;
     1168    }
     1169   
    11451170    uint64_t callbackID = callback->callbackID();
    11461171    m_stringCallbacks.set(callbackID, callback.get());
     
    11511176{
    11521177    RefPtr<DataCallback> callback = prpCallback;
     1178    if (!isValid()) {
     1179        callback->invalidate();
     1180        return;
     1181    }
     1182   
    11531183    uint64_t callbackID = callback->callbackID();
    11541184    m_dataCallbacks.set(callbackID, callback.get());
     
    11591189{
    11601190    RefPtr<DataCallback> callback = prpCallback;
     1191    if (!isValid()) {
     1192        callback->invalidate();
     1193        return;
     1194    }
     1195   
    11611196    uint64_t callbackID = callback->callbackID();
    11621197    m_dataCallbacks.set(callbackID, callback.get());
     
    11671202{
    11681203    RefPtr<DataCallback> callback = prpCallback;
     1204    if (!isValid()) {
     1205        callback->invalidate();
     1206        return;
     1207    }
     1208   
    11691209    uint64_t callbackID = callback->callbackID();
    11701210    m_dataCallbacks.set(callbackID, callback.get());
     
    11751215{
    11761216    RefPtr<VoidCallback> callback = prpCallback;
    1177 
    11781217    if (!isValid()) {
    11791218        callback->invalidate();
     
    27772816}
    27782817
    2779 void WebPageProxy::computePagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, PassRefPtr<ComputedPagesCallback> callback)
    2780 {
     2818void WebPageProxy::computePagesForPrinting(WebFrameProxy* frame, const PrintInfo& printInfo, PassRefPtr<ComputedPagesCallback> prpCallback)
     2819{
     2820    RefPtr<ComputedPagesCallback> callback = prpCallback;
     2821    if (!isValid()) {
     2822        callback->invalidate();
     2823        return;
     2824    }
     2825
    27812826    uint64_t callbackID = callback->callbackID();
    27822827    m_computedPagesCallbacks.set(callbackID, callback.get());
     
    27862831
    27872832#if PLATFORM(MAC) || PLATFORM(WIN)
    2788 void WebPageProxy::drawRectToPDF(WebFrameProxy* frame, const IntRect& rect, PassRefPtr<DataCallback> callback)
    2789 {
     2833void WebPageProxy::drawRectToPDF(WebFrameProxy* frame, const IntRect& rect, PassRefPtr<DataCallback> prpCallback)
     2834{
     2835    RefPtr<DataCallback> callback = prpCallback;
     2836    if (!isValid()) {
     2837        callback->invalidate();
     2838        return;
     2839    }
     2840   
    27902841    uint64_t callbackID = callback->callbackID();
    27912842    m_dataCallbacks.set(callbackID, callback.get());
     
    27932844}
    27942845
    2795 void WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, uint32_t first, uint32_t count, PassRefPtr<DataCallback> callback)
    2796 {
     2846void WebPageProxy::drawPagesToPDF(WebFrameProxy* frame, uint32_t first, uint32_t count, PassRefPtr<DataCallback> prpCallback)
     2847{
     2848    RefPtr<DataCallback> callback = prpCallback;
     2849    if (!isValid()) {
     2850        callback->invalidate();
     2851        return;
     2852    }
     2853   
    27972854    uint64_t callbackID = callback->callbackID();
    27982855    m_dataCallbacks.set(callbackID, callback.get());
Note: See TracChangeset for help on using the changeset viewer.