Chromium Code Reviews| 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 |