Title: [141381] trunk/Tools
Revision
141381
Author
[email protected]
Date
2013-01-31 00:00:54 -0800 (Thu, 31 Jan 2013)

Log Message

[chromium] move remaining resource load related methods to TestRunner library
https://bugs.webkit.org/show_bug.cgi?id=108334

Reviewed by Adam Barth.

* DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
(WebTestRunner::WebTestDelegate::allowExternalPages):
* DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
(WebKit):
(WebTestProxyBase):
(WebTestRunner::WebTestProxy::canHandleRequest):
(WebTestRunner::WebTestProxy::cannotHandleRequestError):
(WebTestRunner::WebTestProxy::didCreateDataSource):
* DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
(WebTestRunner::WebTestProxyBase::canHandleRequest):
(WebTestRunner):
(WebTestRunner::WebTestProxyBase::cannotHandleRequestError):
(WebTestRunner::WebTestProxyBase::didCreateDataSource):
(WebTestRunner::WebTestProxyBase::willSendRequest):
* DumpRenderTree/chromium/WebViewHost.cpp:
(WebViewHost::canHandleRequest):
(WebViewHost::didCreateDataSource):
(WebViewHost::willSendRequest):
(WebViewHost::allowExternalPages):
* DumpRenderTree/chromium/WebViewHost.h:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (141380 => 141381)


--- trunk/Tools/ChangeLog	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/ChangeLog	2013-01-31 08:00:54 UTC (rev 141381)
@@ -1,3 +1,31 @@
+2013-01-30  Jochen Eisinger  <[email protected]>
+
+        [chromium] move remaining resource load related methods to TestRunner library
+        https://bugs.webkit.org/show_bug.cgi?id=108334
+
+        Reviewed by Adam Barth.
+
+        * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
+        (WebTestRunner::WebTestDelegate::allowExternalPages):
+        * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
+        (WebKit):
+        (WebTestProxyBase):
+        (WebTestRunner::WebTestProxy::canHandleRequest):
+        (WebTestRunner::WebTestProxy::cannotHandleRequestError):
+        (WebTestRunner::WebTestProxy::didCreateDataSource):
+        * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
+        (WebTestRunner::WebTestProxyBase::canHandleRequest):
+        (WebTestRunner):
+        (WebTestRunner::WebTestProxyBase::cannotHandleRequestError):
+        (WebTestRunner::WebTestProxyBase::didCreateDataSource):
+        (WebTestRunner::WebTestProxyBase::willSendRequest):
+        * DumpRenderTree/chromium/WebViewHost.cpp:
+        (WebViewHost::canHandleRequest):
+        (WebViewHost::didCreateDataSource):
+        (WebViewHost::willSendRequest):
+        (WebViewHost::allowExternalPages):
+        * DumpRenderTree/chromium/WebViewHost.h:
+
 2013-01-30  Hajime Morrita  <[email protected]>
 
         Unreviewed test failure fix for r141341.

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h (141380 => 141381)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h	2013-01-31 08:00:54 UTC (rev 141381)
@@ -120,6 +120,7 @@
     virtual void goToOffset(int) { }
     virtual void reload() { }
     virtual void loadURLForFrame(const WebKit::WebURL&, const std::string&) { }
+    virtual bool allowExternalPages() { return false; }
 };
 
 }

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h (141380 => 141381)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h	2013-01-31 08:00:54 UTC (rev 141381)
@@ -32,6 +32,7 @@
 #define WebTestProxy_h
 
 #include "Platform/chromium/public/WebRect.h"
+#include "Platform/chromium/public/WebURLError.h"
 #include "WebKit/chromium/public/WebAccessibilityNotification.h"
 #include "WebKit/chromium/public/WebDragOperation.h"
 #include "WebKit/chromium/public/WebEditingAction.h"
@@ -45,6 +46,7 @@
 namespace WebKit {
 class WebAccessibilityObject;
 class WebCachedURLRequest;
+class WebDataSource;
 class WebDragData;
 class WebFrame;
 class WebImage;
@@ -63,7 +65,6 @@
 struct WebConsoleMessage;
 struct WebPoint;
 struct WebSize;
-struct WebURLError;
 struct WebWindowFeatures;
 }
 
@@ -137,6 +138,9 @@
     void didDetectXSS(WebKit::WebFrame*, const WebKit::WebURL& insecureURL, bool didBlockEntirePage);
     void assignIdentifierToRequest(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLRequest&);
     void willRequestResource(WebKit::WebFrame*, const WebKit::WebCachedURLRequest&);
+    bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
+    WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
+    void didCreateDataSource(WebKit::WebFrame*, WebKit::WebDataSource*);
     void willSendRequest(WebKit::WebFrame*, unsigned identifier, WebKit::WebURLRequest&, const WebKit::WebURLResponse& redirectResponse);
     void didReceiveResponse(WebKit::WebFrame*, unsigned identifier, const WebKit::WebURLResponse&);
     void didFinishResourceLoad(WebKit::WebFrame*, unsigned identifier);
