Title: [141298] trunk/Tools
Revision
141298
Author
joc...@chromium.org
Date
2013-01-30 12:46:15 -0800 (Wed, 30 Jan 2013)

Log Message

[chromium] move custom policy delegate to TestRunner library
https://bugs.webkit.org/show_bug.cgi?id=108328

Reviewed by Adam Barth.

* DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
* DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
(WebTestProxyBase):
(WebTestRunner::WebTestProxy::decidePolicyForNavigation):
* DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
(WebTestRunner::WebTestRunner::policyDelegateEnabled):
(WebTestRunner::WebTestRunner::policyDelegateIsPermissive):
(WebTestRunner::WebTestRunner::policyDelegateShouldNotifyDone):
* DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
(WebTestRunner::TestRunner::reset):
(WebTestRunner::TestRunner::policyDelegateEnabled):
(WebTestRunner):
(WebTestRunner::TestRunner::policyDelegateIsPermissive):
(WebTestRunner::TestRunner::policyDelegateShouldNotifyDone):
(WebTestRunner::TestRunner::setCustomPolicyDelegate):
(WebTestRunner::TestRunner::waitForPolicyDelegate):
* DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
(TestRunner):
* DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
(WebTestRunner::WebTestProxyBase::decidePolicyForNavigation):
(WebTestRunner):
* DumpRenderTree/chromium/WebViewHost.cpp:
(WebViewHost::decidePolicyForNavigation):
(WebViewHost::reset):
* DumpRenderTree/chromium/WebViewHost.h:
(WebViewHost):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (141297 => 141298)


--- trunk/Tools/ChangeLog	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/ChangeLog	2013-01-30 20:46:15 UTC (rev 141298)
@@ -1,3 +1,37 @@
+2013-01-30  Jochen Eisinger  <joc...@chromium.org>
+
+        [chromium] move custom policy delegate to TestRunner library
+        https://bugs.webkit.org/show_bug.cgi?id=108328
+
+        Reviewed by Adam Barth.
+
+        * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
+        * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
+        (WebTestProxyBase):
+        (WebTestRunner::WebTestProxy::decidePolicyForNavigation):
+        * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
+        (WebTestRunner::WebTestRunner::policyDelegateEnabled):
+        (WebTestRunner::WebTestRunner::policyDelegateIsPermissive):
+        (WebTestRunner::WebTestRunner::policyDelegateShouldNotifyDone):
+        * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
+        (WebTestRunner::TestRunner::reset):
+        (WebTestRunner::TestRunner::policyDelegateEnabled):
+        (WebTestRunner):
+        (WebTestRunner::TestRunner::policyDelegateIsPermissive):
+        (WebTestRunner::TestRunner::policyDelegateShouldNotifyDone):
+        (WebTestRunner::TestRunner::setCustomPolicyDelegate):
+        (WebTestRunner::TestRunner::waitForPolicyDelegate):
+        * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
+        (TestRunner):
+        * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
+        (WebTestRunner::WebTestProxyBase::decidePolicyForNavigation):
+        (WebTestRunner):
+        * DumpRenderTree/chromium/WebViewHost.cpp:
+        (WebViewHost::decidePolicyForNavigation):
+        (WebViewHost::reset):
+        * DumpRenderTree/chromium/WebViewHost.h:
+        (WebViewHost):
+
 2013-01-30  Allan Sandfeld Jensen  <allan.jen...@digia.com>
 
         [Qt][WK1] Support better testing of Web Notifications

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


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h	2013-01-30 20:46:15 UTC (rev 141298)
@@ -117,8 +117,6 @@
     virtual void closeRemainingWindows() { }
     virtual int navigationEntryCount() { return 0; }
     virtual int windowCount() { return 0; }
