diff options
-rw-r--r-- | content/browser/bookmarklet_browsertest.cc | 75 | ||||
-rw-r--r-- | content/content_tests.gypi | 1 | ||||
-rw-r--r-- | webkit/glue/bookmarklet_unittest.cc | 76 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell.gypi | 1 |
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', |