diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-21 19:00:26 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-21 19:00:26 +0000 |
commit | 20dcfd549f122b8a15b76447c14c5c3539c88242 (patch) | |
tree | ae8c81d0906704665653f2feb104c65215af098b /webkit | |
parent | e718099e5cb97a6b49788c977ef157083e12334e (diff) | |
download | chromium_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.h | 8 | ||||
-rw-r--r-- | webkit/api/src/WebKit.cpp | 15 | ||||
-rw-r--r-- | webkit/tools/layout_tests/test_expectations.txt | 10 | ||||
-rw-r--r-- | webkit/tools/test_shell/layout_test_controller.cc | 24 | ||||
-rw-r--r-- | webkit/tools/test_shell/layout_test_controller.h | 3 |
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); } |