diff options
author | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-17 18:55:25 +0000 |
---|---|---|
committer | tony@chromium.org <tony@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-17 18:55:25 +0000 |
commit | 202290335c73af26cfcbfa00706d12ecb5bdb61a (patch) | |
tree | 28940ffdbfdaa64611257c20d832889d5300a850 /content/browser/bookmarklet_browsertest.cc | |
parent | e5b746b0d924b7ae2ed037e76426d47bc4278d46 (diff) | |
download | chromium_src-202290335c73af26cfcbfa00706d12ecb5bdb61a.zip chromium_src-202290335c73af26cfcbfa00706d12ecb5bdb61a.tar.gz chromium_src-202290335c73af26cfcbfa00706d12ecb5bdb61a.tar.bz2 |
Convert test_shell_tests BookmarkletTest.* into a content_browsertest.
Move from using TestShell to content::Shell.
BUG=126514
Review URL: https://chromiumcodereview.appspot.com/10913286
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157155 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/bookmarklet_browsertest.cc')
-rw-r--r-- | content/browser/bookmarklet_browsertest.cc | 75 |
1 files changed, 75 insertions, 0 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 + |