| Index: extensions/browser/renderer_startup_helper.cc
|
| diff --git a/extensions/browser/renderer_startup_helper.cc b/extensions/browser/renderer_startup_helper.cc
|
| index c200c27a2dd843ec4e6fa83d24ef74f875f9c21a..09accf437f1a29a45a541aec71937b2f5f278ed0 100644
|
| --- a/extensions/browser/renderer_startup_helper.cc
|
| +++ b/extensions/browser/renderer_startup_helper.cc
|
| @@ -18,6 +18,8 @@
|
| #include "extensions/common/extensions_client.h"
|
| #include "extensions/common/features/feature_channel.h"
|
| #include "extensions/common/features/feature_session_type.h"
|
| +#include "extensions/common/permissions/permissions_data.h"
|
| +#include "ipc/ipc_message_attachment_set.h"
|
| #include "ui/base/webui/web_ui_util.h"
|
|
|
| using content::BrowserContext;
|
| @@ -91,6 +93,13 @@ void RendererStartupHelper::InitializeProcess(
|
| WebViewGuest::GetPartitionID(process)));
|
| }
|
|
|
| + // Load default runtime_blocked_hosts and runtime_allowed_hosts settings, part
|
| + // of the ExtensionSettings policy.
|
| + ExtensionMsg_RuntimeBlockedAllowedHostsStruct params(
|
| + PermissionsData::default_runtime_blocked_hosts(),
|
| + PermissionsData::default_runtime_allowed_hosts(), process->GetHandle());
|
| + process->Send(new ExtensionMsg_UpdateDefaultAllowedAndBlockedHosts(params));
|
| +
|
| // Loaded extensions.
|
| std::vector<ExtensionMsg_Loaded_Params> loaded_extensions;
|
| const ExtensionSet& extensions =
|
| @@ -103,11 +112,20 @@ void RendererStartupHelper::InitializeProcess(
|
| // 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));
|
| + loaded_extensions.push_back(ExtensionMsg_Loaded_Params(
|
| + ext.get(), include_tab_permissions, process->GetHandle()));
|
| + }
|
| +#if defined(OS_POSIX)
|
| + if (loaded_extensions.size() ==
|
| + IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage) {
|
| + process->Send(new ExtensionMsg_Loaded(loaded_extensions));
|
| + loaded_extensions.clear();
|
| }
|
| +#endif
|
| + }
|
| + if (loaded_extensions.size() > 0) {
|
| + process->Send(new ExtensionMsg_Loaded(loaded_extensions));
|
| }
|
| - process->Send(new ExtensionMsg_Loaded(loaded_extensions));
|
| auto iter = pending_active_extensions_.find(process);
|
| if (iter != pending_active_extensions_.end()) {
|
| for (const ExtensionId& id : iter->second) {
|
| @@ -154,11 +172,13 @@ void RendererStartupHelper::OnExtensionLoaded(const Extension& extension) {
|
| // was just loaded.
|
| // Uninitialized renderers will be informed of the extension load during the
|
| // first batch of messages.
|
| - std::vector<ExtensionMsg_Loaded_Params> params(
|
| - 1,
|
| - ExtensionMsg_Loaded_Params(&extension, false /* no tab permissions */));
|
| - for (content::RenderProcessHost* process : initialized_processes_)
|
| + for (content::RenderProcessHost* process : initialized_processes_) {
|
| + std::vector<ExtensionMsg_Loaded_Params> params(
|
| + 1,
|
| + ExtensionMsg_Loaded_Params(&extension, false /* no tab permissions */,
|
| + process->GetHandle()));
|
| process->Send(new ExtensionMsg_Loaded(params));
|
| + }
|
| }
|
|
|
| void RendererStartupHelper::OnExtensionUnloaded(const Extension& extension) {
|
|
|