Title: [140318] trunk/Tools
Revision
140318
Author
joc...@chromium.org
Date
2013-01-21 03:16:22 -0800 (Mon, 21 Jan 2013)

Log Message

[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):

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to