| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 } | 
| OLD | NEW | 
|---|