NSInvalidArgumentException in WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader()
authorjer.noble@apple.com <jer.noble@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Sep 2012 21:52:24 +0000 (21:52 +0000)
committerjer.noble@apple.com <jer.noble@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Sep 2012 21:52:24 +0000 (21:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=96320

Reviewed by Geoffrey Garen.

Client was being cached as the FrameLoaderClient, but requests were sent to the ResourceLoadClient.

* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader): Send the request to the FrameLoadDelegate.
* WebView/WebDelegateImplementationCaching.h:
* WebView/WebDelegateImplementationCaching.mm:
(CallFrameLoadDelegateReturningBoolean): Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@128112 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/mac/ChangeLog
Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm
Source/WebKit/mac/WebView/WebDelegateImplementationCaching.h
Source/WebKit/mac/WebView/WebDelegateImplementationCaching.mm

index 5e73f6b..7388af6 100644 (file)
@@ -1,3 +1,18 @@
+2012-09-10  Jer Noble  <jer.noble@apple.com>
+
+        NSInvalidArgumentException in WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader()
+        https://bugs.webkit.org/show_bug.cgi?id=96320
+
+        Reviewed by Geoffrey Garen.
+
+        Client was being cached as the FrameLoaderClient, but requests were sent to the ResourceLoadClient.
+
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader): Send the request to the FrameLoadDelegate.
+        * WebView/WebDelegateImplementationCaching.h:
+        * WebView/WebDelegateImplementationCaching.mm:
+        (CallFrameLoadDelegateReturningBoolean): Added.
+
 2012-09-07  Jer Noble  <jer.noble@apple.com>
 
         <audio> and <video> should send Do Not Track when appropriate
index 34224c2..a24e397 100644 (file)
@@ -1986,7 +1986,7 @@ bool WebFrameLoaderClient::shouldSendDoNotTrackHTTPHeader() const
     WebFrameLoadDelegateImplementationCache* implementations = WebViewGetFrameLoadDelegateImplementations(webView);
 
     if (implementations->shouldSendDoNotTrackHTTPHeaderFunc)
-        return CallResourceLoadDelegateReturningBoolean(YES, implementations->shouldSendDoNotTrackHTTPHeaderFunc, webView, @selector(webViewShouldSendDoNotTrackHTTPHeader:));
+        return CallFrameLoadDelegateReturningBoolean(YES, implementations->shouldSendDoNotTrackHTTPHeaderFunc, webView, @selector(webViewShouldSendDoNotTrackHTTPHeader:));
     return false;
 }
 
index 072e8fe..b4fabd1 100644 (file)
@@ -130,6 +130,8 @@ id CallFrameLoadDelegate(IMP, WebView *, SEL, id, id, id);
 id CallFrameLoadDelegate(IMP, WebView *, SEL, id, id, id, id);
 id CallFrameLoadDelegate(IMP, WebView *, SEL, id, NSTimeInterval, id, id);
 
+BOOL CallFrameLoadDelegateReturningBoolean(BOOL, IMP, WebView *, SEL);
+
 id CallResourceLoadDelegate(IMP, WebView *, SEL, id, id);
 id CallResourceLoadDelegate(IMP, WebView *, SEL, id, id, id);
 id CallResourceLoadDelegate(IMP, WebView *, SEL, id, id, id, id);
index 071b280..227f5a1 100644 (file)
@@ -475,6 +475,16 @@ id CallFrameLoadDelegate(IMP implementation, WebView *self, SEL selector, id obj
     return CallDelegate(implementation, self, self->_private->frameLoadDelegate, selector, object1, interval, object2, object3);
 }
 
+BOOL CallFrameLoadDelegateReturningBoolean(BOOL result, IMP implementation, WebView *self, SEL selector)
+{
+    @try {
+        return reinterpret_cast<BOOL (*)(id, SEL, WebView *)>(objc_msgSend)(self->_private->frameLoadDelegate, selector, self);
+    } @catch(id exception) {
+        ReportDiscardedDelegateException(selector, exception);
+    }
+    return result;
+}
+
 id CallResourceLoadDelegate(IMP implementation, WebView *self, SEL selector, id object1, id object2)
 {
     return CallDelegate(implementation, self, self->_private->resourceProgressDelegate, selector, object1, object2);