| 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 |