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

Unified Diff: extensions/browser/renderer_startup_helper.cc

Issue 2499493004: Communicate ExtensionSettings policy to renderers (Closed)
Patch Set: URLPatternSets use shared memory for IPC. Default scope patterns sent once per renderer. Created 4 years 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 side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698