-    virtual void setCustomPolicyDelegate(bool, bool) { }
-    virtual void waitForPolicyDelegate() { }
     virtual void goToOffset(int) { }
     virtual void reload() { }
     virtual void loadURLForFrame(const WebKit::WebURL&, const std::string&) { }

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


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h	2013-01-30 20:46:15 UTC (rev 141298)
@@ -36,6 +36,7 @@
 #include "WebKit/chromium/public/WebDragOperation.h"
 #include "WebKit/chromium/public/WebEditingAction.h"
 #include "WebKit/chromium/public/WebNavigationPolicy.h"
+#include "WebKit/chromium/public/WebNavigationType.h"
 #include "WebKit/chromium/public/WebTextAffinity.h"
 #include "WebKit/chromium/public/WebTextDirection.h"
 #include <map>
@@ -146,6 +147,7 @@
     bool runModalConfirmDialog(WebKit::WebFrame*, const WebKit::WebString&);
     bool runModalPromptDialog(WebKit::WebFrame*, const WebKit::WebString& message, const WebKit::WebString& defaultValue, WebKit::WebString* actualValue);
     bool runModalBeforeUnloadDialog(WebKit::WebFrame*, const WebKit::WebString&);
+    WebKit::WebNavigationPolicy decidePolicyForNavigation(WebKit::WebFrame*, const WebKit::WebURLRequest&, WebKit::WebNavigationType, const WebKit::WebNode& originatingNode, WebKit::WebNavigationPolicy defaultPolicy, bool isRedirect);
 
 private:
     void locationChangeDone(WebKit::WebFrame*);
@@ -445,6 +447,13 @@
         WebTestProxyBase::runModalBeforeUnloadDialog(frame, message);
         return Base::runModalBeforeUnloadDialog(frame, message);
     }
+    virtual WebKit::WebNavigationPolicy decidePolicyForNavigation(WebKit::WebFrame* frame, const WebKit::WebURLRequest& request, WebKit::WebNavigationType type, const WebKit::WebNode& originatingNode, WebKit::WebNavigationPolicy defaultPolicy, bool isRedirect)
+    {
+        WebKit::WebNavigationPolicy policy = WebTestProxyBase::decidePolicyForNavigation(frame, request, type, originatingNode, defaultPolicy, isRedirect);
+        if (policy == WebKit::WebNavigationPolicyIgnore)
+            return policy;
+        return Base::decidePolicyForNavigation(frame, request, type, originatingNode, defaultPolicy, isRedirect);
+    }
 };
 
 }

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h (141297 => 141298)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h	2013-01-30 20:46:15 UTC (rev 141298)
@@ -83,6 +83,9 @@
     virtual void setTopLoadingFrame(WebKit::WebFrame*, bool) { }
     virtual WebKit::WebFrame* topLoadingFrame() const { return 0; }
     virtual void policyDelegateDone() { }
+    virtual bool policyDelegateEnabled() const { return false; }
+    virtual bool policyDelegateIsPermissive() const { return false; }
+    virtual bool policyDelegateShouldNotifyDone() const { return false; }
     virtual bool shouldInterceptPostMessage() const { return false; }
     virtual bool isSmartInsertDeleteEnabled() const { return true; }
     virtual bool isSelectTrailingWhitespaceEnabled() const { return false; }

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp (141297 => 141298)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp	2013-01-30 20:46:15 UTC (rev 141298)
@@ -377,6 +377,9 @@
     }
     m_topLoadingFrame = 0;
     m_waitUntilDone = false;
+    m_policyDelegateEnabled = false;
+    m_policyDelegateIsPermissive = false;
+    m_policyDelegateShouldNotifyDone = false;
 
     WebSecurityPolicy::resetOriginAccessWhitelists();
 #if OS(LINUX) || OS(ANDROID)
@@ -637,6 +640,21 @@
     m_waitUntilDone = false;
 }
 