@@ -397,6 +401,21 @@
         WebTestProxyBase::willRequestResource(frame, request);
         Base::willRequestResource(frame, request);
     }
+    virtual bool canHandleRequest(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
+    {
+        if (!WebTestProxyBase::canHandleRequest(frame, request))
+            return false;
+        return Base::canHandleRequest(frame, request);
+    }
+    virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request)
+    {
+        return WebTestProxyBase::cannotHandleRequestError(frame, request);
+    }
+    virtual void didCreateDataSource(WebKit::WebFrame* frame, WebKit::WebDataSource* ds)
+    {
+        WebTestProxyBase::didCreateDataSource(frame, ds);
+        Base::didCreateDataSource(frame, ds);
+    }
     virtual void willSendRequest(WebKit::WebFrame* frame, unsigned identifier, WebKit::WebURLRequest& request, const WebKit::WebURLResponse& redirectResponse)
     {
         WebTestProxyBase::willSendRequest(frame, identifier, request, redirectResponse);

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp (141380 => 141381)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp	2013-01-31 08:00:54 UTC (rev 141381)
@@ -37,6 +37,7 @@
 #include "WebAccessibilityObject.h"
 #include "WebCachedURLRequest.h"
 #include "WebConsoleMessage.h"
+#include "WebDataSource.h"
 #include "WebElement.h"
 #include "WebEventSender.h"
 #include "WebFrame.h"
@@ -188,6 +189,16 @@
     request.setURL(WebURL());
 }
 
+bool isLocalhost(const string& host)
+{
+    return host == "127.0.0.1" || host == "localhost";
+}
+
+bool hostIsUsedBySomeTestsToGenerateError(const string& host)
+{
+    return host == "255.255.255.255";
+}
+
 // Used to write a platform neutral file:/// URL by only taking the filename
 // (e.g., converts "file:///tmp/foo.txt" to just "foo.txt").
 string urlSuitableForTestResult(const string& url)
@@ -782,6 +793,31 @@
     }
 }
 
+bool WebTestProxyBase::canHandleRequest(WebFrame*, const WebURLRequest& request)
+{
+    GURL url = ""
+    // Just reject the scheme used in
+    // LayoutTests/http/tests/misc/redirect-to-external-url.html
+    return !url.SchemeIs("spaceballs");
+}
+
+WebURLError WebTestProxyBase::cannotHandleRequestError(WebFrame*, const WebURLRequest& request)
+{
+    WebURLError error;
+    // A WebKit layout test expects the following values.
+    // unableToImplementPolicyWithError() below prints them.
+    error.domain = WebString::fromUTF8("WebKitErrorDomain");
+    error.reason = 101;
+    error.unreachableURL = request.url();
+    return error;
+}
+
+void WebTestProxyBase::didCreateDataSource(WebFrame*, WebDataSource* ds)
+{
+    if (m_testInterfaces->testRunner() && !m_testInterfaces->testRunner()->deferMainResourceDataLoad())
+        ds->setDeferMainResourceDataLoad(false);
+}
+
 void WebTestProxyBase::willSendRequest(WebFrame*, unsigned identifier, WebKit::WebURLRequest& request, const WebKit::WebURLResponse& redirectResponse)
 {
     // Need to use GURL for host() and SchemeIs()
@@ -822,6 +858,20 @@
         for (set<string>::const_iterator header = clearHeaders->begin(); header != clearHeaders->end(); ++header)
             request.clearHTTPHeaderField(WebString::fromUTF8(*header));
     }
+
+    string host = url.host();
+    if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
+        if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
+            && ((!mainDocumentURL.SchemeIs("http") && !mainDocumentURL.SchemeIs("https")) || isLocalhost(mainDocumentURL.host()))
+            && !m_delegate->allowExternalPages()) {
+            m_delegate->printMessage(string("Blocked access to external URL ") + requestURL + "\n");
+            blockRequest(request);
+            return;
+        }
+    }
+
+    // Set the new substituted URL.
+    request.setURL(m_delegate->rewriteLayoutTestsURL(request.url().spec()));
 }
 
 void WebTestProxyBase::didReceiveResponse(WebFrame*, unsigned identifier, const WebKit::WebURLResponse& response)

Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp (141380 => 141381)


--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp	2013-01-31 08:00:54 UTC (rev 141381)
@@ -582,23 +582,9 @@
 
 bool WebViewHost::canHandleRequest(WebFrame*, const WebURLRequest& request)
 {
-    GURL url = ""
-    // Just reject the scheme used in
-    // LayoutTests/http/tests/misc/redirect-to-external-url.html
-    return !url.SchemeIs("spaceballs");
+    return true;
 }
 
