Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(378)

Side by Side Diff: chrome/browser/extensions/extension_messages_apitest.cc

Issue 114803007: Register bindings for blessed web contexts (aka hosted app contexts) by hand (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, small change Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | chrome/renderer/extensions/chrome_v8_context.cc » ('j') | chrome/renderer/extensions/chrome_v8_context.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698