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*);