summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/browser/bookmarklet_browsertest.cc75
-rw-r--r--content/content_tests.gypi1
-rw-r--r--webkit/glue/bookmarklet_unittest.cc76
-rw-r--r--webkit/tools/test_shell/test_shell.gypi1
4 files changed, 76 insertions, 77 deletions
diff --git a/content/browser/bookmarklet_browsertest.cc b/content/browser/bookmarklet_browsertest.cc
new file mode 100644
index 0000000..761c642
--- /dev/null
+++ b/content/browser/bookmarklet_browsertest.cc
@@ -0,0 +1,75 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/string_util.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/test/browser_test_utils.h"
+#include "content/public/test/test_utils.h"
+#include "content/shell/shell.h"
+#include "content/test/content_browser_test.h"
+#include "content/test/content_browser_test_utils.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace content {
+
+class BookmarkletTest : public ContentBrowserTest {
+ public:
+ void NavigateToStartPage() {
+ NavigateToURL(shell(), GURL("data:text/html,start page"));
+ EXPECT_EQ("start page", GetBodyText());
+ }
+
+ std::string GetBodyText() {
+ std::string body_text;
+ EXPECT_TRUE(ExecuteJavaScriptAndExtractString(
+ shell()->web_contents()->GetRenderViewHost(),
+ L"",
+ L"window.domAutomationController.send(document.body.innerText);",
+ &body_text));
+ return body_text;
+ }
+};
+
+IN_PROC_BROWSER_TEST_F(BookmarkletTest, Redirect) {
+ NavigateToStartPage();
+
+ NavigateToURL(shell(), GURL(
+ "javascript:location.href='data:text/plain,SUCCESS'"));
+ EXPECT_EQ("SUCCESS", GetBodyText());
+}
+
+IN_PROC_BROWSER_TEST_F(BookmarkletTest, RedirectVoided) {
+ NavigateToStartPage();
+
+ // This test should be redundant with the Redirect test above. The point
+ // here is to emphasize that in either case the assignment to location during
+ // the evaluation of the script should suppress loading the script result.
+ // Here, because of the void() wrapping there is no script result.
+ NavigateToURL(shell(), GURL(
+ "javascript:void(location.href='data:text/plain,SUCCESS')"));
+ EXPECT_EQ("SUCCESS", GetBodyText());
+}
+
+IN_PROC_BROWSER_TEST_F(BookmarkletTest, NonEmptyResult) {
+ NavigateToStartPage();
+ // If there's no navigation, javascript: URLs are run synchronously.
+ shell()->LoadURL(GURL("javascript:'hello world'"));
+
+ EXPECT_EQ("hello world", GetBodyText());
+}
+
+IN_PROC_BROWSER_TEST_F(BookmarkletTest, DocumentWrite) {
+ NavigateToStartPage();
+
+ // If there's no navigation, javascript: URLs are run synchronously.
+ shell()->LoadURL(GURL(
+ "javascript:document.open();"
+ "document.write('hello world');"
+ "document.close();"));
+ EXPECT_EQ("hello world", GetBodyText());
+}
+
+
+} // namespace content
+
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index ca3f310..f81b814 100644
--- a/content/content_tests.gypi
+++ b/content/content_tests.gypi
@@ -637,6 +637,7 @@
'browser/accessibility/dump_accessibility_tree_helper_win.cc',
'browser/appcache/appcache_browsertest.cc',
'browser/audio_browsertest.cc',
+ 'browser/bookmarklet_browsertest.cc',
'browser/child_process_security_policy_browsertest.cc',
'browser/database_browsertest.cc',
'browser/device_orientation/device_orientation_browsertest.cc',
diff --git a/webkit/glue/bookmarklet_unittest.cc b/webkit/glue/bookmarklet_unittest.cc
deleted file mode 100644
index d7fada5..0000000
--- a/webkit/glue/bookmarklet_unittest.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/file_util.h"
-#include "base/message_loop.h"
-#include "base/path_service.h"
-#include "base/string_util.h"
-#include "googleurl/src/gurl.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/tools/test_shell/test_shell_test.h"
-
-namespace {
-
-class BookmarkletTest : public TestShellTest {
- public:
- virtual void SetUp() {
- TestShellTest::SetUp();
-
- test_shell_->LoadURL(GURL("data:text/html,start page"));
- test_shell_->WaitTestFinished();
- }
-};
-
-TEST_F(BookmarkletTest, Redirect) {
- test_shell_->LoadURL(
- GURL("javascript:location.href='data:text/plain,SUCCESS'"));
- test_shell_->WaitTestFinished();
- string16 text = test_shell_->GetDocumentText();
- EXPECT_EQ("SUCCESS", UTF16ToASCII(text));
-}
-
-TEST_F(BookmarkletTest, RedirectVoided) {
- // This test should be redundant with the Redirect test above. The point
- // here is to emphasize that in either case the assignment to location during
- // the evaluation of the script should suppress loading the script result.
- // Here, because of the void() wrapping there is no script result.
- test_shell_->LoadURL(
- GURL("javascript:void(location.href='data:text/plain,SUCCESS')"));
- test_shell_->WaitTestFinished();
- string16 text = test_shell_->GetDocumentText();
- EXPECT_EQ("SUCCESS", UTF16ToASCII(text));
-}
-
-TEST_F(BookmarkletTest, NonEmptyResult) {
- string16 text;
-
- // TODO(darin): This test fails in a JSC build. WebCore+JSC does not really
- // need to support this usage until WebCore supports javascript: URLs that
- // generate content (https://bugs.webkit.org/show_bug.cgi?id=14959). It is
- // important to note that Safari does not support bookmarklets, and this is
- // really an edge case. Our behavior with V8 is consistent with FF and IE.
-#if 0
- test_shell_->LoadURL(L"javascript:false");
- MessageLoop::current()->RunAllPending();
- text = test_shell_->GetDocumentText();
- EXPECT_EQ("false", UTF16ToASCII(text));
-#endif
-
- test_shell_->LoadURL(GURL("javascript:'hello world'"));
- MessageLoop::current()->RunAllPending();
- text = test_shell_->GetDocumentText();
- EXPECT_EQ("hello world", UTF16ToASCII(text));
-}
-
-TEST_F(BookmarkletTest, DocumentWrite) {
- test_shell_->LoadURL(GURL(
- "javascript:document.open();"
- "document.write('hello world');"
- "document.close()"));
- MessageLoop::current()->RunAllPending();
- string16 text = test_shell_->GetDocumentText();
- EXPECT_EQ("hello world", UTF16ToASCII(text));
-}
-
-} // namespace
diff --git a/webkit/tools/test_shell/test_shell.gypi b/webkit/tools/test_shell/test_shell.gypi
index 06ffa81..e1e87de 100644
--- a/webkit/tools/test_shell/test_shell.gypi
+++ b/webkit/tools/test_shell/test_shell.gypi
@@ -366,7 +366,6 @@
'<(DEPTH)/webkit/support/webkit_support.gyp:user_agent',
],
'sources': [
- '../../glue/bookmarklet_unittest.cc',
'../../glue/cpp_bound_class_unittest.cc',
'../../glue/cpp_variant_unittest.cc',
'../../glue/dom_operations_unittest.cc',