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

Unified Diff: chrome/browser/extensions/extension_system_impl.cc

Issue 420543002: Declarative content scripts: Browser-side: per-extension shared memory regions (lazily loaded) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix nit and rebase from master Created 6 years, 4 months 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: chrome/browser/extensions/extension_system_impl.cc
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
index 9804b81a247431896a6c014557a3d8a824b4ee58..b78d98cd616d3f863f3a1d89c59a0ed6b5c3d23a 100644
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -12,10 +12,12 @@
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/strings/string_tokenizer.h"
+#include "base/strings/string_util.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/extensions/blacklist.h"
#include "chrome/browser/extensions/component_loader.h"
+#include "chrome/browser/extensions/declarative_user_script_master.h"
#include "chrome/browser/extensions/error_console/error_console.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -26,11 +28,11 @@
#include "chrome/browser/extensions/install_verifier.h"
#include "chrome/browser/extensions/navigation_observer.h"
#include "chrome/browser/extensions/shared_module_service.h"
+#include "chrome/browser/extensions/shared_user_script_master.h"
#include "chrome/browser/extensions/standard_management_policy_provider.h"
#include "chrome/browser/extensions/state_store_notification_observer.h"
#include "chrome/browser/extensions/unpacked_installer.h"
#include "chrome/browser/extensions/updater/manifest_fetch_data.h"
-#include "chrome/browser/extensions/user_script_master.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
@@ -305,7 +307,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
bool allow_noisy_errors = !command_line->HasSwitch(switches::kNoErrorDialogs);
ExtensionErrorReporter::Init(allow_noisy_errors);
- user_script_master_.reset(new UserScriptMaster(profile_));
+ shared_user_script_master_.reset(new SharedUserScriptMaster(profile_));
// ExtensionService depends on RuntimeData.
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
@@ -439,8 +441,9 @@ ManagementPolicy* ExtensionSystemImpl::Shared::management_policy() {
return management_policy_.get();
}
-UserScriptMaster* ExtensionSystemImpl::Shared::user_script_master() {
- return user_script_master_.get();
+SharedUserScriptMaster*
+ExtensionSystemImpl::Shared::shared_user_script_master() {
+ return shared_user_script_master_.get();
}
InfoMap* ExtensionSystemImpl::Shared::info_map() {
@@ -482,6 +485,27 @@ ContentVerifier* ExtensionSystemImpl::Shared::content_verifier() {
return content_verifier_.get();
}
+DeclarativeUserScriptMaster*
+ExtensionSystemImpl::Shared::GetDeclarativeUserScriptMasterByExtension(
+ const ExtensionId& extension_id) {
+ DCHECK(ready().is_signaled());
+ DeclarativeUserScriptMaster* master = NULL;
+ for (ScopedVector<DeclarativeUserScriptMaster>::iterator it =
+ declarative_user_script_masters_.begin();
+ it != declarative_user_script_masters_.end();
+ ++it) {
+ if ((*it)->extension_id() == extension_id) {
+ master = *it;
+ break;
+ }
+ }
+ if (!master) {
+ master = new DeclarativeUserScriptMaster(profile_, extension_id);
+ declarative_user_script_masters_.push_back(master);
+ }
+ return master;
+}
+
//
// ExtensionSystemImpl
//
@@ -506,7 +530,7 @@ void ExtensionSystemImpl::Shutdown() {
void ExtensionSystemImpl::InitForRegularProfile(bool extensions_enabled) {
DCHECK(!profile_->IsOffTheRecord());
- if (user_script_master() || extension_service())
+ if (shared_user_script_master() || extension_service())
return; // Already initialized.
// The InfoMap needs to be created before the ProcessManager.
@@ -529,8 +553,8 @@ ManagementPolicy* ExtensionSystemImpl::management_policy() {
return shared_->management_policy();
}
-UserScriptMaster* ExtensionSystemImpl::user_script_master() {
- return shared_->user_script_master();
+SharedUserScriptMaster* ExtensionSystemImpl::shared_user_script_master() {
+ return shared_->shared_user_script_master();
}
ProcessManager* ExtensionSystemImpl::process_manager() {
@@ -589,6 +613,12 @@ scoped_ptr<ExtensionSet> ExtensionSystemImpl::GetDependentExtensions(
extension);
}
+DeclarativeUserScriptMaster*
+ExtensionSystemImpl::GetDeclarativeUserScriptMasterByExtension(
+ const ExtensionId& extension_id) {
+ return shared_->GetDeclarativeUserScriptMasterByExtension(extension_id);
+}
+
void ExtensionSystemImpl::RegisterExtensionWithRequestContexts(
const Extension* extension) {
base::Time install_time;
« no previous file with comments | « chrome/browser/extensions/extension_system_impl.h ('k') | chrome/browser/extensions/shared_user_script_master.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698