Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/browser/extensions/extension_dom_clipboard_apitest.cc

Issue 495213002: Add tests to make sure copy/paste in an about:blank iframe in a hosted app works. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 #include "chrome/browser/extensions/extension_apitest.h" 6 #include "chrome/browser/extensions/extension_apitest.h"
7 #include "chrome/browser/ui/browser.h" 7 #include "chrome/browser/ui/browser.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h" 8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/test/base/ui_test_utils.h" 9 #include "chrome/test/base/ui_test_utils.h"
10 #include "content/public/browser/web_contents.h" 10 #include "content/public/browser/web_contents.h"
11 #include "content/public/test/browser_test_utils.h" 11 #include "content/public/test/browser_test_utils.h"
12 #include "net/dns/mock_host_resolver.h" 12 #include "net/dns/mock_host_resolver.h"
13 #include "net/test/embedded_test_server/embedded_test_server.h" 13 #include "net/test/embedded_test_server/embedded_test_server.h"
14 #include "url/gurl.h" 14 #include "url/gurl.h"
15 15
16 namespace { 16 namespace {
17 17
18 class ClipboardApiTest : public ExtensionApiTest { 18 class ClipboardApiTest : public ExtensionApiTest {
19 public: 19 public:
20 bool LoadHostedApp(const std::string& app_name, 20 bool LoadHostedApp(const std::string& app_name,
21 const std::string& launch_page); 21 const std::string& launch_page);
22 bool ExecuteCopyInSelectedTab(bool* result); 22 bool ExecuteCopyInSelectedTab(bool* result);
23 bool ExecutePasteInSelectedTab(bool* result); 23 bool ExecutePasteInSelectedTab(bool* result);
24 bool ExecuteCopyInIframeInSelectedTab(bool* result);
25 bool ExecutePasteInIframeInSelectedTab(bool* result);
24 26
25 private: 27 private:
26 bool ExecuteScriptInSelectedTab(const std::string& script, bool* result); 28 bool ExecuteScriptInSelectedTab(const std::string& script, bool* result);
27 }; 29 };
28 30
29 bool ClipboardApiTest::LoadHostedApp(const std::string& app_name, 31 bool ClipboardApiTest::LoadHostedApp(const std::string& app_name,
30 const std::string& launch_page) { 32 const std::string& launch_page) {
31 host_resolver()->AddRule("*", "127.0.0.1"); 33 host_resolver()->AddRule("*", "127.0.0.1");
32 34
33 if (!StartEmbeddedTestServer()) { 35 if (!StartEmbeddedTestServer()) {
(...skipping 26 matching lines...) Expand all
60 "window.domAutomationController.send(document.execCommand('copy'))"; 62 "window.domAutomationController.send(document.execCommand('copy'))";
61 return ExecuteScriptInSelectedTab(kScript, result); 63 return ExecuteScriptInSelectedTab(kScript, result);
62 } 64 }
63 65
64 bool ClipboardApiTest::ExecutePasteInSelectedTab(bool* result) { 66 bool ClipboardApiTest::ExecutePasteInSelectedTab(bool* result) {
65 const char kScript[] = 67 const char kScript[] =
66 "window.domAutomationController.send(document.execCommand('paste'))"; 68 "window.domAutomationController.send(document.execCommand('paste'))";
67 return ExecuteScriptInSelectedTab(kScript, result); 69 return ExecuteScriptInSelectedTab(kScript, result);
68 } 70 }
69 71
72 bool ClipboardApiTest::ExecuteCopyInIframeInSelectedTab(bool* result) {
73 const char kScript[] =
74 "var ifr = document.createElement('iframe');\n"
75 "document.body.appendChild(ifr);\n"
76 "window.domAutomationController.send("
77 "ifr.contentDocument.execCommand('copy'));";
78 return ExecuteScriptInSelectedTab(kScript, result);
79 }
80
81 bool ClipboardApiTest::ExecutePasteInIframeInSelectedTab(bool* result) {
82 const char kScript[] =
83 "var ifr = document.createElement('iframe');\n"
84 "document.body.appendChild(ifr);\n"
85 "window.domAutomationController.send("
86 "ifr.contentDocument.execCommand('paste'));";
87 return ExecuteScriptInSelectedTab(kScript, result);
88 }
89
70 bool ClipboardApiTest::ExecuteScriptInSelectedTab(const std::string& script, 90 bool ClipboardApiTest::ExecuteScriptInSelectedTab(const std::string& script,
71 bool* result) { 91 bool* result) {
72 if (!content::ExecuteScriptAndExtractBool( 92 if (!content::ExecuteScriptAndExtractBool(
73 browser()->tab_strip_model()->GetActiveWebContents(), 93 browser()->tab_strip_model()->GetActiveWebContents(),
74 script, 94 script,
75 result)) { 95 result)) {
76 message_ = "Failed to execute script in selected tab."; 96 message_ = "Failed to execute script in selected tab.";
77 return false; 97 return false;
78 } 98 }
79 return true; 99 return true;
not at google - send to devlin 2014/08/21 20:28:11 We could save a whole bunch of lines of code here
Marijn Kruisselbrink 2014/08/21 20:50:20 Done (except with CHECK instead of ASSERT_TRUE as
80 } 100 }
81 101
82 } // namespace 102 } // namespace
83 103
84 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, Extension) { 104 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, Extension) {
85 ASSERT_TRUE(StartEmbeddedTestServer()); 105 ASSERT_TRUE(StartEmbeddedTestServer());
86 ASSERT_TRUE(RunExtensionTest("clipboard/extension")) << message_; 106 ASSERT_TRUE(RunExtensionTest("clipboard/extension")) << message_;
87 } 107 }
88 108
89 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, ExtensionNoPermission) { 109 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, ExtensionNoPermission) {
90 ASSERT_TRUE(StartEmbeddedTestServer()); 110 ASSERT_TRUE(StartEmbeddedTestServer());
91 ASSERT_TRUE(RunExtensionTest("clipboard/extension_no_permission")) 111 ASSERT_TRUE(RunExtensionTest("clipboard/extension_no_permission"))
92 << message_; 112 << message_;
93 } 113 }
94 114
95 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, HostedApp) { 115 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, HostedApp) {
96 ASSERT_TRUE(LoadHostedApp("hosted_app", "main.html")) << message_; 116 ASSERT_TRUE(LoadHostedApp("hosted_app", "main.html")) << message_;
97 117
98 bool result = false; 118 bool result = false;
99 ASSERT_TRUE(ExecuteCopyInSelectedTab(&result)) << message_; 119 ASSERT_TRUE(ExecuteCopyInSelectedTab(&result)) << message_;
100 EXPECT_TRUE(result); 120 EXPECT_TRUE(result);
101 ASSERT_TRUE(ExecutePasteInSelectedTab(&result)) << message_; 121 ASSERT_TRUE(ExecutePasteInSelectedTab(&result)) << message_;
102 EXPECT_TRUE(result); 122 EXPECT_TRUE(result);
123 ASSERT_TRUE(ExecuteCopyInIframeInSelectedTab(&result)) << message_;
124 EXPECT_TRUE(result);
125 ASSERT_TRUE(ExecutePasteInIframeInSelectedTab(&result)) << message_;
126 EXPECT_TRUE(result);
103 } 127 }
104 128
105 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, HostedAppNoPermission) { 129 IN_PROC_BROWSER_TEST_F(ClipboardApiTest, HostedAppNoPermission) {
106 ASSERT_TRUE(LoadHostedApp("hosted_app_no_permission", "main.html")) 130 ASSERT_TRUE(LoadHostedApp("hosted_app_no_permission", "main.html"))
107 << message_; 131 << message_;
108 132
109 bool result = false; 133 bool result = false;
110 ASSERT_TRUE(ExecuteCopyInSelectedTab(&result)) << message_; 134 ASSERT_TRUE(ExecuteCopyInSelectedTab(&result)) << message_;
111 EXPECT_FALSE(result); 135 EXPECT_FALSE(result);
112 ASSERT_TRUE(ExecutePasteInSelectedTab(&result)) << message_; 136 ASSERT_TRUE(ExecutePasteInSelectedTab(&result)) << message_;
113 EXPECT_FALSE(result); 137 EXPECT_FALSE(result);
138 ASSERT_TRUE(ExecuteCopyInIframeInSelectedTab(&result)) << message_;
139 EXPECT_FALSE(result);
140 ASSERT_TRUE(ExecutePasteInIframeInSelectedTab(&result)) << message_;
141 EXPECT_FALSE(result);
114 } 142 }
115 143
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698