diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-21 01:19:46 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-21 01:19:46 +0000 |
commit | 9d72e8a3a4beb44db73b7bbe6b76e0eaef623fec (patch) | |
tree | bf0c34ace7cda675da622b7a1ebdb6bee1f7cf89 /webkit | |
parent | 9f20a6d0e6153489efe035c860f249c7cbc28890 (diff) | |
download | chromium_src-9d72e8a3a4beb44db73b7bbe6b76e0eaef623fec.zip chromium_src-9d72e8a3a4beb44db73b7bbe6b76e0eaef623fec.tar.gz chromium_src-9d72e8a3a4beb44db73b7bbe6b76e0eaef623fec.tar.bz2 |
Plumb whiteListAccessFromOrigin() through Chromium's WebKit API
and enable the related layout tests.
BUG=47548,12129
TEST=Covered by layout tests
Review URL: http://codereview.chromium.org/174175
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23931 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 | 8 | ||||
-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, 50 insertions, 8 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 0f141c35..4575b92 100644 --- a/webkit/tools/layout_tests/test_expectations.txt +++ b/webkit/tools/layout_tests/test_expectations.txt @@ -2903,14 +2903,6 @@ BUG19888 WIN : LayoutTests/plugins/netscape-plugin-setwindow-size.html = FAIL // Temporary supression while we investigate. BUG19842 MAC : LayoutTests/fast/forms/input-type-change2.html = CRASH -// 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 - // WebKit merge 47575:47591 new test, needs baselines. WebKit change http://trac.webkit.org/changeset/47590 BUG_DIMICH LINUX WIN : LayoutTests/fast/repaint/inline-block-resize.html = FAIL 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); } |