-WebURLError WebViewHost::cannotHandleRequestError(WebFrame*, const WebURLRequest& request)
-{
-    WebURLError error;
-    // A WebKit layout test expects the following values.
-    // unableToImplementPolicyWithError() below prints them.
-    error.domain = WebString::fromUTF8("WebKitErrorDomain");
-    error.reason = 101;
-    error.unreachableURL = request.url();
-    return error;
-}
-
 WebURLError WebViewHost::cancelledError(WebFrame*, const WebURLRequest& request)
 {
     return webkit_support::CreateCancelledError(request);
@@ -611,8 +597,6 @@
 void WebViewHost::didCreateDataSource(WebFrame*, WebDataSource* ds)
 {
     ds->setExtraData(m_pendingExtraData.leakPtr());
-    if (!testRunner()->deferMainResourceDataLoad())
-        ds->setDeferMainResourceDataLoad(false);
 }
 
 void WebViewHost::didCommitProvisionalLoad(WebFrame* frame, bool isNewNavigation)
@@ -637,47 +621,12 @@
     updateForCommittedLoad(frame, isNewNavigation);
 }
 
-static void blockRequest(WebURLRequest& request)
+void WebViewHost::willSendRequest(WebFrame* frame, unsigned, WebURLRequest& request, const WebURLResponse&)
 {
-    request.setURL(WebURL());
-}
-
-static bool isLocalhost(const string& host)
-{
-    return host == "127.0.0.1" || host == "localhost";
-}
-
-static bool hostIsUsedBySomeTestsToGenerateError(const string& host)
-{
-    return host == "255.255.255.255";
-}
-
-void WebViewHost::willSendRequest(WebFrame* frame, unsigned identifier, WebURLRequest& request, const WebURLResponse& redirectResponse)
-{
     if (request.url().isEmpty())
         return;
 
-    // Need to use GURL for host() and SchemeIs()
-    GURL url = ""
-    string requestURL = url.possibly_invalid_spec();
-
-    GURL mainDocumentURL = request.firstPartyForCookies();
-
     request.setExtraData(webkit_support::CreateWebURLRequestExtraData(frame->document().referrerPolicy()));
-
-    string host = url.host();
-    if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
-        if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
-            && ((!mainDocumentURL.SchemeIs("http") && !mainDocumentURL.SchemeIs("https")) || isLocalhost(mainDocumentURL.host()))
-            && !m_shell->allowExternalPages()) {
-            printf("Blocked access to external URL %s\n", requestURL.c_str());
-            blockRequest(request);
-            return;
-        }
-    }
-
-    // Set the new substituted URL.
-    request.setURL(webkit_support::RewriteLayoutTestsURL(request.url().spec()));
 }
 
 void WebViewHost::openFileSystem(WebFrame* frame, WebFileSystem::Type type, long long size, bool create, WebFileSystemCallbacks* callbacks)
@@ -1023,6 +972,11 @@
     navigationController()->loadEntry(TestNavigationEntry::create(-1, url, WebString(), WebString::fromUTF8(frameName)).get());
 }
 
+bool WebViewHost::allowExternalPages()
+{
+    return m_shell->allowExternalPages();
+}
+
 // Public functions -----------------------------------------------------------
 
 WebViewHost::WebViewHost(TestShell* shell)

Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.h (141380 => 141381)


--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.h	2013-01-31 07:24:43 UTC (rev 141380)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.h	2013-01-31 08:00:54 UTC (rev 141381)
@@ -176,7 +176,8 @@
     virtual int windowCount() OVERRIDE;
     virtual void goToOffset(int) OVERRIDE;
     virtual void reload() OVERRIDE;
-    void loadURLForFrame(const WebKit::WebURL&, const std::string& frameName) OVERRIDE;
+    virtual void loadURLForFrame(const WebKit::WebURL&, const std::string& frameName) OVERRIDE;
+    virtual bool allowExternalPages() OVERRIDE;
 
     // NavigationHost
     virtual bool navigate(const TestNavigationEntry&, bool reload);
@@ -263,7 +264,6 @@
         WebKit::WebNavigationType, const WebKit::WebNode&,
         WebKit::WebNavigationPolicy, bool isRedirect);
     virtual bool canHandleRequest(WebKit::WebFrame*, const WebKit::WebURLRequest&);
-    virtual WebKit::WebURLError cannotHandleRequestError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
     virtual WebKit::WebURLError cancelledError(WebKit::WebFrame*, const WebKit::WebURLRequest&);
     virtual void unableToImplementPolicyWithError(WebKit::WebFrame*, const WebKit::WebURLError&);
     virtual void didCreateDataSource(WebKit::WebFrame*, WebKit::WebDataSource*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to