+bool TestRunner::policyDelegateEnabled() const
+{
+    return m_policyDelegateEnabled;
+}
+
+bool TestRunner::policyDelegateIsPermissive() const
+{
+    return m_policyDelegateIsPermissive;
+}
+
+bool TestRunner::policyDelegateShouldNotifyDone() const
+{
+    return m_policyDelegateShouldNotifyDone;
+}
+
 bool TestRunner::shouldInterceptPostMessage() const
 {
     return m_interceptPostMessage.isBool() && m_interceptPostMessage.toBoolean();
@@ -857,18 +875,18 @@
 void TestRunner::setCustomPolicyDelegate(const CppArgumentList& arguments, CppVariant* result)
 {
     if (arguments.size() > 0 && arguments[0].isBool()) {
-        bool enable = arguments[0].value.boolValue;
-        bool permissive = false;
+        m_policyDelegateEnabled = arguments[0].value.boolValue;
+        m_policyDelegateIsPermissive = false;
         if (arguments.size() > 1 && arguments[1].isBool())
-            permissive = arguments[1].value.boolValue;
-        m_delegate->setCustomPolicyDelegate(enable, permissive);
+            m_policyDelegateIsPermissive = arguments[1].value.boolValue;
     }
     result->setNull();
 }
 
 void TestRunner::waitForPolicyDelegate(const CppArgumentList&, CppVariant* result)
 {
-    m_delegate->waitForPolicyDelegate();
+    m_policyDelegateEnabled = true;
+    m_policyDelegateShouldNotifyDone = true;
     m_waitUntilDone = true;
     result->setNull();
 }

Modified: trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h (141297 => 141298)


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h	2013-01-30 20:46:15 UTC (rev 141298)
@@ -101,6 +101,9 @@
     virtual void setTopLoadingFrame(WebKit::WebFrame*, bool) OVERRIDE;
     virtual WebKit::WebFrame* topLoadingFrame() const OVERRIDE;
     virtual void policyDelegateDone() OVERRIDE;
+    virtual bool policyDelegateEnabled() const OVERRIDE;
+    virtual bool policyDelegateIsPermissive() const OVERRIDE;
+    virtual bool policyDelegateShouldNotifyDone() const OVERRIDE;
     virtual bool shouldInterceptPostMessage() const OVERRIDE;
     virtual bool isSmartInsertDeleteEnabled() const OVERRIDE;
     virtual bool isSelectTrailingWhitespaceEnabled() const OVERRIDE;
@@ -529,6 +532,18 @@
     // If true, don't dump output until notifyDone is called.
     bool m_waitUntilDone;
 
+    // Causes navigation actions just printout the intended navigation instead
+    // of taking you to the page. This is used for cases like mailto, where you
+    // don't actually want to open the mail program.
+    bool m_policyDelegateEnabled;
+
+    // Toggles the behavior of the policy delegate. If true, then navigations
+    // will be allowed. Otherwise, they will be ignored (dropped).
+    bool m_policyDelegateIsPermissive;
+
+    // If true, the policy delegate will signal layout test completion.
+    bool m_policyDelegateShouldNotifyDone;
+
     WorkQueue m_workQueue;
 
     WebKit::WebURL m_userStyleSheetLocation;

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


--- trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp	2013-01-30 20:46:15 UTC (rev 141298)
@@ -211,8 +211,37 @@
     return filename;
 }
 
+// WebNavigationType debugging strings taken from PolicyDelegate.mm.
+const char* linkClickedString = "link clicked";
+const char* formSubmittedString = "form submitted";
+const char* backForwardString = "back/forward";
+const char* reloadString = "reload";
+const char* formResubmittedString = "form resubmitted";
+const char* otherString = "other";
+const char* illegalString = "illegal value";
+
+// Get a debugging string from a WebNavigationType.
+const char* webNavigationTypeToString(WebNavigationType type)
+{
+    switch (type) {
+    case WebKit::WebNavigationTypeLinkClicked:
+        return linkClickedString;
+    case WebKit::WebNavigationTypeFormSubmitted:
+        return formSubmittedString;
+    case WebKit::WebNavigationTypeBackForward:
+        return backForwardString;
+    case WebKit::WebNavigationTypeReload:
+        return reloadString;
+    case WebKit::WebNavigationTypeFormResubmitted:
+        return formResubmittedString;
+    case WebKit::WebNavigationTypeOther:
+        return otherString;
+    }
+    return illegalString;
 }
 
