Index: extensions/browser/renderer_startup_helper.cc |
diff --git a/extensions/browser/renderer_startup_helper.cc b/extensions/browser/renderer_startup_helper.cc |
index 111c5e27ce4ba942187630ee3bfaf05ce805a6be..99c7b91de1cd641dc683a84ba674631b1b494dd2 100644 |
--- a/extensions/browser/renderer_startup_helper.cc |
+++ b/extensions/browser/renderer_startup_helper.cc |
@@ -34,49 +34,45 @@ void RendererStartupHelper::Observe( |
int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) { |
- switch (type) { |
- case content::NOTIFICATION_RENDERER_PROCESS_CREATED: { |
- content::RenderProcessHost* process = |
- content::Source<content::RenderProcessHost>(source).ptr(); |
- if (!ExtensionsBrowserClient::Get()->IsSameContext( |
- browser_context_, process->GetBrowserContext())) |
- break; |
- |
- // Platform apps need to know the system font. |
- // TODO(dbeam): this is not the system font in all cases. |
- process->Send(new ExtensionMsg_SetSystemFont(webui::GetFontFamily(), |
- webui::GetFontSize())); |
- |
- // Valid extension function names, used to setup bindings in renderer. |
- std::vector<std::string> function_names; |
- ExtensionFunctionDispatcher::GetAllFunctionNames(&function_names); |
- process->Send(new ExtensionMsg_SetFunctionNames(function_names)); |
- |
- // Scripting whitelist. This is modified by tests and must be communicated |
- // to renderers. |
- process->Send(new ExtensionMsg_SetScriptingWhitelist( |
- extensions::ExtensionsClient::Get()->GetScriptingWhitelist())); |
- |
- // Loaded extensions. |
- std::vector<ExtensionMsg_Loaded_Params> loaded_extensions; |
- const ExtensionSet& extensions = |
- ExtensionRegistry::Get(browser_context_)->enabled_extensions(); |
- for (ExtensionSet::const_iterator iter = extensions.begin(); |
- iter != extensions.end(); ++iter) { |
- // Renderers don't need to know about themes. |
- if (!(*iter)->is_theme()) { |
- // Don't need to include tab permissions for new tabs. |
- loaded_extensions.push_back(ExtensionMsg_Loaded_Params( |
- iter->get(), false /* no tab permissions */)); |
- } |
- } |
- process->Send(new ExtensionMsg_Loaded(loaded_extensions)); |
- break; |
+ DCHECK_EQ(content::NOTIFICATION_RENDERER_PROCESS_CREATED, type); |
+ content::RenderProcessHost* process = |
+ content::Source<content::RenderProcessHost>(source).ptr(); |
+ if (!ExtensionsBrowserClient::Get()->IsSameContext( |
+ browser_context_, process->GetBrowserContext())) |
+ return; |
+ |
+ // Platform apps need to know the system font. |
+ // TODO(dbeam): this is not the system font in all cases. |
+ process->Send(new ExtensionMsg_SetSystemFont(webui::GetFontFamily(), |
+ webui::GetFontSize())); |
+ |
+ // Valid extension function names, used to setup bindings in renderer. |
+ std::vector<std::string> function_names; |
+ ExtensionFunctionDispatcher::GetAllFunctionNames(&function_names); |
+ process->Send(new ExtensionMsg_SetFunctionNames(function_names)); |
+ |
+ // Scripting whitelist. This is modified by tests and must be communicated |
+ // to renderers. |
+ process->Send(new ExtensionMsg_SetScriptingWhitelist( |
+ extensions::ExtensionsClient::Get()->GetScriptingWhitelist())); |
+ |
+ // Loaded extensions. |
+ std::vector<ExtensionMsg_Loaded_Params> loaded_extensions; |
+ const ExtensionSet& extensions = |
+ ExtensionRegistry::Get(browser_context_)->enabled_extensions(); |
+ for (const auto& ext : extensions) { |
+ // Renderers don't need to know about themes. |
+ if (!ext->is_theme()) { |
+ // TODO(kalman): Only include tab specific permissions for extension |
+ // processes, no other process needs it, so it's mildly wasteful. |
+ // I am not sure this is possible to know this here, at such a low |
+ // level of the stack. Perhaps site isolation can help. |
+ bool include_tab_permissions = true; |
+ loaded_extensions.push_back( |
+ ExtensionMsg_Loaded_Params(ext.get(), include_tab_permissions)); |
} |
- default: |
- NOTREACHED(); |
- break; |
} |
+ process->Send(new ExtensionMsg_Loaded(loaded_extensions)); |
} |
////////////////////////////////////////////////////////////////////////////// |