summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-21 01:19:46 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-21 01:19:46 +0000
commit9d72e8a3a4beb44db73b7bbe6b76e0eaef623fec (patch)
treebf0c34ace7cda675da622b7a1ebdb6bee1f7cf89 /webkit
parent9f20a6d0e6153489efe035c860f249c7cbc28890 (diff)
downloadchromium_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.h8
-rw-r--r--webkit/api/src/WebKit.cpp15
-rw-r--r--webkit/tools/layout_tests/test_expectations.txt8
-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, 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); }