Reviewed by John Sullivan.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Apr 2006 19:52:28 +0000 (19:52 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 26 Apr 2006 19:52:28 +0000 (19:52 +0000)
        <rdar://problem/4472035> SPI that checks for URL policy fails in plugin documents

        * Plugins/WebPluginController.h:
        * Plugins/WebPluginController.m:
        (-[WebPluginController URLPolicyCheckReferrer]):
        New method.  Get the referrer from the frame's data source's NSURLResponse.  Note that for
        document types loaded by WebCore, this URL is the same as -[WebCorePageBridge referrer],
        since the response URL is what we pass to -[WebCorePageBridge openURL:].

        * Plugins/WebPluginContainerCheck.m:
        (-[WebPluginContainerCheck _isForbiddenFileLoad]):
        Use the WebPluginController's -URLPolicyCheckReferrer instead of assuming that the bridge's
        -referrer is valid.  -[WebCorePageBridge referrer] is only set during the normal WebCore page
        load process, which has nothing to do with loading standalone plugin documents.

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

WebKit/ChangeLog
WebKit/Plugins/WebPluginContainerCheck.m
WebKit/Plugins/WebPluginController.h
WebKit/Plugins/WebPluginController.m

index fdc099fa2aca27efc08069de9bc85c4aa15ffcdf..3ed3a30eb1c07f638c8ac224dfb83040bd40ff33 100644 (file)
@@ -1,3 +1,22 @@
+2006-04-25  Tim Omernick  <timo@apple.com>
+
+        Reviewed by John Sullivan.
+
+        <rdar://problem/4472035> SPI that checks for URL policy fails in plugin documents
+
+        * Plugins/WebPluginController.h:
+        * Plugins/WebPluginController.m:
+        (-[WebPluginController URLPolicyCheckReferrer]):
+        New method.  Get the referrer from the frame's data source's NSURLResponse.  Note that for
+        document types loaded by WebCore, this URL is the same as -[WebCorePageBridge referrer],
+        since the response URL is what we pass to -[WebCorePageBridge openURL:].
+
+        * Plugins/WebPluginContainerCheck.m:
+        (-[WebPluginContainerCheck _isForbiddenFileLoad]):
+        Use the WebPluginController's -URLPolicyCheckReferrer instead of assuming that the bridge's
+        -referrer is valid.  -[WebCorePageBridge referrer] is only set during the normal WebCore page
+        load process, which has nothing to do with loading standalone plugin documents.
+
 2006-04-25  Tim Omernick  <timo@apple.com>
 
         Reviewed by Eric.
index f76e86c6ae0bb4b61efdd83db5df7be6e50cee87..bd9aabd83ab0877f78a09b22f9529363ca2075f5 100644 (file)
@@ -92,7 +92,8 @@
 {
    BOOL ignore;
    WebFrameBridge *bridge = [_controller bridge];
-   if (![bridge canLoadURL:[_request URL] fromReferrer:[bridge referrer] hideReferrer:&ignore]) {
+   ASSERT(bridge);
+   if (![bridge canLoadURL:[_request URL] fromReferrer:[_controller URLPolicyCheckReferrer] hideReferrer:&ignore]) {
        [self _continueWithPolicy:WebPolicyIgnore];
        return YES;
    }
index 605d483dd41f27395763b7326264072d9f28ee24..0661946b2e7d83ee88050f6288e3ce598a7f52c1 100644 (file)
@@ -60,4 +60,6 @@
 - (WebFrameBridge *)bridge;
 - (WebView *)webView;
 
+- (NSString *)URLPolicyCheckReferrer;
+
 @end
index 341d0c5b7428980bb4c8e3c100e0476260394478..75ad9280c77b821dd021a0cacf635c0ad1fa68bc 100644 (file)
@@ -348,4 +348,11 @@ static NSMutableSet *pluginViews = nil;
     return [[self webFrame] webView];
 }
 
+- (NSString *)URLPolicyCheckReferrer
+{
+    NSURL *responseURL = [[[[self webFrame] dataSource] response] URL];
+    ASSERT(responseURL);
+    return [responseURL _web_originalDataAsString];
+}
+
 @end