Diff
Modified: trunk/Tools/ChangeLog (140317 => 140318)
--- trunk/Tools/ChangeLog 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/ChangeLog 2013-01-21 11:16:22 UTC (rev 140318)
@@ -1,3 +1,40 @@
+2013-01-21 Jochen Eisinger <joc...@chromium.org>
+
+ [chromium] move methods interacting with willSendRequest to TestRunner
+ https://bugs.webkit.org/show_bug.cgi?id=107270
+
+ Reviewed by Kent Tamura.
+
+ * DumpRenderTree/chromium/DRTTestRunner.cpp:
+ (DRTTestRunner::DRTTestRunner):
+ (DRTTestRunner::waitForPolicyDelegate):
+ * DumpRenderTree/chromium/DRTTestRunner.h:
+ (DRTTestRunner):
+ * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
+ (WebTestRunner::WebTestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
+ (WebTestRunner::WebTestRunner::httpHeadersToClear):
+ (WebTestRunner::WebTestRunner::shouldBlockRedirects):
+ (WebTestRunner::WebTestRunner::willSendRequestShouldReturnNull):
+ * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
+ (WebTestRunner::TestRunner::TestRunner):
+ (WebTestRunner::TestRunner::reset):
+ (WebTestRunner::TestRunner::httpHeadersToClear):
+ (WebTestRunner):
+ (WebTestRunner::TestRunner::shouldBlockRedirects):
+ (WebTestRunner::TestRunner::willSendRequestShouldReturnNull):
+ (WebTestRunner::TestRunner::setWillSendRequestClearHeader):
+ (WebTestRunner::TestRunner::setWillSendRequestReturnsNullOnRedirect):
+ (WebTestRunner::TestRunner::setWillSendRequestReturnsNull):
+ * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
+ (TestRunner):
+ * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
+ (WebTestRunner::WebTestProxyBase::willSendRequest):
+ * DumpRenderTree/chromium/WebViewHost.cpp:
+ (WebViewHost::willSendRequest):
+ (WebViewHost::reset):
+ * DumpRenderTree/chromium/WebViewHost.h:
+ (WebViewHost):
+
2013-01-21 Zan Dobersek <zdober...@igalia.com>
[GTK] Stop building WebKit2 on GTK EWSs
Modified: trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.cpp 2013-01-21 11:16:22 UTC (rev 140318)
@@ -98,9 +98,6 @@
bindMethod("queueReload", &DRTTestRunner::queueReload);
bindMethod("setCloseRemainingWindowsWhenComplete", &DRTTestRunner::setCloseRemainingWindowsWhenComplete);
bindMethod("setCustomPolicyDelegate", &DRTTestRunner::setCustomPolicyDelegate);
- bindMethod("setWillSendRequestClearHeader", &DRTTestRunner::setWillSendRequestClearHeader);
- bindMethod("setWillSendRequestReturnsNull", &DRTTestRunner::setWillSendRequestReturnsNull);
- bindMethod("setWillSendRequestReturnsNullOnRedirect", &DRTTestRunner::setWillSendRequestReturnsNullOnRedirect);
bindMethod("waitForPolicyDelegate", &DRTTestRunner::waitForPolicyDelegate);
bindMethod("waitUntilDone", &DRTTestRunner::waitUntilDone);
bindMethod("windowCount", &DRTTestRunner::windowCount);
@@ -405,27 +402,3 @@
m_waitUntilDone = true;
result->setNull();
}
-
-void DRTTestRunner::setWillSendRequestClearHeader(const CppArgumentList& arguments, CppVariant* result)
-{
- if (arguments.size() > 0 && arguments[0].isString()) {
- string header = arguments[0].toString();
- if (!header.empty())
- m_shell->webViewHost()->addClearHeader(String::fromUTF8(header.c_str()));
- }
- result->setNull();
-}
-
-void DRTTestRunner::setWillSendRequestReturnsNullOnRedirect(const CppArgumentList& arguments, CppVariant* result)
-{
- if (arguments.size() > 0 && arguments[0].isBool())
- m_shell->webViewHost()->setBlockRedirects(arguments[0].value.boolValue);
- result->setNull();
-}
-
-void DRTTestRunner::setWillSendRequestReturnsNull(const CppArgumentList& arguments, CppVariant* result)
-{
- if (arguments.size() > 0 && arguments[0].isBool())
- m_shell->webViewHost()->setRequestReturnNull(arguments[0].value.boolValue);
- result->setNull();
-}
Modified: trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.h (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.h 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/DRTTestRunner.h 2013-01-21 11:16:22 UTC (rev 140318)
@@ -98,15 +98,6 @@
// Delays completion of the test until the policy delegate runs.
void waitForPolicyDelegate(const CppArgumentList&, CppVariant*);
- // Causes WillSendRequest to clear certain headers.
- void setWillSendRequestClearHeader(const CppArgumentList&, CppVariant*);
-
- // Causes WillSendRequest to block redirects.
- void setWillSendRequestReturnsNullOnRedirect(const CppArgumentList&, CppVariant*);
-
- // Causes WillSendRequest to return an empty request.
- void setWillSendRequestReturnsNull(const CppArgumentList&, CppVariant*);
-
public:
// The following methods are not exposed to _javascript_.
void setWorkQueueFrozen(bool frozen) { m_workQueue.setFrozen(frozen); }
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h 2013-01-21 11:16:22 UTC (rev 140318)
@@ -32,6 +32,8 @@
#define WebTestRunner_h
#include "WebKit/chromium/public/WebTextDirection.h"
+#include <set>
+#include <string>
namespace WebKit {
class WebArrayBufferView;
@@ -73,8 +75,11 @@
virtual bool testRepaint() const { return false; }
virtual bool sweepHorizontally() const { return false; }
virtual bool isPrinting() const { return false; }
- virtual bool shouldStayOnPageAfterHandlingBeforeUnload() const { return false; }
+ virtual bool shouldStayOnPageAfterHandlingBeforeUnload() const { return false; }
virtual void setTitleTextDirection(WebKit::WebTextDirection) { }
+ virtual const std::set<std::string>* httpHeadersToClear() const { return 0; }
+ virtual bool shouldBlockRedirects() const { return false; }
+ virtual bool willSendRequestShouldReturnNull() const { return false; }
};
}
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp 2013-01-21 11:16:22 UTC (rev 140318)
@@ -201,6 +201,9 @@
bindMethod("repaintSweepHorizontally", &TestRunner::repaintSweepHorizontally);
bindMethod("setPrinting", &TestRunner::setPrinting);
bindMethod("setShouldStayOnPageAfterHandlingBeforeUnload", &TestRunner::setShouldStayOnPageAfterHandlingBeforeUnload);
+ bindMethod("setWillSendRequestClearHeader", &TestRunner::setWillSendRequestClearHeader);
+ bindMethod("setWillSendRequestReturnsNull", &TestRunner::setWillSendRequestReturnsNull);
+ bindMethod("setWillSendRequestReturnsNullOnRedirect", &TestRunner::setWillSendRequestReturnsNullOnRedirect);
// The following methods interact with the WebTestProxy.
bindMethod("sendWebIntentResponse", &TestRunner::sendWebIntentResponse);
@@ -333,7 +336,11 @@
m_sweepHorizontally = false;
m_isPrinting = false;
m_shouldStayOnPageAfterHandlingBeforeUnload = false;
+ m_shouldBlockRedirects = false;
+ m_willSendRequestShouldReturnNull = false;
+ m_httpHeadersToClear.clear();
+
m_globalFlag.set(false);
m_titleTextDirection.set("ltr");
m_platformName.set("chromium");
@@ -500,6 +507,21 @@
m_titleTextDirection.set(dir == WebKit::WebTextDirectionLeftToRight ? "ltr" : "rtl");
}
+const std::set<std::string>* TestRunner::httpHeadersToClear() const
+{
+ return &m_httpHeadersToClear;
+}
+
+bool TestRunner::shouldBlockRedirects() const
+{
+ return m_shouldBlockRedirects;
+}
+
+bool TestRunner::willSendRequestShouldReturnNull() const
+{
+ return m_willSendRequestShouldReturnNull;
+}
+
void TestRunner::dumpPermissionClientCallbacks(const CppArgumentList&, CppVariant* result)
{
m_webPermissions->setDumpCallbacks(true);
@@ -606,6 +628,30 @@
result->setNull();
}
+void TestRunner::setWillSendRequestClearHeader(const CppArgumentList& arguments, CppVariant* result)
+{
+ if (arguments.size() > 0 && arguments[0].isString()) {
+ string header = arguments[0].toString();
+ if (!header.empty())
+ m_httpHeadersToClear.insert(header);
+ }
+ result->setNull();
+}
+
+void TestRunner::setWillSendRequestReturnsNullOnRedirect(const CppArgumentList& arguments, CppVariant* result)
+{
+ if (arguments.size() > 0 && arguments[0].isBool())
+ m_shouldBlockRedirects = arguments[0].toBoolean();
+ result->setNull();
+}
+
+void TestRunner::setWillSendRequestReturnsNull(const CppArgumentList& arguments, CppVariant* result)
+{
+ if (arguments.size() > 0 && arguments[0].isBool())
+ m_willSendRequestShouldReturnNull = arguments[0].toBoolean();
+ result->setNull();
+}
+
void TestRunner::setTabKeyCyclesThroughElements(const CppArgumentList& arguments, CppVariant* result)
{
if (arguments.size() > 0 && arguments[0].isBool())
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h 2013-01-21 11:16:22 UTC (rev 140318)
@@ -95,6 +95,9 @@
virtual bool isPrinting() const OVERRIDE;
virtual bool shouldStayOnPageAfterHandlingBeforeUnload() const OVERRIDE;
virtual void setTitleTextDirection(WebKit::WebTextDirection) OVERRIDE;
+ virtual const std::set<std::string>* httpHeadersToClear() const OVERRIDE;
+ virtual bool shouldBlockRedirects() const OVERRIDE;
+ virtual bool willSendRequestShouldReturnNull() const OVERRIDE;
protected:
// FIXME: make these private once the move from DRTTestRunner to TestRunner
@@ -327,6 +330,15 @@
void setShouldStayOnPageAfterHandlingBeforeUnload(const CppArgumentList&, CppVariant*);
+ // Causes WillSendRequest to clear certain headers.
+ void setWillSendRequestClearHeader(const CppArgumentList&, CppVariant*);
+
+ // Causes WillSendRequest to block redirects.
+ void setWillSendRequestReturnsNullOnRedirect(const CppArgumentList&, CppVariant*);
+
+ // Causes WillSendRequest to return an empty request.
+ void setWillSendRequestReturnsNull(const CppArgumentList&, CppVariant*);
+
///////////////////////////////////////////////////////////////////////////
// Methods interacting with the WebTestProxy
@@ -523,6 +535,12 @@
bool m_shouldStayOnPageAfterHandlingBeforeUnload;
+ bool m_shouldBlockRedirects;
+
+ bool m_willSendRequestShouldReturnNull;
+
+ std::set<std::string> m_httpHeadersToClear;
+
// WAV audio data is stored here.
WebKit::WebArrayBufferView m_audioData;
Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp 2013-01-21 11:16:22 UTC (rev 140318)
@@ -180,8 +180,13 @@
return url.possibly_invalid_spec();
}
+void blockRequest(WebURLRequest& request)
+{
+ request.setURL(WebURL());
}
+}
+
WebTestProxyBase::WebTestProxyBase()
: m_testInterfaces(0)
, m_delegate(0)
@@ -710,6 +715,23 @@
printResponseDescription(m_delegate, redirectResponse);
m_delegate->printMessage("\n");
}
+
+ if (!redirectResponse.isNull() && m_testInterfaces->testRunner() && m_testInterfaces->testRunner()->shouldBlockRedirects()) {
+ m_delegate->printMessage("Returning null for this redirect\n");
+ blockRequest(request);
+ return;
+ }
+
+ if (m_testInterfaces->testRunner() && m_testInterfaces->testRunner()->willSendRequestShouldReturnNull()) {
+ blockRequest(request);
+ return;
+ }
+
+ if (m_testInterfaces->testRunner() && m_testInterfaces->testRunner()->httpHeadersToClear()) {
+ const set<string> *clearHeaders = m_testInterfaces->testRunner()->httpHeadersToClear();
+ for (set<string>::const_iterator header = clearHeaders->begin(); header != clearHeaders->end(); ++header)
+ request.clearHTTPHeaderField(WebString::fromUTF8(*header));
+ }
}
void WebTestProxyBase::didReceiveResponse(WebFrame*, unsigned identifier, const WebKit::WebURLResponse& response)
Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp 2013-01-21 11:16:22 UTC (rev 140318)
@@ -894,6 +894,9 @@
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();
@@ -902,17 +905,6 @@
request.setExtraData(webkit_support::CreateWebURLRequestExtraData(frame->document().referrerPolicy()));
- if (!redirectResponse.isNull() && m_blocksRedirects) {
- fputs("Returning null for this redirect\n", stdout);
- blockRequest(request);
- return;
- }
-
- if (m_requestReturnNull) {
- blockRequest(request);
- return;
- }
-
string host = url.host();
if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
@@ -924,10 +916,6 @@
}
}
- HashSet<String>::const_iterator end = m_clearHeaders.end();
- for (HashSet<String>::const_iterator header = m_clearHeaders.begin(); header != end; ++header)
- request.clearHTTPHeaderField(WebString(header->characters(), header->length()));
-
// Set the new substituted URL.
request.setURL(webkit_support::RewriteLayoutTestsURL(request.url().spec()));
}
@@ -1309,8 +1297,6 @@
#else
m_selectTrailingWhitespaceEnabled = false;
#endif
- m_blocksRedirects = false;
- m_requestReturnNull = false;
m_isPainting = false;
m_canvas.clear();
#if ENABLE(POINTER_LOCK)
@@ -1321,7 +1307,6 @@
m_navigationController = adoptPtr(new TestNavigationController(this));
m_pendingExtraData.clear();
- m_clearHeaders.clear();
m_editCommandName.clear();
m_editCommandValue.clear();
Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.h (140317 => 140318)
--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.h 2013-01-21 11:10:27 UTC (rev 140317)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.h 2013-01-21 11:16:22 UTC (rev 140318)
@@ -93,8 +93,6 @@
void waitForPolicyDelegate();
void setCustomPolicyDelegate(bool, bool);
WebKit::WebFrame* topLoadingFrame() { return m_topLoadingFrame; }
- void setBlockRedirects(bool block) { m_blocksRedirects = block; }
- void setRequestReturnNull(bool returnNull) { m_requestReturnNull = returnNull; }
void setPendingExtraData(PassOwnPtr<TestShellExtraData>);
void paintRect(const WebKit::WebRect&);
@@ -106,8 +104,6 @@
void loadURLForFrame(const WebKit::WebURL&, const WebKit::WebString& frameName);
TestNavigationController* navigationController() { return m_navigationController.get(); }
- void addClearHeader(const WTF::String& header) { m_clearHeaders.add(header); }
- const HashSet<WTF::String>& clearHeaders() const { return m_clearHeaders; }
void closeWidget();
#if ENABLE(INPUT_SPEECH)
@@ -402,15 +398,6 @@
// true if whatever is sent to the console should be logged to stdout.
bool m_logConsoleOutput;
- // Set of headers to clear in willSendRequest.
- HashSet<WTF::String> m_clearHeaders;
-
- // true if we should block any redirects
- bool m_blocksRedirects;
-
- // true if we should block (set an empty request for) any requests
- bool m_requestReturnNull;
-
// Edit command associated to the current keyboard event.
std::string m_editCommandName;
std::string m_editCommandValue;