summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-21 19:00:26 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-21 19:00:26 +0000
commit20dcfd549f122b8a15b76447c14c5c3539c88242 (patch)
treeae8c81d0906704665653f2feb104c65215af098b /webkit
parente718099e5cb97a6b49788c977ef157083e12334e (diff)
downloadchromium_src-20dcfd549f122b8a15b76447c14c5c3539c88242.zip
chromium_src-20dcfd549f122b8a15b76447c14c5c3539c88242.tar.gz
chromium_src-20dcfd549f122b8a15b76447c14c5c3539c88242.tar.bz2
Re-land r23931: Plumb whiteListAccessFromOrigin() through
Chromium's WebKit API and enable the related layout tests. After some digging, I realized the problem here, sorta. The test that was failing actually fails flakily. There are two flavors of this test: sync and async. The async test was already marked flakey, the sync test was not. My change upstream refactored XHR to make the sync and async cases share much more code. So it is not surprising that they are now both flakey. Review URL: http://codereview.chromium.org/173209 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23994 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/api/public/WebKit.h8
-rw-r--r--webkit/api/src/WebKit.cpp15
-rw-r--r--webkit/tools/layout_tests/test_expectations.txt10
-rw-r--r--webkit/tools/test_shell/layout_test_controller.cc24
-rw-r--r--webkit/tools/test_shell/layout_test_controller.h3
5 files changed, 51 insertions, 9 deletions
diff --git a/webkit/api/public/WebKit.h b/webkit/api/public/WebKit.h
index 4b5c1a6..e0fc2b7 100644
--- a/webkit/api/public/WebKit.h
+++ b/webkit/api/public/WebKit.h
@@ -32,6 +32,7 @@
#define WebKit_h
#include "WebCommon.h"
+#include "WebURL.h"
namespace v8 {
class Extension;
@@ -100,6 +101,13 @@ namespace WebKit {
// Enables HTML5 database support.
WEBKIT_API void enableDatabases();
WEBKIT_API bool databasesEnabled();
+
+ // Support for whitelisting access to origins beyond the same-origin policy.
+ WEBKIT_API void whiteListAccessFromOrigin(
+ const WebURL& sourceOrigin, const WebString& destinationProtocol,
+ const WebString& destinationHost, bool allowDestinationSubdomains);
+ WEBKIT_API void resetOriginAccessWhiteLists();
+
} // namespace WebKit
#endif
diff --git a/webkit/api/src/WebKit.cpp b/webkit/api/src/WebKit.cpp
index 93ddc72..55b9088 100644
--- a/webkit/api/src/WebKit.cpp
+++ b/webkit/api/src/WebKit.cpp
@@ -157,4 +157,19 @@ void enableV8SingleThreadMode()
WebCore::enableStringImplCache();
}
+void whiteListAccessFromOrigin(const WebURL& sourceOrigin,
+ const WebString& destinationProtocol,
+ const WebString& destinationHost,
+ bool allowDestinationSubdomains)
+{
+ WebCore::SecurityOrigin::whiteListAccessFromOrigin(
+ *WebCore::SecurityOrigin::create(sourceOrigin), destinationProtocol,
+ destinationHost, allowDestinationSubdomains);
+}
+
+void resetOriginAccessWhiteLists()
+{
+ WebCore::SecurityOrigin::resetOriginAccessWhiteLists();
+}
+
} // namespace WebKit
diff --git a/webkit/tools/layout_tests/test_expectations.txt b/webkit/tools/layout_tests/test_expectations.txt
index 186dac9..e9587c3 100644
--- a/webkit/tools/layout_tests/test_expectations.txt
+++ b/webkit/tools/layout_tests/test_expectations.txt
@@ -1948,6 +1948,7 @@ BUG10475 WIN LINUX : LayoutTests/fast/forms/range-thumb-height-percentage.html =
SKIP BUG9613 : LayoutTests/fast/dom/clientWidthAfterDocumentIsRemoved.html = PASS
BUG10476 : LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post.html = FAIL PASS
+BUG10476 : LayoutTests/http/tests/xmlhttprequest/redirect-cross-origin-post-sync.html = FAIL PASS
// Merge WebKit 42133:42199 regressions
BUG10477 WIN LINUX : LayoutTests/fast/repaint/reflection-repaint-test.html = FAIL
@@ -2893,12 +2894,3 @@ BUG19842 MAC : LayoutTests/fast/forms/input-type-change2.html = CRASH
// New test. WebKit change http://trac.webkit.org/changeset/47431
// Does not work in Chromium yet (not supporting wav format)
BUG19904 WIN : LayoutTests/media/progress-event-at-least-one.html = FAIL TIMEOUT
-
-// WebKit merge 47546:47575 new tests, WebKit change http://trac.webkit.org/changeset/47548
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-all.html = TIMEOUT
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-exact-match.html = TIMEOUT
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-https.html = TIMEOUT
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-ip-addresses-with-subdomains.html = TIMEOUT
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-ip-addresses.html = TIMEOUT
-BUG19835 LINUX WIN : LayoutTests/http/tests/xmlhttprequest/origin-whitelisting-subdomains.html = TIMEOUT
-
diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc
index fe09e99..d226575 100644
--- a/webkit/tools/test_shell/layout_test_controller.cc
+++ b/webkit/tools/test_shell/layout_test_controller.cc
@@ -15,7 +15,9 @@
#include "base/path_service.h"
#include "base/string_util.h"
#include "webkit/api/public/WebFrame.h"
+#include "webkit/api/public/WebKit.h"
#include "webkit/api/public/WebScriptSource.h"
+#include "webkit/api/public/WebURL.h"
#include "webkit/glue/dom_operations.h"
#include "webkit/glue/webpreferences.h"
#include "webkit/glue/webview.h"
@@ -118,6 +120,7 @@ LayoutTestController::LayoutTestController(TestShell* shell) {
BindMethod("setCustomPolicyDelegate", &LayoutTestController::setCustomPolicyDelegate);
BindMethod("waitForPolicyDelegate", &LayoutTestController::waitForPolicyDelegate);
BindMethod("setWillSendRequestReturnsNullOnRedirect", &LayoutTestController::setWillSendRequestReturnsNullOnRedirect);
+ BindMethod("whiteListAccessFromOrigin", &LayoutTestController::whiteListAccessFromOrigin);
// The following are stubs.
BindMethod("dumpAsWebArchive", &LayoutTestController::dumpAsWebArchive);
@@ -425,6 +428,8 @@ void LayoutTestController::Reset() {
globalFlag_.Set(false);
webHistoryItemCount_.Set(0);
+ WebKit::resetOriginAccessWhiteLists();
+
if (close_remaining_windows_) {
// Iterate through the window list and close everything except the original
// shell. We don't want to delete elements as we're iterating, so we copy
@@ -924,3 +929,22 @@ void LayoutTestController::fallbackMethod(
}
result->SetNull();
}
+
+void LayoutTestController::whiteListAccessFromOrigin(
+ const CppArgumentList& args, CppVariant* result)
+{
+ result->SetNull();
+
+ if (args.size() != 4 || !args[0].isString() || !args[1].isString() ||
+ !args[2].isString() || !args[3].isBool())
+ return;
+
+ WebKit::WebURL url(GURL(args[0].ToString()));
+ if (!url.isValid())
+ return;
+
+ WebKit::whiteListAccessFromOrigin(url,
+ WebString::fromUTF8(args[1].ToString()),
+ WebString::fromUTF8(args[2].ToString()),
+ args[3].ToBoolean());
+}
diff --git a/webkit/tools/test_shell/layout_test_controller.h b/webkit/tools/test_shell/layout_test_controller.h
index c16f185..47cda91 100644
--- a/webkit/tools/test_shell/layout_test_controller.h
+++ b/webkit/tools/test_shell/layout_test_controller.h
@@ -191,6 +191,9 @@ class LayoutTestController : public CppBoundClass {
// that case (as the Mac does).
void fallbackMethod(const CppArgumentList& args, CppVariant* result);
+ // Allows layout tests to call SecurityOrigin::whiteListAccessFromOrigin().
+ void whiteListAccessFromOrigin(const CppArgumentList& args, CppVariant* result);
+
public:
// The following methods are not exposed to JavaScript.
void SetWorkQueueFrozen(bool frozen) { work_queue_.set_frozen(frozen); }