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

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

Issue 3462016: Disabled external_extensions.json and chrome://extensions in Guest mode. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Removed unnecessary code Created 10 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/extensions_service.h" 5 #include "chrome/browser/extensions/extensions_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 } 173 }
174 174
175 } // namespace 175 } // namespace
176 176
177 // Implements IO for the ExtensionsService. 177 // Implements IO for the ExtensionsService.
178 178
179 class ExtensionsServiceBackend 179 class ExtensionsServiceBackend
180 : public base::RefCountedThreadSafe<ExtensionsServiceBackend>, 180 : public base::RefCountedThreadSafe<ExtensionsServiceBackend>,
181 public ExternalExtensionProvider::Visitor { 181 public ExternalExtensionProvider::Visitor {
182 public: 182 public:
183 // |rdh| can be NULL in the case of test environment. 183 // |install_directory| is a path where to look for extensions to load.
184 // |extension_prefs| contains a dictionary value that points to the extension 184 // |load_external_extensions| indicates whether or not backend should load
185 // preferences. 185 // external extensions listed in JSON file and Windows registry.
186 explicit ExtensionsServiceBackend(const FilePath& install_directory); 186 ExtensionsServiceBackend(const FilePath& install_directory,
187 bool load_external_extensions);
187 188
188 // Loads a single extension from |path| where |path| is the top directory of 189 // Loads a single extension from |path| where |path| is the top directory of
189 // a specific extension where its manifest file lives. 190 // a specific extension where its manifest file lives.
190 // Errors are reported through ExtensionErrorReporter. On success, 191 // Errors are reported through ExtensionErrorReporter. On success,
191 // OnExtensionLoaded() is called. 192 // OnExtensionLoaded() is called.
192 // TODO(erikkay): It might be useful to be able to load a packed extension 193 // TODO(erikkay): It might be useful to be able to load a packed extension
193 // (presumably into memory) without installing it. 194 // (presumably into memory) without installing it.
194 void LoadSingleExtension(const FilePath &path, 195 void LoadSingleExtension(const FilePath &path,
195 scoped_refptr<ExtensionsService> frontend); 196 scoped_refptr<ExtensionsService> frontend);
196 197
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 279
279 // Set to true by OnExternalExtensionUpdateUrlFound() when an external 280 // Set to true by OnExternalExtensionUpdateUrlFound() when an external
280 // extension URL is found. Used in CheckForExternalUpdates() to see 281 // extension URL is found. Used in CheckForExternalUpdates() to see
281 // if an update check is needed to install pending extensions. 282 // if an update check is needed to install pending extensions.
282 bool external_extension_added_; 283 bool external_extension_added_;
283 284
284 DISALLOW_COPY_AND_ASSIGN(ExtensionsServiceBackend); 285 DISALLOW_COPY_AND_ASSIGN(ExtensionsServiceBackend);
285 }; 286 };
286 287
287 ExtensionsServiceBackend::ExtensionsServiceBackend( 288 ExtensionsServiceBackend::ExtensionsServiceBackend(
288 const FilePath& install_directory) 289 const FilePath& install_directory,
290 bool load_external_extensions)
289 : frontend_(NULL), 291 : frontend_(NULL),
290 install_directory_(install_directory), 292 install_directory_(install_directory),
291 alert_on_error_(false), 293 alert_on_error_(false),
292 external_extension_added_(false) { 294 external_extension_added_(false) {
295 if (!load_external_extensions)
296 return;
297
293 // TODO(aa): This ends up doing blocking IO on the UI thread because it reads 298 // TODO(aa): This ends up doing blocking IO on the UI thread because it reads
294 // pref data in the ctor and that is called on the UI thread. Would be better 299 // pref data in the ctor and that is called on the UI thread. Would be better
295 // to re-read data each time we list external extensions, anyway. 300 // to re-read data each time we list external extensions, anyway.
296 external_extension_providers_[Extension::EXTERNAL_PREF] = 301 external_extension_providers_[Extension::EXTERNAL_PREF] =
297 linked_ptr<ExternalExtensionProvider>( 302 linked_ptr<ExternalExtensionProvider>(
298 new ExternalPrefExtensionProvider()); 303 new ExternalPrefExtensionProvider());
299 #if defined(OS_WIN) 304 #if defined(OS_WIN)
300 external_extension_providers_[Extension::EXTERNAL_REGISTRY] = 305 external_extension_providers_[Extension::EXTERNAL_REGISTRY] =
301 linked_ptr<ExternalExtensionProvider>( 306 linked_ptr<ExternalExtensionProvider>(
302 new ExternalRegistryExtensionProvider()); 307 new ExternalRegistryExtensionProvider());
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 if (autoupdate_enabled) { 554 if (autoupdate_enabled) {
550 int update_frequency = kDefaultUpdateFrequencySeconds; 555 int update_frequency = kDefaultUpdateFrequencySeconds;
551 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) { 556 if (command_line->HasSwitch(switches::kExtensionsUpdateFrequency)) {
552 base::StringToInt(command_line->GetSwitchValueASCII( 557 base::StringToInt(command_line->GetSwitchValueASCII(
553 switches::kExtensionsUpdateFrequency), 558 switches::kExtensionsUpdateFrequency),
554 &update_frequency); 559 &update_frequency);
555 } 560 }
556 updater_ = new ExtensionUpdater(this, prefs, update_frequency); 561 updater_ = new ExtensionUpdater(this, prefs, update_frequency);
557 } 562 }
558 563
559 backend_ = new ExtensionsServiceBackend(install_directory_); 564 backend_ = new ExtensionsServiceBackend(install_directory_,
565 extensions_enabled_);
560 566
561 // Use monochrome icons for Omnibox icons. 567 // Use monochrome icons for Omnibox icons.
562 omnibox_popup_icon_manager_.set_monochrome(true); 568 omnibox_popup_icon_manager_.set_monochrome(true);
563 omnibox_icon_manager_.set_monochrome(true); 569 omnibox_icon_manager_.set_monochrome(true);
564 omnibox_icon_manager_.set_padding(gfx::Insets(0, kOmniboxIconPaddingLeft, 570 omnibox_icon_manager_.set_padding(gfx::Insets(0, kOmniboxIconPaddingLeft,
565 0, kOmniboxIconPaddingRight)); 571 0, kOmniboxIconPaddingRight));
566 } 572 }
567 573
568 ExtensionsService::~ExtensionsService() { 574 ExtensionsService::~ExtensionsService() {
569 UnloadAllExtensions(); 575 UnloadAllExtensions();
(...skipping 1217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1787 return false; 1793 return false;
1788 1794
1789 for (ExtensionList::const_iterator it = extensions_.begin(); 1795 for (ExtensionList::const_iterator it = extensions_.begin();
1790 it != extensions_.end(); ++it) { 1796 it != extensions_.end(); ++it) {
1791 if ((*it)->is_app()) 1797 if ((*it)->is_app())
1792 return true; 1798 return true;
1793 } 1799 }
1794 1800
1795 return false; 1801 return false;
1796 } 1802 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698