OLD | NEW |
---|---|
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/base64.h" | 5 #include "base/base64.h" |
6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
219 "onInstalled", | 219 "onInstalled", |
220 "onSuspend", | 220 "onSuspend", |
221 "onSuspendCanceled", | 221 "onSuspendCanceled", |
222 "onUpdateAvailable", | 222 "onUpdateAvailable", |
223 "onBrowserUpdateAvailable", | 223 "onBrowserUpdateAvailable", |
224 "onConnect", | 224 "onConnect", |
225 "onConnectExternal", | 225 "onConnectExternal", |
226 "onMessage", | 226 "onMessage", |
227 "onMessageExternal", | 227 "onMessageExternal", |
228 "onRestartRequired", | 228 "onRestartRequired", |
229 "id", | |
Jeffrey Yasskin
2014/01/08 23:42:03
Why is "id" dropping out of this list?
not at google - send to devlin
2014/01/09 00:56:16
runtime.id is available to hosted apps, which fail
Jeffrey Yasskin
2014/01/09 01:30:00
Please update the comment to admit that, so we're
not at google - send to devlin
2014/01/09 18:06:48
Done.
| |
230 }; | 229 }; |
231 | 230 |
232 // Turn the array into a JS array, which effectively gets eval()ed. | 231 // Turn the array into a JS array, which effectively gets eval()ed. |
233 std::string as_js_array; | 232 std::string as_js_array; |
234 for (size_t i = 0; i < arraysize(non_messaging_apis); ++i) { | 233 for (size_t i = 0; i < arraysize(non_messaging_apis); ++i) { |
235 as_js_array += as_js_array.empty() ? "[" : ","; | 234 as_js_array += as_js_array.empty() ? "[" : ","; |
236 as_js_array += base::StringPrintf("'%s'", non_messaging_apis[i]); | 235 as_js_array += base::StringPrintf("'%s'", non_messaging_apis[i]); |
237 } | 236 } |
238 as_js_array += "]"; | 237 as_js_array += "]"; |
239 | 238 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
306 common_manifest())); | 305 common_manifest())); |
307 CHECK(extension); | 306 CHECK(extension); |
308 return extension; | 307 return extension; |
309 } | 308 } |
310 | 309 |
311 const Extension* LoadChromiumConnectableExtensionWithTlsChannelId() { | 310 const Extension* LoadChromiumConnectableExtensionWithTlsChannelId() { |
312 return LoadExtensionIntoDir(&tls_channel_id_connectable_dir_, | 311 return LoadExtensionIntoDir(&tls_channel_id_connectable_dir_, |
313 connectable_with_tls_channel_id_manifest()); | 312 connectable_with_tls_channel_id_manifest()); |
314 } | 313 } |
315 | 314 |
315 const Extension* LoadChromiumHostedApp() { | |
316 const Extension* hosted_app = | |
317 LoadExtensionIntoDir(&hosted_app_dir_, base::StringPrintf( | |
318 "{" | |
319 " \"name\": \"chromium_hosted_app\"," | |
320 " \"version\": \"1.0\"," | |
321 " \"manifest_version\": 2," | |
322 " \"app\": {" | |
323 " \"urls\": [\"%s\"]," | |
324 " \"launch\": {" | |
325 " \"web_url\": \"%s\"" | |
326 " }\n" | |
327 " }\n" | |
328 "}", chromium_org_url().spec().c_str(), | |
329 chromium_org_url().spec().c_str())); | |
330 CHECK(hosted_app); | |
331 return hosted_app; | |
332 } | |
333 | |
316 void InitializeTestServer() { | 334 void InitializeTestServer() { |
317 base::FilePath test_data; | 335 base::FilePath test_data; |
318 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data)); | 336 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data)); |
319 embedded_test_server()->ServeFilesFromDirectory(test_data.AppendASCII( | 337 embedded_test_server()->ServeFilesFromDirectory(test_data.AppendASCII( |
320 "extensions/api_test/messaging/externally_connectable/sites")); | 338 "extensions/api_test/messaging/externally_connectable/sites")); |
321 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 339 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
322 host_resolver()->AddRule("*", embedded_test_server()->base_url().host()); | 340 host_resolver()->AddRule("*", embedded_test_server()->base_url().host()); |
323 } | 341 } |
324 | 342 |
325 const char* close_background_message() { | 343 const char* close_background_message() { |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
385 CHECK(content::ExecuteScriptAndExtractString( | 403 CHECK(content::ExecuteScriptAndExtractString( |
386 browser()->tab_strip_model()->GetActiveWebContents(), | 404 browser()->tab_strip_model()->GetActiveWebContents(), |
387 base::StringPrintf("assertions.%s(%s)", method, args.c_str()), | 405 base::StringPrintf("assertions.%s(%s)", method, args.c_str()), |
388 &result)); | 406 &result)); |
389 return result; | 407 return result; |
390 } | 408 } |
391 | 409 |
392 TestExtensionDir web_connectable_dir_; | 410 TestExtensionDir web_connectable_dir_; |
393 TestExtensionDir not_connectable_dir_; | 411 TestExtensionDir not_connectable_dir_; |
394 TestExtensionDir tls_channel_id_connectable_dir_; | 412 TestExtensionDir tls_channel_id_connectable_dir_; |
413 TestExtensionDir hosted_app_dir_; | |
395 }; | 414 }; |
396 | 415 |
397 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, NotInstalled) { | 416 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, NotInstalled) { |
398 InitializeTestServer(); | 417 InitializeTestServer(); |
399 | 418 |
400 const char kFakeId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 419 const char kFakeId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
401 | 420 |
402 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); | 421 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); |
403 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages(kFakeId)); | 422 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages(kFakeId)); |
404 EXPECT_FALSE(AreAnyNonWebApisDefined()); | 423 EXPECT_FALSE(AreAnyNonWebApisDefined()); |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
889 EXPECT_EQ("true", | 908 EXPECT_EQ("true", |
890 ExecuteScriptInBackgroundPage(sender->id(), | 909 ExecuteScriptInBackgroundPage(sender->id(), |
891 base::StringPrintf( | 910 base::StringPrintf( |
892 "chrome.test.runWithUserGesture(function() {\n" | 911 "chrome.test.runWithUserGesture(function() {\n" |
893 " chrome.runtime.sendMessage('%s', {}, function(response) {\n" | 912 " chrome.runtime.sendMessage('%s', {}, function(response) {\n" |
894 " window.domAutomationController.send('' + response.result);\n" | 913 " window.domAutomationController.send('' + response.result);\n" |
895 " });\n" | 914 " });\n" |
896 "});", receiver->id().c_str()))); | 915 "});", receiver->id().c_str()))); |
897 } | 916 } |
898 | 917 |
918 // Tests that a hosted app on a connectable site doesn't interfere with the | |
919 // connectability of that site. | |
920 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, HostedAppOnWebsite) { | |
921 InitializeTestServer(); | |
922 | |
923 LoadChromiumHostedApp(); | |
924 | |
925 // The presence of the hosted app shouldn't give the ability to send messages. | |
926 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); | |
927 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages("")); | |
928 EXPECT_FALSE(AreAnyNonWebApisDefined()); | |
929 | |
930 // Once a connectable extension is installed, it should. | |
931 const Extension* extension = LoadChromiumConnectableExtension(); | |
932 EXPECT_EQ(OK, CanConnectAndSendMessages(extension->id())); | |
933 EXPECT_FALSE(AreAnyNonWebApisDefined()); | |
934 } | |
935 | |
899 } // namespace | 936 } // namespace |
900 }; // namespace extensions | 937 }; // namespace extensions |
OLD | NEW |