OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/files/file_path.h" | 5 #include "base/files/file_path.h" |
6 #include "base/files/file_util.h" | 6 #include "base/files/file_util.h" |
| 7 #include "base/memory/ptr_util.h" |
7 #include "base/path_service.h" | 8 #include "base/path_service.h" |
8 #include "base/values.h" | 9 #include "base/values.h" |
9 #include "build/build_config.h" | 10 #include "build/build_config.h" |
10 #include "chrome/browser/extensions/extension_apitest.h" | 11 #include "chrome/browser/extensions/extension_apitest.h" |
11 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 13 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
13 #include "chrome/common/chrome_paths.h" | 14 #include "chrome/common/chrome_paths.h" |
14 #include "chrome/test/base/ui_test_utils.h" | 15 #include "chrome/test/base/ui_test_utils.h" |
15 #include "content/public/browser/render_frame_host.h" | 16 #include "content/public/browser/render_frame_host.h" |
16 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 ASSERT_TRUE(RunTestOnChromeExtensions("sanity_check_available_apis.js")); | 131 ASSERT_TRUE(RunTestOnChromeExtensions("sanity_check_available_apis.js")); |
131 } | 132 } |
132 | 133 |
133 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, SanityCheckUnavailableAPIs) { | 134 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, SanityCheckUnavailableAPIs) { |
134 ASSERT_TRUE(RunTestOnAbout("sanity_check_available_apis.js")); | 135 ASSERT_TRUE(RunTestOnAbout("sanity_check_available_apis.js")); |
135 } | 136 } |
136 | 137 |
137 // Tests chrome.test.sendMessage, which exercises WebUI making a | 138 // Tests chrome.test.sendMessage, which exercises WebUI making a |
138 // function call and receiving a response. | 139 // function call and receiving a response. |
139 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, SendMessage) { | 140 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, SendMessage) { |
140 scoped_ptr<ExtensionTestMessageListener> listener( | 141 std::unique_ptr<ExtensionTestMessageListener> listener( |
141 new ExtensionTestMessageListener("ping", true)); | 142 new ExtensionTestMessageListener("ping", true)); |
142 | 143 |
143 ASSERT_TRUE(RunTestOnExtensionsFrame("send_message.js")); | 144 ASSERT_TRUE(RunTestOnExtensionsFrame("send_message.js")); |
144 | 145 |
145 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 146 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
146 listener->Reply("pong"); | 147 listener->Reply("pong"); |
147 | 148 |
148 listener.reset(new ExtensionTestMessageListener(false)); | 149 listener.reset(new ExtensionTestMessageListener(false)); |
149 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 150 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
150 EXPECT_EQ("true", listener->message()); | 151 EXPECT_EQ("true", listener->message()); |
151 } | 152 } |
152 | 153 |
153 // Tests chrome.runtime.onMessage, which exercises WebUI registering and | 154 // Tests chrome.runtime.onMessage, which exercises WebUI registering and |
154 // receiving an event. | 155 // receiving an event. |
155 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, OnMessage) { | 156 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, OnMessage) { |
156 ASSERT_TRUE(RunTestOnExtensionsFrame("on_message.js")); | 157 ASSERT_TRUE(RunTestOnExtensionsFrame("on_message.js")); |
157 | 158 |
158 OnMessage::Info info; | 159 OnMessage::Info info; |
159 info.data = "hi"; | 160 info.data = "hi"; |
160 info.last_message = true; | 161 info.last_message = true; |
161 EventRouter::Get(profile())->BroadcastEvent(make_scoped_ptr( | 162 EventRouter::Get(profile())->BroadcastEvent(base::WrapUnique( |
162 new Event(events::RUNTIME_ON_MESSAGE, OnMessage::kEventName, | 163 new Event(events::RUNTIME_ON_MESSAGE, OnMessage::kEventName, |
163 OnMessage::Create(info)))); | 164 OnMessage::Create(info)))); |
164 | 165 |
165 scoped_ptr<ExtensionTestMessageListener> listener( | 166 std::unique_ptr<ExtensionTestMessageListener> listener( |
166 new ExtensionTestMessageListener(false)); | 167 new ExtensionTestMessageListener(false)); |
167 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 168 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
168 EXPECT_EQ("true", listener->message()); | 169 EXPECT_EQ("true", listener->message()); |
169 } | 170 } |
170 | 171 |
171 // Tests chrome.runtime.lastError, which exercises WebUI accessing a property | 172 // Tests chrome.runtime.lastError, which exercises WebUI accessing a property |
172 // on an API which it doesn't actually have access to. A bindings test really. | 173 // on an API which it doesn't actually have access to. A bindings test really. |
173 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, RuntimeLastError) { | 174 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, RuntimeLastError) { |
174 scoped_ptr<ExtensionTestMessageListener> listener( | 175 std::unique_ptr<ExtensionTestMessageListener> listener( |
175 new ExtensionTestMessageListener("ping", true)); | 176 new ExtensionTestMessageListener("ping", true)); |
176 | 177 |
177 ASSERT_TRUE(RunTestOnExtensionsFrame("runtime_last_error.js")); | 178 ASSERT_TRUE(RunTestOnExtensionsFrame("runtime_last_error.js")); |
178 | 179 |
179 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 180 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
180 listener->ReplyWithError("unknown host"); | 181 listener->ReplyWithError("unknown host"); |
181 | 182 |
182 listener.reset(new ExtensionTestMessageListener(false)); | 183 listener.reset(new ExtensionTestMessageListener(false)); |
183 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 184 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
184 EXPECT_EQ("true", listener->message()); | 185 EXPECT_EQ("true", listener->message()); |
185 } | 186 } |
186 | 187 |
187 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, CanEmbedExtensionOptions) { | 188 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, CanEmbedExtensionOptions) { |
188 scoped_ptr<ExtensionTestMessageListener> listener( | 189 std::unique_ptr<ExtensionTestMessageListener> listener( |
189 new ExtensionTestMessageListener("ready", true)); | 190 new ExtensionTestMessageListener("ready", true)); |
190 | 191 |
191 const Extension* extension = | 192 const Extension* extension = |
192 LoadExtension(test_data_dir_.AppendASCII("extension_options") | 193 LoadExtension(test_data_dir_.AppendASCII("extension_options") |
193 .AppendASCII("embed_self")); | 194 .AppendASCII("embed_self")); |
194 ASSERT_TRUE(extension); | 195 ASSERT_TRUE(extension); |
195 | 196 |
196 ASSERT_TRUE(RunTestOnExtensionsFrame("can_embed_extension_options.js")); | 197 ASSERT_TRUE(RunTestOnExtensionsFrame("can_embed_extension_options.js")); |
197 | 198 |
198 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 199 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
199 listener->Reply(extension->id()); | 200 listener->Reply(extension->id()); |
200 listener.reset(new ExtensionTestMessageListener("load", false)); | 201 listener.reset(new ExtensionTestMessageListener("load", false)); |
201 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 202 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
202 } | 203 } |
203 | 204 |
204 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, ReceivesExtensionOptionsOnClose) { | 205 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, ReceivesExtensionOptionsOnClose) { |
205 scoped_ptr<ExtensionTestMessageListener> listener( | 206 std::unique_ptr<ExtensionTestMessageListener> listener( |
206 new ExtensionTestMessageListener("ready", true)); | 207 new ExtensionTestMessageListener("ready", true)); |
207 | 208 |
208 const Extension* extension = | 209 const Extension* extension = |
209 InstallExtension(test_data_dir_.AppendASCII("extension_options") | 210 InstallExtension(test_data_dir_.AppendASCII("extension_options") |
210 .AppendASCII("close_self"), 1); | 211 .AppendASCII("close_self"), 1); |
211 ASSERT_TRUE(extension); | 212 ASSERT_TRUE(extension); |
212 | 213 |
213 ASSERT_TRUE( | 214 ASSERT_TRUE( |
214 RunTestOnExtensionsFrame("receives_extension_options_on_close.js")); | 215 RunTestOnExtensionsFrame("receives_extension_options_on_close.js")); |
215 | 216 |
216 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 217 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
217 listener->Reply(extension->id()); | 218 listener->Reply(extension->id()); |
218 listener.reset(new ExtensionTestMessageListener("onclose received", false)); | 219 listener.reset(new ExtensionTestMessageListener("onclose received", false)); |
219 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 220 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
220 } | 221 } |
221 | 222 |
222 // Regression test for crbug.com/414526. | 223 // Regression test for crbug.com/414526. |
223 // | 224 // |
224 // Same setup as CanEmbedExtensionOptions but disable the extension before | 225 // Same setup as CanEmbedExtensionOptions but disable the extension before |
225 // embedding. | 226 // embedding. |
226 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, EmbedDisabledExtension) { | 227 IN_PROC_BROWSER_TEST_F(ExtensionWebUITest, EmbedDisabledExtension) { |
227 scoped_ptr<ExtensionTestMessageListener> listener( | 228 std::unique_ptr<ExtensionTestMessageListener> listener( |
228 new ExtensionTestMessageListener("ready", true)); | 229 new ExtensionTestMessageListener("ready", true)); |
229 | 230 |
230 std::string extension_id; | 231 std::string extension_id; |
231 { | 232 { |
232 const Extension* extension = | 233 const Extension* extension = |
233 LoadExtension(test_data_dir_.AppendASCII("extension_options") | 234 LoadExtension(test_data_dir_.AppendASCII("extension_options") |
234 .AppendASCII("embed_self")); | 235 .AppendASCII("embed_self")); |
235 ASSERT_TRUE(extension); | 236 ASSERT_TRUE(extension); |
236 extension_id = extension->id(); | 237 extension_id = extension->id(); |
237 DisableExtension(extension_id); | 238 DisableExtension(extension_id); |
238 } | 239 } |
239 | 240 |
240 ASSERT_TRUE(RunTestOnExtensionsFrame("can_embed_extension_options.js")); | 241 ASSERT_TRUE(RunTestOnExtensionsFrame("can_embed_extension_options.js")); |
241 | 242 |
242 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 243 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
243 listener->Reply(extension_id); | 244 listener->Reply(extension_id); |
244 listener.reset(new ExtensionTestMessageListener("createfailed", false)); | 245 listener.reset(new ExtensionTestMessageListener("createfailed", false)); |
245 ASSERT_TRUE(listener->WaitUntilSatisfied()); | 246 ASSERT_TRUE(listener->WaitUntilSatisfied()); |
246 } | 247 } |
247 | 248 |
248 #endif | 249 #endif |
249 | 250 |
250 } // namespace | 251 } // namespace |
251 | 252 |
252 } // namespace extensions | 253 } // namespace extensions |
OLD | NEW |