+}
+
 WebTestProxyBase::WebTestProxyBase()
     : m_testInterfaces(0)
     , m_delegate(0)
@@ -908,4 +937,26 @@
     m_testInterfaces->testRunner()->setTopLoadingFrame(frame, true);
 }
 
+WebNavigationPolicy WebTestProxyBase::decidePolicyForNavigation(WebFrame*, const WebURLRequest& request, WebNavigationType type, const WebNode& originatingNode, WebNavigationPolicy defaultPolicy, bool isRedirect)
+{
+    WebNavigationPolicy result;
+    if (!(m_testInterfaces->testRunner() && m_testInterfaces->testRunner()->policyDelegateEnabled()))
+        return defaultPolicy;
+
+    m_delegate->printMessage(string("Policy delegate: attempt to load ") + URLDescription(request.url()) + " with navigation type '" + webNavigationTypeToString(type) + "'");
+    if (!originatingNode.isNull()) {
+        m_delegate->printMessage(" originating from ");
+        printNodeDescription(m_delegate, originatingNode, 0);
+    }
+    m_delegate->printMessage("\n");
+    if (m_testInterfaces->testRunner()->policyDelegateIsPermissive())
+        result = WebKit::WebNavigationPolicyCurrentTab;
+    else
+        result = WebKit::WebNavigationPolicyIgnore;
+
+    if (m_testInterfaces->testRunner()->policyDelegateShouldNotifyDone())
+        m_testInterfaces->testRunner()->policyDelegateDone();
+    return result;
 }
+
+}

Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp (141297 => 141298)


--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp	2013-01-30 20:46:15 UTC (rev 141298)
@@ -92,62 +92,8 @@
 static const int screenHeight = 1080;
 static const int screenUnavailableBorder = 8;
 
-// WebNavigationType debugging strings taken from PolicyDelegate.mm.
-static const char* linkClickedString = "link clicked";
-static const char* formSubmittedString = "form submitted";
-static const char* backForwardString = "back/forward";
-static const char* reloadString = "reload";
-static const char* formResubmittedString = "form resubmitted";
-static const char* otherString = "other";
-static const char* illegalString = "illegal value";
-
 static int nextPageID = 1;
 
-// Get a debugging string from a WebNavigationType.
-static const char* webNavigationTypeToString(WebNavigationType type)
-{
-    switch (type) {
-    case WebKit::WebNavigationTypeLinkClicked:
-        return linkClickedString;
-    case WebKit::WebNavigationTypeFormSubmitted:
-        return formSubmittedString;
-    case WebKit::WebNavigationTypeBackForward:
-        return backForwardString;
-    case WebKit::WebNavigationTypeReload:
-        return reloadString;
-    case WebKit::WebNavigationTypeFormResubmitted:
-        return formResubmittedString;
-    case WebKit::WebNavigationTypeOther:
-        return otherString;
-    }
-    return illegalString;
-}
-
-static string URLDescription(const GURL& url)
-{
-    if (url.SchemeIs("file"))
-        return url.ExtractFileName();
-    return url.possibly_invalid_spec();
-}
-
-static void printNodeDescription(const WebNode& node, int exception)
-{
-    if (exception) {
-        fputs("ERROR", stdout);
-        return;
-    }
-    if (node.isNull()) {
-        fputs("(null)", stdout);
-        return;
-    }
-    fputs(node.nodeName().utf8().data(), stdout);
-    const WebNode& parent = node.parentNode();
-    if (!parent.isNull()) {
-        fputs(" > ", stdout);
-        printNodeDescription(parent, 0);
-    }
-}
-
 // WebViewClient -------------------------------------------------------------
 
 WebView* WebViewHost::createView(WebFrame* creator, const WebURLRequest&, const WebWindowFeatures&, const WebString&, WebNavigationPolicy)
