| Index: chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
|
| diff --git a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
|
| index 08bc023906c2e53f5ed4ff9d4f86935f8492bb09..13276e262eb5b7aaa7aaa05d0ac482b5bd696103 100644
|
| --- a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
|
| +++ b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
|
| @@ -235,6 +235,7 @@ void ChromeExtensionsDispatcherDelegate::PopulateSourceMap(
|
| IDR_CHROME_DIRECT_SETTING_JS);
|
|
|
| // Platform app sources that are not API-specific..
|
| + source_map->RegisterSource("appView", IDR_APP_VIEW_JS);
|
| source_map->RegisterSource("tagWatcher", IDR_TAG_WATCHER_JS);
|
| source_map->RegisterSource("webViewInternal",
|
| IDR_WEB_VIEW_INTERNAL_CUSTOM_BINDINGS_JS);
|
| @@ -246,6 +247,7 @@ void ChromeExtensionsDispatcherDelegate::PopulateSourceMap(
|
| IDR_WEB_VIEW_EXPERIMENTAL_JS);
|
| source_map->RegisterSource("webViewRequest",
|
| IDR_WEB_VIEW_REQUEST_CUSTOM_BINDINGS_JS);
|
| + source_map->RegisterSource("denyAppView", IDR_APP_VIEW_DENY_JS);
|
| source_map->RegisterSource("denyWebView", IDR_WEB_VIEW_DENY_JS);
|
| source_map->RegisterSource("injectAppTitlebar", IDR_INJECT_APP_TITLEBAR_JS);
|
| }
|
| @@ -255,6 +257,9 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
|
| const extensions::Extension* extension,
|
| extensions::Feature::Context context_type,
|
| bool is_within_platform_app) {
|
| + // TODO(kalman, fsamuel): Eagerly calling Require on context startup is
|
| + // expensive. It would be better if there were a light way of detecting when
|
| + // a webview or appview is created and only then set up the infrastructure.
|
| if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT &&
|
| is_within_platform_app &&
|
| extensions::GetCurrentChannel() <= chrome::VersionInfo::CHANNEL_DEV &&
|
| @@ -294,6 +299,16 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
|
| module_system->Require("denyWebView");
|
| }
|
| }
|
| +
|
| + if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT) {
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAppView) &&
|
| + extension->permissions_data()->HasAPIPermission(
|
| + extensions::APIPermission::kAppView)) {
|
| + module_system->Require("appView");
|
| + } else {
|
| + module_system->Require("denyAppView");
|
| + }
|
| + }
|
| }
|
|
|
| void ChromeExtensionsDispatcherDelegate::OnActiveExtensionsUpdated(
|
|
|