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

Side by Side Diff: chrome/browser/extensions/shared_module_service.cc

Issue 317993003: Send an onInstalled event for shared module update (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/shared_module_service.h" 5 #include "chrome/browser/extensions/shared_module_service.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/version.h" 9 #include "base/version.h"
10 #include "chrome/browser/extensions/extension_service.h" 10 #include "chrome/browser/extensions/extension_service.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 pending_extension_manager->AddFromExtensionImport( 97 pending_extension_manager->AddFromExtensionImport(
98 iter->extension_id, 98 iter->extension_id,
99 extension_urls::GetWebstoreUpdateUrl(), 99 extension_urls::GetWebstoreUpdateUrl(),
100 SharedModuleInfo::IsSharedModule); 100 SharedModuleInfo::IsSharedModule);
101 } 101 }
102 service->CheckForUpdatesSoon(); 102 service->CheckForUpdatesSoon();
103 } 103 }
104 return status; 104 return status;
105 } 105 }
106 106
107 scoped_ptr<const ExtensionSet> SharedModuleService::GetDependentExtensions( 107 scoped_ptr<ExtensionSet> SharedModuleService::GetDependentExtensions(
108 const Extension* extension) { 108 const Extension* extension) {
109 scoped_ptr<ExtensionSet> dependents(new ExtensionSet()); 109 scoped_ptr<ExtensionSet> dependents(new ExtensionSet());
110 110
111 if (SharedModuleInfo::IsSharedModule(extension)) { 111 if (SharedModuleInfo::IsSharedModule(extension)) {
112 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); 112 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
113 ExtensionService* service = 113 ExtensionService* service =
114 ExtensionSystem::Get(browser_context_)->extension_service(); 114 ExtensionSystem::Get(browser_context_)->extension_service();
115 115
116 ExtensionSet set_to_check; 116 ExtensionSet set_to_check;
117 set_to_check.InsertAll(registry->enabled_extensions()); 117 set_to_check.InsertAll(registry->enabled_extensions());
118 set_to_check.InsertAll(registry->disabled_extensions()); 118 set_to_check.InsertAll(registry->disabled_extensions());
119 set_to_check.InsertAll(*service->delayed_installs()); 119 set_to_check.InsertAll(*service->delayed_installs());
120 120
121 for (ExtensionSet::const_iterator iter = set_to_check.begin(); 121 for (ExtensionSet::const_iterator iter = set_to_check.begin();
122 iter != set_to_check.end(); 122 iter != set_to_check.end();
123 ++iter) { 123 ++iter) {
124 if (SharedModuleInfo::ImportsExtensionById(iter->get(), 124 if (SharedModuleInfo::ImportsExtensionById(iter->get(),
125 extension->id())) { 125 extension->id())) {
126 dependents->Insert(*iter); 126 dependents->Insert(*iter);
127 } 127 }
128 } 128 }
129 } 129 }
130 return dependents.PassAs<const ExtensionSet>(); 130 return dependents.PassAs<ExtensionSet>();
131 } 131 }
132 132
133 void SharedModuleService::OnExtensionUninstalled( 133 void SharedModuleService::OnExtensionUninstalled(
134 content::BrowserContext* browser_context, 134 content::BrowserContext* browser_context,
135 const Extension* extension) { 135 const Extension* extension) {
136 // Uninstalls shared modules that were only referenced by |extension|. 136 // Uninstalls shared modules that were only referenced by |extension|.
137 if (!SharedModuleInfo::ImportsModules(extension)) 137 if (!SharedModuleInfo::ImportsModules(extension))
138 return; 138 return;
139 139
140 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); 140 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
141 ExtensionService* service = 141 ExtensionService* service =
142 ExtensionSystem::Get(browser_context_)->extension_service(); 142 ExtensionSystem::Get(browser_context_)->extension_service();
143 143
144 const ImportInfoVector& imports = SharedModuleInfo::GetImports(extension); 144 const ImportInfoVector& imports = SharedModuleInfo::GetImports(extension);
145 for (ImportInfoVector::const_iterator iter = imports.begin(); 145 for (ImportInfoVector::const_iterator iter = imports.begin();
146 iter != imports.end(); 146 iter != imports.end();
147 ++iter) { 147 ++iter) {
148 const Extension* imported_module = 148 const Extension* imported_module =
149 registry->GetExtensionById(iter->extension_id, 149 registry->GetExtensionById(iter->extension_id,
150 ExtensionRegistry::EVERYTHING); 150 ExtensionRegistry::EVERYTHING);
151 if (imported_module && imported_module->from_webstore()) { 151 if (imported_module && imported_module->from_webstore()) {
152 scoped_ptr<const ExtensionSet> dependents = 152 scoped_ptr<ExtensionSet> dependents =
153 GetDependentExtensions(imported_module); 153 GetDependentExtensions(imported_module);
154 if (dependents->is_empty()) { 154 if (dependents->is_empty()) {
155 service->UninstallExtension(iter->extension_id, 155 service->UninstallExtension(iter->extension_id,
156 true, // External uninstall. 156 true, // External uninstall.
157 NULL); // Ignore error. 157 NULL); // Ignore error.
158 } 158 }
159 } 159 }
160 } 160 }
161 } 161 }
162 162
163 } // namespace extensions 163 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/shared_module_service.h ('k') | chrome/browser/extensions/test_extension_system.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698