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;