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

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

Issue 297613002: Sever PendingExtensionManager's dependency on ExtensionService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
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/pending_extension_manager.h" 5 #include "chrome/browser/extensions/pending_extension_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/version.h" 10 #include "base/version.h"
11 #include "chrome/browser/extensions/extension_service.h" 11 #include "chrome/common/extensions/extension_constants.h"
12 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
13 #include "extensions/browser/extension_prefs.h" 13 #include "extensions/browser/extension_prefs.h"
14 #include "extensions/browser/extension_registry.h"
14 #include "extensions/common/extension.h" 15 #include "extensions/common/extension.h"
15 #include "url/gurl.h" 16 #include "url/gurl.h"
16 17
17 using content::BrowserThread; 18 using content::BrowserThread;
18 19
19 namespace { 20 namespace {
20 21
21 // Install predicate used by AddFromExternalUpdateUrl(). 22 // Install predicate used by AddFromExternalUpdateUrl().
22 bool AlwaysInstall(const extensions::Extension* extension) { 23 bool AlwaysInstall(const extensions::Extension* extension) {
23 return true; 24 return true;
24 } 25 }
25 26
26 std::string GetVersionString(const Version& version) { 27 std::string GetVersionString(const Version& version) {
27 return version.IsValid() ? version.GetString() : "invalid"; 28 return version.IsValid() ? version.GetString() : "invalid";
28 } 29 }
29 30
30 } // namespace 31 } // namespace
31 32
32 namespace extensions { 33 namespace extensions {
33 34
34 PendingExtensionManager::PendingExtensionManager( 35 PendingExtensionManager::PendingExtensionManager(
35 const ExtensionServiceInterface& service,
36 content::BrowserContext* context) 36 content::BrowserContext* context)
37 : service_(service), context_(context) {} 37 : context_(context) {}
38 38
39 PendingExtensionManager::~PendingExtensionManager() {} 39 PendingExtensionManager::~PendingExtensionManager() {}
40 40
41 const PendingExtensionInfo* PendingExtensionManager::GetById( 41 const PendingExtensionInfo* PendingExtensionManager::GetById(
42 const std::string& id) const { 42 const std::string& id) const {
43 PendingExtensionList::const_iterator iter; 43 PendingExtensionList::const_iterator iter;
44 for (iter = pending_extension_list_.begin(); 44 for (iter = pending_extension_list_.begin();
45 iter != pending_extension_list_.end(); 45 iter != pending_extension_list_.end();
46 ++iter) { 46 ++iter) {
47 if (id == iter->id()) 47 if (id == iter->id())
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 } 86 }
87 87
88 bool PendingExtensionManager::AddFromSync( 88 bool PendingExtensionManager::AddFromSync(
89 const std::string& id, 89 const std::string& id,
90 const GURL& update_url, 90 const GURL& update_url,
91 PendingExtensionInfo::ShouldAllowInstallPredicate should_allow_install, 91 PendingExtensionInfo::ShouldAllowInstallPredicate should_allow_install,
92 bool install_silently, 92 bool install_silently,
93 bool remote_install) { 93 bool remote_install) {
94 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 94 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
95 95
96 if (service_.GetInstalledExtension(id)) { 96 if (ExtensionRegistry::Get(context_)->GetExtensionById(
97 id, ExtensionRegistry::EVERYTHING)) {
97 LOG(ERROR) << "Trying to add pending extension " << id 98 LOG(ERROR) << "Trying to add pending extension " << id
98 << " which already exists"; 99 << " which already exists";
99 return false; 100 return false;
100 } 101 }
101 102
102 // Make sure we don't ever try to install the CWS app, because even though 103 // Make sure we don't ever try to install the CWS app, because even though
103 // it is listed as a syncable app (because its values need to be synced) it 104 // it is listed as a syncable app (because its values need to be synced) it
104 // should already be installed on every instance. 105 // should already be installed on every instance.
105 if (id == extension_misc::kWebStoreAppId) { 106 if (id == extension_misc::kWebStoreAppId) {
106 NOTREACHED(); 107 NOTREACHED();
107 return false; 108 return false;
108 } 109 }
109 110
110 const bool kIsFromSync = true; 111 static const bool kIsFromSync = true;
111 const Manifest::Location kSyncLocation = Manifest::INTERNAL; 112 static const Manifest::Location kSyncLocation = Manifest::INTERNAL;
112 const bool kMarkAcknowledged = false; 113 static const bool kMarkAcknowledged = false;
113 114
114 return AddExtensionImpl(id, 115 return AddExtensionImpl(id,
115 std::string(), 116 std::string(),
116 update_url, 117 update_url,
117 Version(), 118 Version(),
118 should_allow_install, 119 should_allow_install,
119 kIsFromSync, 120 kIsFromSync,
120 install_silently, 121 install_silently,
121 kSyncLocation, 122 kSyncLocation,
122 Extension::NO_FLAGS, 123 Extension::NO_FLAGS,
123 kMarkAcknowledged, 124 kMarkAcknowledged,
124 remote_install); 125 remote_install);
125 } 126 }
126 127
127 bool PendingExtensionManager::AddFromExtensionImport( 128 bool PendingExtensionManager::AddFromExtensionImport(
128 const std::string& id, 129 const std::string& id,
129 const GURL& update_url, 130 const GURL& update_url,
130 PendingExtensionInfo::ShouldAllowInstallPredicate should_allow_install) { 131 PendingExtensionInfo::ShouldAllowInstallPredicate should_allow_install) {
131 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 132 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
132 133
133 if (service_.GetInstalledExtension(id)) { 134 if (ExtensionRegistry::Get(context_)->GetExtensionById(
135 id, ExtensionRegistry::EVERYTHING)) {
134 LOG(ERROR) << "Trying to add pending extension " << id 136 LOG(ERROR) << "Trying to add pending extension " << id
135 << " which already exists"; 137 << " which already exists";
136 return false; 138 return false;
137 } 139 }
138 140
139 const bool kIsFromSync = false; 141 static const bool kIsFromSync = false;
140 const bool kInstallSilently = true; 142 static const bool kInstallSilently = true;
141 const Manifest::Location kManifestLocation = Manifest::INTERNAL; 143 static const Manifest::Location kManifestLocation = Manifest::INTERNAL;
142 const bool kMarkAcknowledged = false; 144 static const bool kMarkAcknowledged = false;
143 const bool kRemoteInstall = false; 145 static const bool kRemoteInstall = false;
144 146
145 return AddExtensionImpl(id, 147 return AddExtensionImpl(id,
146 std::string(), 148 std::string(),
147 update_url, 149 update_url,
148 Version(), 150 Version(),
149 should_allow_install, 151 should_allow_install,
150 kIsFromSync, 152 kIsFromSync,
151 kInstallSilently, 153 kInstallSilently,
152 kManifestLocation, 154 kManifestLocation,
153 Extension::NO_FLAGS, 155 Extension::NO_FLAGS,
154 kMarkAcknowledged, 156 kMarkAcknowledged,
155 kRemoteInstall); 157 kRemoteInstall);
156 } 158 }
157 159
158 bool PendingExtensionManager::AddFromExternalUpdateUrl( 160 bool PendingExtensionManager::AddFromExternalUpdateUrl(
159 const std::string& id, 161 const std::string& id,
160 const std::string& install_parameter, 162 const std::string& install_parameter,
161 const GURL& update_url, 163 const GURL& update_url,
162 Manifest::Location location, 164 Manifest::Location location,
163 int creation_flags, 165 int creation_flags,
164 bool mark_acknowledged) { 166 bool mark_acknowledged) {
165 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 167 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
166 168
167 const bool kIsFromSync = false; 169 static const bool kIsFromSync = false;
168 const bool kInstallSilently = true; 170 static const bool kInstallSilently = true;
169 const bool kRemoteInstall = false; 171 static const bool kRemoteInstall = false;
170 172
171 const Extension* extension = service_.GetInstalledExtension(id); 173 const Extension* extension = ExtensionRegistry::Get(context_)
174 ->GetExtensionById(id, ExtensionRegistry::EVERYTHING);
172 if (extension && location == Manifest::GetHigherPriorityLocation( 175 if (extension && location == Manifest::GetHigherPriorityLocation(
173 location, extension->location())) { 176 location, extension->location())) {
174 // If the new location has higher priority than the location of an existing 177 // If the new location has higher priority than the location of an existing
175 // extension, let the update process overwrite the existing extension. 178 // extension, let the update process overwrite the existing extension.
176 } else { 179 } else {
177 if (ExtensionPrefs::Get(context_)->IsExternalExtensionUninstalled(id)) 180 if (ExtensionPrefs::Get(context_)->IsExternalExtensionUninstalled(id))
178 return false; 181 return false;
179 182
180 if (extension) { 183 if (extension) {
181 LOG(DFATAL) << "Trying to add extension " << id 184 LOG(DFATAL) << "Trying to add extension " << id
(...skipping 19 matching lines...) Expand all
201 bool PendingExtensionManager::AddFromExternalFile( 204 bool PendingExtensionManager::AddFromExternalFile(
202 const std::string& id, 205 const std::string& id,
203 Manifest::Location install_source, 206 Manifest::Location install_source,
204 const Version& version, 207 const Version& version,
205 int creation_flags, 208 int creation_flags,
206 bool mark_acknowledged) { 209 bool mark_acknowledged) {
207 // TODO(skerner): AddFromSync() checks to see if the extension is 210 // TODO(skerner): AddFromSync() checks to see if the extension is
208 // installed, but this method assumes that the caller already 211 // installed, but this method assumes that the caller already
209 // made sure it is not installed. Make all AddFrom*() methods 212 // made sure it is not installed. Make all AddFrom*() methods
210 // consistent. 213 // consistent.
211 GURL kUpdateUrl = GURL(); 214 const GURL& kUpdateUrl = GURL::EmptyGURL();
212 const bool kIsFromSync = false; 215 static const bool kIsFromSync = false;
213 const bool kInstallSilently = true; 216 static const bool kInstallSilently = true;
214 const bool kRemoteInstall = false; 217 static const bool kRemoteInstall = false;
215 218
216 return AddExtensionImpl(id, 219 return AddExtensionImpl(id,
217 std::string(), 220 std::string(),
218 kUpdateUrl, 221 kUpdateUrl,
219 version, 222 version,
220 &AlwaysInstall, 223 &AlwaysInstall,
221 kIsFromSync, 224 kIsFromSync,
222 kInstallSilently, 225 kInstallSilently,
223 install_source, 226 install_source,
224 creation_flags, 227 creation_flags,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 308
306 return true; 309 return true;
307 } 310 }
308 311
309 void PendingExtensionManager::AddForTesting( 312 void PendingExtensionManager::AddForTesting(
310 const PendingExtensionInfo& pending_extension_info) { 313 const PendingExtensionInfo& pending_extension_info) {
311 pending_extension_list_.push_back(pending_extension_info); 314 pending_extension_list_.push_back(pending_extension_info);
312 } 315 }
313 316
314 } // namespace extensions 317 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/pending_extension_manager.h ('k') | chrome/browser/extensions/updater/extension_updater_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698