@@ -627,29 +573,11 @@
 }
 
 WebNavigationPolicy WebViewHost::decidePolicyForNavigation(
-    WebFrame*, const WebURLRequest& request,
-    WebNavigationType type, const WebNode& originatingNode,
-    WebNavigationPolicy defaultPolicy, bool isRedirect)
+    WebFrame*, const WebURLRequest&,
+    WebNavigationType, const WebNode&,
+    WebNavigationPolicy defaultPolicy, bool)
 {
-    WebNavigationPolicy result;
-    if (!m_policyDelegateEnabled)
-        return defaultPolicy;
-
-    printf("Policy delegate: attempt to load %s with navigation type '%s'",
-           URLDescription(request.url()).c_str(), webNavigationTypeToString(type));
-    if (!originatingNode.isNull()) {
-        fputs(" originating from ", stdout);
-        printNodeDescription(originatingNode, 0);
-    }
-    fputs("\n", stdout);
-    if (m_policyDelegateIsPermissive)
-        result = WebKit::WebNavigationPolicyCurrentTab;
-    else
-        result = WebKit::WebNavigationPolicyIgnore;
-
-    if (m_policyDelegateShouldNotifyDone)
-        testRunner()->policyDelegateDone();
-    return result;
+    return defaultPolicy;
 }
 
 bool WebViewHost::canHandleRequest(WebFrame*, const WebURLRequest& request)
@@ -1077,18 +1005,6 @@
     return m_shell->windowCount();
 }
 
-void WebViewHost::setCustomPolicyDelegate(bool isCustom, bool isPermissive)
-{
-    m_policyDelegateEnabled = isCustom;
-    m_policyDelegateIsPermissive = isPermissive;
-}
-
-void WebViewHost::waitForPolicyDelegate()
-{
-    m_policyDelegateEnabled = true;
-    m_policyDelegateShouldNotifyDone = true;
-}
-
 void WebViewHost::goToOffset(int offset)
 {
     m_shell->goToOffset(offset);
@@ -1183,9 +1099,6 @@
 
 void WebViewHost::reset()
 {
-    m_policyDelegateEnabled = false;
-    m_policyDelegateIsPermissive = false;
-    m_policyDelegateShouldNotifyDone = false;
     m_pageId = -1;
     m_lastPageIdUpdated = -1;
     m_hasWindow = false;

Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.h (141297 => 141298)


--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.h	2013-01-30 20:42:40 UTC (rev 141297)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.h	2013-01-30 20:46:15 UTC (rev 141298)
@@ -174,8 +174,6 @@
     virtual void closeRemainingWindows() OVERRIDE;
     virtual int navigationEntryCount() OVERRIDE;
     virtual int windowCount() OVERRIDE;
-    virtual void setCustomPolicyDelegate(bool, bool) OVERRIDE;
-    virtual void waitForPolicyDelegate() OVERRIDE;
     virtual void goToOffset(int) OVERRIDE;
     virtual void reload() OVERRIDE;
     void loadURLForFrame(const WebKit::WebURL&, const std::string& frameName) OVERRIDE;
@@ -329,18 +327,6 @@
     webkit_support::TestMediaStreamClient* testMediaStreamClient();
 #endif
 
-    // Causes navigation actions just printout the intended navigation instead
-    // of taking you to the page. This is used for cases like mailto, where you
-    // don't actually want to open the mail program.
-    bool m_policyDelegateEnabled;
-
-    // Toggles the behavior of the policy delegate. If true, then navigations
-    // will be allowed. Otherwise, they will be ignored (dropped).
-    bool m_policyDelegateIsPermissive;
-
-    // If true, the policy delegate will signal layout test completion.
-    bool m_policyDelegateShouldNotifyDone;
-
     // Non-owning pointer. The WebViewHost instance is owned by this TestShell instance.
     TestShell* m_shell;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to