| 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", | 229 // Note: no "id" here because this test method is used for hosted apps, |
| 230 // which do have access to runtime.id. |
| 230 }; | 231 }; |
| 231 | 232 |
| 232 // Turn the array into a JS array, which effectively gets eval()ed. | 233 // Turn the array into a JS array, which effectively gets eval()ed. |
| 233 std::string as_js_array; | 234 std::string as_js_array; |
| 234 for (size_t i = 0; i < arraysize(non_messaging_apis); ++i) { | 235 for (size_t i = 0; i < arraysize(non_messaging_apis); ++i) { |
| 235 as_js_array += as_js_array.empty() ? "[" : ","; | 236 as_js_array += as_js_array.empty() ? "[" : ","; |
| 236 as_js_array += base::StringPrintf("'%s'", non_messaging_apis[i]); | 237 as_js_array += base::StringPrintf("'%s'", non_messaging_apis[i]); |
| 237 } | 238 } |
| 238 as_js_array += "]"; | 239 as_js_array += "]"; |
| 239 | 240 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 common_manifest())); | 307 common_manifest())); |
| 307 CHECK(extension); | 308 CHECK(extension); |
| 308 return extension; | 309 return extension; |
| 309 } | 310 } |
| 310 | 311 |
| 311 const Extension* LoadChromiumConnectableExtensionWithTlsChannelId() { | 312 const Extension* LoadChromiumConnectableExtensionWithTlsChannelId() { |
| 312 return LoadExtensionIntoDir(&tls_channel_id_connectable_dir_, | 313 return LoadExtensionIntoDir(&tls_channel_id_connectable_dir_, |
| 313 connectable_with_tls_channel_id_manifest()); | 314 connectable_with_tls_channel_id_manifest()); |
| 314 } | 315 } |
| 315 | 316 |
| 317 const Extension* LoadChromiumHostedApp() { |
| 318 const Extension* hosted_app = |
| 319 LoadExtensionIntoDir(&hosted_app_dir_, base::StringPrintf( |
| 320 "{" |
| 321 " \"name\": \"chromium_hosted_app\"," |
| 322 " \"version\": \"1.0\"," |
| 323 " \"manifest_version\": 2," |
| 324 " \"app\": {" |
| 325 " \"urls\": [\"%s\"]," |
| 326 " \"launch\": {" |
| 327 " \"web_url\": \"%s\"" |
| 328 " }\n" |
| 329 " }\n" |
| 330 "}", chromium_org_url().spec().c_str(), |
| 331 chromium_org_url().spec().c_str())); |
| 332 CHECK(hosted_app); |
| 333 return hosted_app; |
| 334 } |
| 335 |
| 316 void InitializeTestServer() { | 336 void InitializeTestServer() { |
| 317 base::FilePath test_data; | 337 base::FilePath test_data; |
| 318 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data)); | 338 EXPECT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data)); |
| 319 embedded_test_server()->ServeFilesFromDirectory(test_data.AppendASCII( | 339 embedded_test_server()->ServeFilesFromDirectory(test_data.AppendASCII( |
| 320 "extensions/api_test/messaging/externally_connectable/sites")); | 340 "extensions/api_test/messaging/externally_connectable/sites")); |
| 321 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 341 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
| 322 host_resolver()->AddRule("*", embedded_test_server()->base_url().host()); | 342 host_resolver()->AddRule("*", embedded_test_server()->base_url().host()); |
| 323 } | 343 } |
| 324 | 344 |
| 325 const char* close_background_message() { | 345 const char* close_background_message() { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 CHECK(content::ExecuteScriptAndExtractString( | 405 CHECK(content::ExecuteScriptAndExtractString( |
| 386 browser()->tab_strip_model()->GetActiveWebContents(), | 406 browser()->tab_strip_model()->GetActiveWebContents(), |
| 387 base::StringPrintf("assertions.%s(%s)", method, args.c_str()), | 407 base::StringPrintf("assertions.%s(%s)", method, args.c_str()), |
| 388 &result)); | 408 &result)); |
| 389 return result; | 409 return result; |
| 390 } | 410 } |
| 391 | 411 |
| 392 TestExtensionDir web_connectable_dir_; | 412 TestExtensionDir web_connectable_dir_; |
| 393 TestExtensionDir not_connectable_dir_; | 413 TestExtensionDir not_connectable_dir_; |
| 394 TestExtensionDir tls_channel_id_connectable_dir_; | 414 TestExtensionDir tls_channel_id_connectable_dir_; |
| 415 TestExtensionDir hosted_app_dir_; |
| 395 }; | 416 }; |
| 396 | 417 |
| 397 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, NotInstalled) { | 418 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, NotInstalled) { |
| 398 InitializeTestServer(); | 419 InitializeTestServer(); |
| 399 | 420 |
| 400 const char kFakeId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 421 const char kFakeId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
| 401 | 422 |
| 402 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); | 423 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); |
| 403 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages(kFakeId)); | 424 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages(kFakeId)); |
| 404 EXPECT_FALSE(AreAnyNonWebApisDefined()); | 425 EXPECT_FALSE(AreAnyNonWebApisDefined()); |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 889 EXPECT_EQ("true", | 910 EXPECT_EQ("true", |
| 890 ExecuteScriptInBackgroundPage(sender->id(), | 911 ExecuteScriptInBackgroundPage(sender->id(), |
| 891 base::StringPrintf( | 912 base::StringPrintf( |
| 892 "chrome.test.runWithUserGesture(function() {\n" | 913 "chrome.test.runWithUserGesture(function() {\n" |
| 893 " chrome.runtime.sendMessage('%s', {}, function(response) {\n" | 914 " chrome.runtime.sendMessage('%s', {}, function(response) {\n" |
| 894 " window.domAutomationController.send('' + response.result);\n" | 915 " window.domAutomationController.send('' + response.result);\n" |
| 895 " });\n" | 916 " });\n" |
| 896 "});", receiver->id().c_str()))); | 917 "});", receiver->id().c_str()))); |
| 897 } | 918 } |
| 898 | 919 |
| 920 // Tests that a hosted app on a connectable site doesn't interfere with the |
| 921 // connectability of that site. |
| 922 IN_PROC_BROWSER_TEST_F(ExternallyConnectableMessagingTest, HostedAppOnWebsite) { |
| 923 InitializeTestServer(); |
| 924 |
| 925 LoadChromiumHostedApp(); |
| 926 |
| 927 // The presence of the hosted app shouldn't give the ability to send messages. |
| 928 ui_test_utils::NavigateToURL(browser(), chromium_org_url()); |
| 929 EXPECT_EQ(NAMESPACE_NOT_DEFINED, CanConnectAndSendMessages("")); |
| 930 EXPECT_FALSE(AreAnyNonWebApisDefined()); |
| 931 |
| 932 // Once a connectable extension is installed, it should. |
| 933 const Extension* extension = LoadChromiumConnectableExtension(); |
| 934 EXPECT_EQ(OK, CanConnectAndSendMessages(extension->id())); |
| 935 EXPECT_FALSE(AreAnyNonWebApisDefined()); |
| 936 } |
| 937 |
| 899 } // namespace | 938 } // namespace |
| 900 }; // namespace extensions | 939 }; // namespace extensions |
| OLD | NEW |