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 "extensions/renderer/dispatcher.h" | 5 #include "extensions/renderer/dispatcher.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/alias.h" | 10 #include "base/debug/alias.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
13 #include "base/metrics/user_metrics_action.h" | 13 #include "base/metrics/user_metrics_action.h" |
14 #include "base/strings/string_piece.h" | 14 #include "base/strings/string_piece.h" |
15 #include "base/strings/string_split.h" | 15 #include "base/strings/string_split.h" |
16 #include "base/strings/string_util.h" | 16 #include "base/strings/string_util.h" |
17 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
18 #include "base/time/time.h" | 18 #include "base/time/time.h" |
19 #include "base/values.h" | 19 #include "base/values.h" |
20 #include "content/grit/content_resources.h" | 20 #include "content/grit/content_resources.h" |
21 #include "content/public/child/v8_value_converter.h" | 21 #include "content/public/child/v8_value_converter.h" |
| 22 #include "content/public/common/browser_plugin_guest_mode.h" |
22 #include "content/public/common/content_switches.h" | 23 #include "content/public/common/content_switches.h" |
23 #include "content/public/common/url_constants.h" | 24 #include "content/public/common/url_constants.h" |
24 #include "content/public/renderer/render_frame.h" | 25 #include "content/public/renderer/render_frame.h" |
25 #include "content/public/renderer/render_thread.h" | 26 #include "content/public/renderer/render_thread.h" |
26 #include "extensions/common/api/messaging/message.h" | 27 #include "extensions/common/api/messaging/message.h" |
27 #include "extensions/common/constants.h" | 28 #include "extensions/common/constants.h" |
28 #include "extensions/common/extension_api.h" | 29 #include "extensions/common/extension_api.h" |
29 #include "extensions/common/extension_messages.h" | 30 #include "extensions/common/extension_messages.h" |
30 #include "extensions/common/extension_urls.h" | 31 #include "extensions/common/extension_urls.h" |
31 #include "extensions/common/feature_switch.h" | 32 #include "extensions/common/feature_switch.h" |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 "extensionViewInternal", IDR_EXTENSION_VIEW_INTERNAL_CUSTOM_BINDINGS_JS)); | 466 "extensionViewInternal", IDR_EXTENSION_VIEW_INTERNAL_CUSTOM_BINDINGS_JS)); |
466 resources.push_back(std::make_pair("guestView", IDR_GUEST_VIEW_JS)); | 467 resources.push_back(std::make_pair("guestView", IDR_GUEST_VIEW_JS)); |
467 resources.push_back(std::make_pair("guestViewAttributes", | 468 resources.push_back(std::make_pair("guestViewAttributes", |
468 IDR_GUEST_VIEW_ATTRIBUTES_JS)); | 469 IDR_GUEST_VIEW_ATTRIBUTES_JS)); |
469 resources.push_back(std::make_pair("guestViewContainer", | 470 resources.push_back(std::make_pair("guestViewContainer", |
470 IDR_GUEST_VIEW_CONTAINER_JS)); | 471 IDR_GUEST_VIEW_CONTAINER_JS)); |
471 resources.push_back(std::make_pair("guestViewDeny", IDR_GUEST_VIEW_DENY_JS)); | 472 resources.push_back(std::make_pair("guestViewDeny", IDR_GUEST_VIEW_DENY_JS)); |
472 resources.push_back(std::make_pair("guestViewEvents", | 473 resources.push_back(std::make_pair("guestViewEvents", |
473 IDR_GUEST_VIEW_EVENTS_JS)); | 474 IDR_GUEST_VIEW_EVENTS_JS)); |
474 | 475 |
475 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 476 if (content::BrowserPluginGuestMode::UseCrossProcessFramesForGuests()) { |
476 ::switches::kSitePerProcess)) { | |
477 resources.push_back(std::make_pair("guestViewIframe", | 477 resources.push_back(std::make_pair("guestViewIframe", |
478 IDR_GUEST_VIEW_IFRAME_JS)); | 478 IDR_GUEST_VIEW_IFRAME_JS)); |
479 resources.push_back(std::make_pair("guestViewIframeContainer", | 479 resources.push_back(std::make_pair("guestViewIframeContainer", |
480 IDR_GUEST_VIEW_IFRAME_CONTAINER_JS)); | 480 IDR_GUEST_VIEW_IFRAME_CONTAINER_JS)); |
481 } | 481 } |
482 | 482 |
483 resources.push_back(std::make_pair("imageUtil", IDR_IMAGE_UTIL_JS)); | 483 resources.push_back(std::make_pair("imageUtil", IDR_IMAGE_UTIL_JS)); |
484 resources.push_back(std::make_pair("json_schema", IDR_JSON_SCHEMA_JS)); | 484 resources.push_back(std::make_pair("json_schema", IDR_JSON_SCHEMA_JS)); |
485 resources.push_back(std::make_pair("lastError", IDR_LAST_ERROR_JS)); | 485 resources.push_back(std::make_pair("lastError", IDR_LAST_ERROR_JS)); |
486 resources.push_back(std::make_pair("messaging", IDR_MESSAGING_JS)); | 486 resources.push_back(std::make_pair("messaging", IDR_MESSAGING_JS)); |
(...skipping 23 matching lines...) Expand all Loading... |
510 IDR_WEB_VIEW_ACTION_REQUESTS_JS)); | 510 IDR_WEB_VIEW_ACTION_REQUESTS_JS)); |
511 resources.push_back(std::make_pair("webViewApiMethods", | 511 resources.push_back(std::make_pair("webViewApiMethods", |
512 IDR_WEB_VIEW_API_METHODS_JS)); | 512 IDR_WEB_VIEW_API_METHODS_JS)); |
513 resources.push_back(std::make_pair("webViewAttributes", | 513 resources.push_back(std::make_pair("webViewAttributes", |
514 IDR_WEB_VIEW_ATTRIBUTES_JS)); | 514 IDR_WEB_VIEW_ATTRIBUTES_JS)); |
515 resources.push_back(std::make_pair("webViewConstants", | 515 resources.push_back(std::make_pair("webViewConstants", |
516 IDR_WEB_VIEW_CONSTANTS_JS)); | 516 IDR_WEB_VIEW_CONSTANTS_JS)); |
517 resources.push_back(std::make_pair("webViewEvents", IDR_WEB_VIEW_EVENTS_JS)); | 517 resources.push_back(std::make_pair("webViewEvents", IDR_WEB_VIEW_EVENTS_JS)); |
518 resources.push_back(std::make_pair("webViewInternal", | 518 resources.push_back(std::make_pair("webViewInternal", |
519 IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS)); | 519 IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS)); |
520 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 520 if (content::BrowserPluginGuestMode::UseCrossProcessFramesForGuests()) { |
521 ::switches::kSitePerProcess)) { | |
522 resources.push_back(std::make_pair("webViewIframe", | 521 resources.push_back(std::make_pair("webViewIframe", |
523 IDR_WEB_VIEW_IFRAME_JS)); | 522 IDR_WEB_VIEW_IFRAME_JS)); |
524 } | 523 } |
525 resources.push_back( | 524 resources.push_back( |
526 std::make_pair(mojo::kBindingsModuleName, IDR_MOJO_BINDINGS_JS)); | 525 std::make_pair(mojo::kBindingsModuleName, IDR_MOJO_BINDINGS_JS)); |
527 resources.push_back( | 526 resources.push_back( |
528 std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS)); | 527 std::make_pair(mojo::kBufferModuleName, IDR_MOJO_BUFFER_JS)); |
529 resources.push_back( | 528 resources.push_back( |
530 std::make_pair(mojo::kCodecModuleName, IDR_MOJO_CODEC_JS)); | 529 std::make_pair(mojo::kCodecModuleName, IDR_MOJO_CODEC_JS)); |
531 resources.push_back( | 530 resources.push_back( |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1429 context->GetAvailability("surfaceWorkerInternal").is_available()) { | 1428 context->GetAvailability("surfaceWorkerInternal").is_available()) { |
1430 module_system->Require("surfaceWorker"); | 1429 module_system->Require("surfaceWorker"); |
1431 } | 1430 } |
1432 | 1431 |
1433 // Require WebView. | 1432 // Require WebView. |
1434 if (context->GetAvailability("webViewInternal").is_available()) { | 1433 if (context->GetAvailability("webViewInternal").is_available()) { |
1435 module_system->Require("webView"); | 1434 module_system->Require("webView"); |
1436 module_system->Require("webViewApiMethods"); | 1435 module_system->Require("webViewApiMethods"); |
1437 module_system->Require("webViewAttributes"); | 1436 module_system->Require("webViewAttributes"); |
1438 | 1437 |
1439 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 1438 if (content::BrowserPluginGuestMode::UseCrossProcessFramesForGuests()) { |
1440 ::switches::kSitePerProcess)) { | |
1441 module_system->Require("webViewIframe"); | 1439 module_system->Require("webViewIframe"); |
1442 } | 1440 } |
1443 } | 1441 } |
1444 | 1442 |
1445 // The "guestViewDeny" module must always be loaded last. It registers | 1443 // The "guestViewDeny" module must always be loaded last. It registers |
1446 // error-providing custom elements for the GuestView types that are not | 1444 // error-providing custom elements for the GuestView types that are not |
1447 // available, and thus all of those types must have been checked and loaded | 1445 // available, and thus all of those types must have been checked and loaded |
1448 // (or not loaded) beforehand. | 1446 // (or not loaded) beforehand. |
1449 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { | 1447 if (context_type == Feature::BLESSED_EXTENSION_CONTEXT) { |
1450 module_system->Require("guestViewDeny"); | 1448 module_system->Require("guestViewDeny"); |
1451 } | 1449 } |
1452 } | 1450 } |
1453 | 1451 |
1454 void Dispatcher::AddChannelSpecificFeatures() { | 1452 void Dispatcher::AddChannelSpecificFeatures() { |
1455 // chrome-extension: resources should be allowed to register a Service Worker. | 1453 // chrome-extension: resources should be allowed to register a Service Worker. |
1456 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) | 1454 if (FeatureProvider::GetBehaviorFeature(BehaviorFeature::kServiceWorker) |
1457 ->IsAvailableToEnvironment() | 1455 ->IsAvailableToEnvironment() |
1458 .is_available()) | 1456 .is_available()) |
1459 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( | 1457 WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers( |
1460 WebString::fromUTF8(kExtensionScheme)); | 1458 WebString::fromUTF8(kExtensionScheme)); |
1461 } | 1459 } |
1462 | 1460 |
1463 } // namespace extensions | 1461 } // namespace extensions |
OLD | NEW |