| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 class AppNotificationManager; | 47 class AppNotificationManager; |
| 48 class BookmarkExtensionEventRouter; | 48 class BookmarkExtensionEventRouter; |
| 49 class CrxInstaller; | 49 class CrxInstaller; |
| 50 class ExtensionBrowserEventRouter; | 50 class ExtensionBrowserEventRouter; |
| 51 class ExtensionContentSettingsStore; | 51 class ExtensionContentSettingsStore; |
| 52 class ExtensionCookiesEventRouter; | 52 class ExtensionCookiesEventRouter; |
| 53 class ExtensionDownloadsEventRouter; | 53 class ExtensionDownloadsEventRouter; |
| 54 class ExtensionFileBrowserEventRouter; | 54 class ExtensionFileBrowserEventRouter; |
| 55 class ExtensionGlobalError; | 55 class ExtensionGlobalError; |
| 56 class HistoryExtensionEventRouter; | |
| 57 class ExtensionInstallUI; | 56 class ExtensionInstallUI; |
| 58 class ExtensionManagementEventRouter; | 57 class ExtensionManagementEventRouter; |
| 59 class ExtensionPreferenceEventRouter; | 58 class ExtensionPreferenceEventRouter; |
| 60 class ExtensionServiceBackend; | |
| 61 class ExtensionSyncData; | 59 class ExtensionSyncData; |
| 62 class ExtensionToolbarModel; | 60 class ExtensionToolbarModel; |
| 63 class ExtensionUpdater; | 61 class ExtensionUpdater; |
| 64 class ExtensionWebNavigationEventRouter; | 62 class ExtensionWebNavigationEventRouter; |
| 63 class HistoryExtensionEventRouter; |
| 65 class GURL; | 64 class GURL; |
| 66 class PendingExtensionManager; | 65 class PendingExtensionManager; |
| 67 class Profile; | 66 class Profile; |
| 68 class SyncData; | 67 class SyncData; |
| 69 class Version; | 68 class Version; |
| 70 | 69 |
| 71 namespace chromeos { | 70 namespace chromeos { |
| 72 class ExtensionInputMethodEventRouter; | 71 class ExtensionInputMethodEventRouter; |
| 73 } // namespace chromeos | 72 } |
| 73 |
| 74 namespace extensions { |
| 75 class ComponentLoader; |
| 76 class InstalledExtensionLoader; |
| 77 class UnpackedInstaller; |
| 78 } |
| 74 | 79 |
| 75 // This is an interface class to encapsulate the dependencies that | 80 // This is an interface class to encapsulate the dependencies that |
| 76 // various classes have on ExtensionService. This allows easy mocking. | 81 // various classes have on ExtensionService. This allows easy mocking. |
| 77 class ExtensionServiceInterface : public SyncableService { | 82 class ExtensionServiceInterface : public SyncableService { |
| 78 public: | 83 public: |
| 79 // A function that returns true if the given extension should be | 84 // A function that returns true if the given extension should be |
| 80 // included and false if it should be filtered out. Identical to | 85 // included and false if it should be filtered out. Identical to |
| 81 // PendingExtensionInfo::ShouldAllowInstallPredicate. | 86 // PendingExtensionInfo::ShouldAllowInstallPredicate. |
| 82 typedef bool (*ExtensionFilter)(const Extension&); | 87 typedef bool (*ExtensionFilter)(const Extension&); |
| 83 | 88 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 111 // themes sync to not use it directly. | 116 // themes sync to not use it directly. |
| 112 virtual void CheckForUpdatesSoon() = 0; | 117 virtual void CheckForUpdatesSoon() = 0; |
| 113 }; | 118 }; |
| 114 | 119 |
| 115 // Manages installed and running Chromium extensions. | 120 // Manages installed and running Chromium extensions. |
| 116 class ExtensionService | 121 class ExtensionService |
| 117 : public ExtensionServiceInterface, | 122 : public ExtensionServiceInterface, |
| 118 public ExternalExtensionProviderInterface::VisitorInterface, | 123 public ExternalExtensionProviderInterface::VisitorInterface, |
| 119 public content::NotificationObserver { | 124 public content::NotificationObserver { |
| 120 public: | 125 public: |
| 121 // Information about a registered component extension. | |
| 122 struct ComponentExtensionInfo { | |
| 123 ComponentExtensionInfo(const std::string& manifest, | |
| 124 const FilePath& root_directory) | |
| 125 : manifest(manifest), | |
| 126 root_directory(root_directory) { | |
| 127 } | |
| 128 | |
| 129 bool Equals(const ComponentExtensionInfo& other) const; | |
| 130 | |
| 131 // The extension's manifest. This is required for component extensions so | |
| 132 // that ExtensionService doesn't need to go to disk to load them. | |
| 133 std::string manifest; | |
| 134 | |
| 135 // Directory where the extension is stored. | |
| 136 FilePath root_directory; | |
| 137 }; | |
| 138 | |
| 139 // The name of the directory inside the profile where extensions are | 126 // The name of the directory inside the profile where extensions are |
| 140 // installed to. | 127 // installed to. |
| 141 static const char* kInstallDirectoryName; | 128 static const char* kInstallDirectoryName; |
| 142 | 129 |
| 143 // If auto-updates are turned on, default to running every 5 hours. | 130 // If auto-updates are turned on, default to running every 5 hours. |
| 144 static const int kDefaultUpdateFrequencySeconds = 60 * 60 * 5; | 131 static const int kDefaultUpdateFrequencySeconds = 60 * 60 * 5; |
| 145 | 132 |
| 146 // The name of the directory inside the profile where per-extension settings | 133 // The name of the directory inside the profile where per-extension settings |
| 147 // are stored. | 134 // are stored. |
| 148 static const char* kSettingsDirectoryName; | 135 static const char* kSettingsDirectoryName; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 virtual ~ExtensionService(); | 170 virtual ~ExtensionService(); |
| 184 | 171 |
| 185 // Gets the list of currently installed extensions. | 172 // Gets the list of currently installed extensions. |
| 186 virtual const ExtensionList* extensions() const OVERRIDE; | 173 virtual const ExtensionList* extensions() const OVERRIDE; |
| 187 const ExtensionList* disabled_extensions() const; | 174 const ExtensionList* disabled_extensions() const; |
| 188 const ExtensionList* terminated_extensions() const; | 175 const ExtensionList* terminated_extensions() const; |
| 189 | 176 |
| 190 // Gets the object managing the set of pending extensions. | 177 // Gets the object managing the set of pending extensions. |
| 191 virtual PendingExtensionManager* pending_extension_manager() OVERRIDE; | 178 virtual PendingExtensionManager* pending_extension_manager() OVERRIDE; |
| 192 | 179 |
| 193 // Registers an extension to be loaded as a component extension. | |
| 194 void register_component_extension(const ComponentExtensionInfo& info) { | |
| 195 component_extension_manifests_.push_back(info); | |
| 196 } | |
| 197 | |
| 198 // Unregisters a component extension from the list of extensions to be loaded | |
| 199 void UnregisterComponentExtension(const ComponentExtensionInfo& info); | |
| 200 | |
| 201 const FilePath& install_directory() const { return install_directory_; } | 180 const FilePath& install_directory() const { return install_directory_; } |
| 202 | 181 |
| 203 AppsPromo* apps_promo() { return &apps_promo_; } | 182 AppsPromo* apps_promo() { return &apps_promo_; } |
| 204 | 183 |
| 205 // Whether this extension can run in an incognito window. | 184 // Whether this extension can run in an incognito window. |
| 206 virtual bool IsIncognitoEnabled(const std::string& extension_id) const; | 185 virtual bool IsIncognitoEnabled(const std::string& extension_id) const; |
| 207 virtual void SetIsIncognitoEnabled(const std::string& extension_id, | 186 virtual void SetIsIncognitoEnabled(const std::string& extension_id, |
| 208 bool enabled); | 187 bool enabled); |
| 209 | 188 |
| 210 // Returns true if the given extension can see events and data from another | 189 // Returns true if the given extension can see events and data from another |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 | 287 |
| 309 // Updates the |extension|'s granted permissions lists to include all | 288 // Updates the |extension|'s granted permissions lists to include all |
| 310 // permissions in the |extension|'s manifest and re-enables the | 289 // permissions in the |extension|'s manifest and re-enables the |
| 311 // extension. | 290 // extension. |
| 312 void GrantPermissionsAndEnableExtension(const Extension* extension); | 291 void GrantPermissionsAndEnableExtension(const Extension* extension); |
| 313 | 292 |
| 314 // Sets the |extension|'s active permissions to |permissions|. | 293 // Sets the |extension|'s active permissions to |permissions|. |
| 315 void UpdateActivePermissions(const Extension* extension, | 294 void UpdateActivePermissions(const Extension* extension, |
| 316 const ExtensionPermissionSet* permissions); | 295 const ExtensionPermissionSet* permissions); |
| 317 | 296 |
| 318 // Loads the extension from the directory |extension_path|. | |
| 319 void LoadExtension(const FilePath& extension_path); | |
| 320 | |
| 321 // Loads the extension from the directory |extension_path|. | |
| 322 // This version of this method is intended for testing only. | |
| 323 void LoadExtension(const FilePath& extension_path, bool prompt_for_plugins); | |
| 324 | |
| 325 // Same as above, but for use with command line switch --load-extension=path. | |
| 326 void LoadExtensionFromCommandLine(const FilePath& extension_path); | |
| 327 | |
| 328 // Loads any component extensions. | |
| 329 void LoadComponentExtensions(); | |
| 330 | |
| 331 // Loads particular component extension. | |
| 332 const Extension* LoadComponentExtension(const ComponentExtensionInfo& info); | |
| 333 | |
| 334 // Unloads particular component extension. | |
| 335 void UnloadComponentExtension(const ComponentExtensionInfo& info); | |
| 336 | |
| 337 // Loads all known extensions (used by startup and testing code). | |
| 338 void LoadAllExtensions(); | |
| 339 | |
| 340 // Check for updates (or potentially new extensions from external providers) | 297 // Check for updates (or potentially new extensions from external providers) |
| 341 void CheckForExternalUpdates(); | 298 void CheckForExternalUpdates(); |
| 342 | 299 |
| 343 // Unload the specified extension. | 300 // Unload the specified extension. |
| 344 void UnloadExtension(const std::string& extension_id, | 301 void UnloadExtension(const std::string& extension_id, |
| 345 extension_misc::UnloadedExtensionReason reason); | 302 extension_misc::UnloadedExtensionReason reason); |
| 346 | 303 |
| 347 // Unload all extensions. This is currently only called on shutdown, and | 304 // Unload all extensions. This is currently only called on shutdown, and |
| 348 // does not send notifications. | 305 // does not send notifications. |
| 349 void UnloadAllExtensions(); | 306 void UnloadAllExtensions(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 const SkBitmap& GetOmniboxPopupIcon(const std::string& extension_id); | 341 const SkBitmap& GetOmniboxPopupIcon(const std::string& extension_id); |
| 385 | 342 |
| 386 // Called when the initial extensions load has completed. | 343 // Called when the initial extensions load has completed. |
| 387 virtual void OnLoadedInstalledExtensions(); | 344 virtual void OnLoadedInstalledExtensions(); |
| 388 | 345 |
| 389 // Adds |extension| to this ExtensionService and notifies observers than an | 346 // Adds |extension| to this ExtensionService and notifies observers than an |
| 390 // extension has been loaded. Called by the backend after an extension has | 347 // extension has been loaded. Called by the backend after an extension has |
| 391 // been loaded from a file and installed. | 348 // been loaded from a file and installed. |
| 392 void AddExtension(const Extension* extension); | 349 void AddExtension(const Extension* extension); |
| 393 | 350 |
| 394 // Called by the backend when an unpacked extension has been loaded. | |
| 395 void OnLoadSingleExtension(const Extension* extension, | |
| 396 bool prompt_for_plugins); | |
| 397 | |
| 398 // Called by the backend when an extension has been installed. | 351 // Called by the backend when an extension has been installed. |
| 399 void OnExtensionInstalled( | 352 void OnExtensionInstalled( |
| 400 const Extension* extension, bool from_webstore, int page_index); | 353 const Extension* extension, bool from_webstore, int page_index); |
| 401 | 354 |
| 402 // Initializes the |extension|'s active permission set and disables the | 355 // Initializes the |extension|'s active permission set and disables the |
| 403 // extension if the privilege level has increased (e.g., due to an upgrade). | 356 // extension if the privilege level has increased (e.g., due to an upgrade). |
| 404 void InitializePermissions(const Extension* extension); | 357 void InitializePermissions(const Extension* extension); |
| 405 | 358 |
| 406 // Go through each extensions in pref, unload blacklisted extensions | 359 // Go through each extensions in pref, unload blacklisted extensions |
| 407 // and update the blacklist state in pref. | 360 // and update the blacklist state in pref. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 ExtensionPrefs* extension_prefs(); | 397 ExtensionPrefs* extension_prefs(); |
| 445 | 398 |
| 446 ExtensionSettingsFrontend* extension_settings_frontend(); | 399 ExtensionSettingsFrontend* extension_settings_frontend(); |
| 447 | 400 |
| 448 ExtensionContentSettingsStore* GetExtensionContentSettingsStore(); | 401 ExtensionContentSettingsStore* GetExtensionContentSettingsStore(); |
| 449 | 402 |
| 450 // Whether the extension service is ready. | 403 // Whether the extension service is ready. |
| 451 // TODO(skerner): Get rid of this method. crbug.com/63756 | 404 // TODO(skerner): Get rid of this method. crbug.com/63756 |
| 452 bool is_ready() { return ready_; } | 405 bool is_ready() { return ready_; } |
| 453 | 406 |
| 407 extensions::ComponentLoader* component_loader() { |
| 408 return component_loader_.get(); |
| 409 } |
| 410 |
| 454 // Note that this may return NULL if autoupdate is not turned on. | 411 // Note that this may return NULL if autoupdate is not turned on. |
| 455 ExtensionUpdater* updater(); | 412 ExtensionUpdater* updater(); |
| 456 | 413 |
| 457 ExtensionToolbarModel* toolbar_model() { return &toolbar_model_; } | 414 ExtensionToolbarModel* toolbar_model() { return &toolbar_model_; } |
| 458 | 415 |
| 459 ExtensionsQuotaService* quota_service() { return "a_service_; } | 416 ExtensionsQuotaService* quota_service() { return "a_service_; } |
| 460 | 417 |
| 461 ExtensionMenuManager* menu_manager() { return &menu_manager_; } | 418 ExtensionMenuManager* menu_manager() { return &menu_manager_; } |
| 462 | 419 |
| 463 AppNotificationManager* app_notification_manager() { | 420 AppNotificationManager* app_notification_manager() { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 475 #if defined(OS_CHROMEOS) | 432 #if defined(OS_CHROMEOS) |
| 476 ExtensionFileBrowserEventRouter* file_browser_event_router() { | 433 ExtensionFileBrowserEventRouter* file_browser_event_router() { |
| 477 return file_browser_event_router_.get(); | 434 return file_browser_event_router_.get(); |
| 478 } | 435 } |
| 479 chromeos::ExtensionInputMethodEventRouter* input_method_event_router() { | 436 chromeos::ExtensionInputMethodEventRouter* input_method_event_router() { |
| 480 return input_method_event_router_.get(); | 437 return input_method_event_router_.get(); |
| 481 } | 438 } |
| 482 #endif | 439 #endif |
| 483 | 440 |
| 484 // Notify the frontend that there was an error loading an extension. | 441 // Notify the frontend that there was an error loading an extension. |
| 485 // This method is public because ExtensionServiceBackend can post to here. | 442 // This method is public because ExtensionLoadTask can post to here. |
| 486 void ReportExtensionLoadError(const FilePath& extension_path, | 443 void ReportExtensionLoadError(const FilePath& extension_path, |
| 487 const std::string& error, | 444 const std::string& error, |
| 488 bool be_noisy); | 445 bool be_noisy); |
| 489 | 446 |
| 490 // ExtensionHost of background page calls this method right after its render | 447 // ExtensionHost of background page calls this method right after its render |
| 491 // view has been created. | 448 // view has been created. |
| 492 void DidCreateRenderViewForBackgroundPage(ExtensionHost* host); | 449 void DidCreateRenderViewForBackgroundPage(ExtensionHost* host); |
| 493 | 450 |
| 494 // For the extension in |version_path| with |id|, check to see if it's an | 451 // For the extension in |version_path| with |id|, check to see if it's an |
| 495 // externally managed extension. If so, uninstall it. | 452 // externally managed extension. If so, uninstall it. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 // Record a histogram using the PermissionMessage enum values for each | 508 // Record a histogram using the PermissionMessage enum values for each |
| 552 // permission in |e|. | 509 // permission in |e|. |
| 553 // NOTE: If this is ever called with high frequency, the implementation may | 510 // NOTE: If this is ever called with high frequency, the implementation may |
| 554 // need to be made more efficient. | 511 // need to be made more efficient. |
| 555 static void RecordPermissionMessagesHistogram( | 512 static void RecordPermissionMessagesHistogram( |
| 556 const Extension* e, const char* histogram); | 513 const Extension* e, const char* histogram); |
| 557 | 514 |
| 558 // |client| can be NULL for a silent install. | 515 // |client| can be NULL for a silent install. |
| 559 scoped_refptr<CrxInstaller> MakeCrxInstaller(ExtensionInstallUI* client); | 516 scoped_refptr<CrxInstaller> MakeCrxInstaller(ExtensionInstallUI* client); |
| 560 | 517 |
| 518 scoped_refptr<extensions::UnpackedInstaller> MakeUnpackedInstaller(); |
| 519 |
| 520 scoped_refptr<extensions::InstalledExtensionLoader> |
| 521 MakeInstalledExtensionLoader(); |
| 522 |
| 561 #if defined(UNIT_TEST) | 523 #if defined(UNIT_TEST) |
| 562 void TrackTerminatedExtensionForTest(const Extension* extension) { | 524 void TrackTerminatedExtensionForTest(const Extension* extension) { |
| 563 TrackTerminatedExtension(extension); | 525 TrackTerminatedExtension(extension); |
| 564 } | 526 } |
| 565 #endif | 527 #endif |
| 566 | 528 |
| 567 ExtensionWarningSet* extension_warnings() { | 529 ExtensionWarningSet* extension_warnings() { |
| 568 return &extension_warnings_; | 530 return &extension_warnings_; |
| 569 } | 531 } |
| 570 | 532 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 // Handles sending notification that |extension| was loaded. | 624 // Handles sending notification that |extension| was loaded. |
| 663 void NotifyExtensionLoaded(const Extension* extension); | 625 void NotifyExtensionLoaded(const Extension* extension); |
| 664 | 626 |
| 665 // Handles sending notification that |extension| was unloaded. | 627 // Handles sending notification that |extension| was unloaded. |
| 666 void NotifyExtensionUnloaded(const Extension* extension, | 628 void NotifyExtensionUnloaded(const Extension* extension, |
| 667 extension_misc::UnloadedExtensionReason reason); | 629 extension_misc::UnloadedExtensionReason reason); |
| 668 | 630 |
| 669 // Helper that updates the active extension list used for crash reporting. | 631 // Helper that updates the active extension list used for crash reporting. |
| 670 void UpdateActiveExtensionsInCrashReporter(); | 632 void UpdateActiveExtensionsInCrashReporter(); |
| 671 | 633 |
| 672 // Helper method. Loads extension from prefs. | |
| 673 void LoadInstalledExtension(const ExtensionInfo& info, bool write_to_prefs); | |
| 674 | |
| 675 // We implement some Pepper plug-ins using NaCl to take advantage of NaCl's | 634 // We implement some Pepper plug-ins using NaCl to take advantage of NaCl's |
| 676 // strong sandbox. Typically, these NaCl modules are stored in extensions | 635 // strong sandbox. Typically, these NaCl modules are stored in extensions |
| 677 // and registered here. Not all NaCl modules need to register for a MIME | 636 // and registered here. Not all NaCl modules need to register for a MIME |
| 678 // type, just the ones that are responsible for rendering a particular MIME | 637 // type, just the ones that are responsible for rendering a particular MIME |
| 679 // type, like application/pdf. Note: We only register NaCl modules in the | 638 // type, like application/pdf. Note: We only register NaCl modules in the |
| 680 // browser process. | 639 // browser process. |
| 681 void RegisterNaClModule(const GURL& url, const std::string& mime_type); | 640 void RegisterNaClModule(const GURL& url, const std::string& mime_type); |
| 682 void UnregisterNaClModule(const GURL& url); | 641 void UnregisterNaClModule(const GURL& url); |
| 683 | 642 |
| 684 // Call UpdatePluginListWithNaClModules() after registering or unregistering | 643 // Call UpdatePluginListWithNaClModules() after registering or unregistering |
| 685 // a NaCl module to see those changes reflected in the PluginList. | 644 // a NaCl module to see those changes reflected in the PluginList. |
| 686 void UpdatePluginListWithNaClModules(); | 645 void UpdatePluginListWithNaClModules(); |
| 687 | 646 |
| 688 NaClModuleInfoList::iterator FindNaClModule(const GURL& url); | 647 NaClModuleInfoList::iterator FindNaClModule(const GURL& url); |
| 689 | 648 |
| 690 // Returns the flags that should be used with Extension::Create() for an | |
| 691 // extension that is already installed. | |
| 692 int GetExtensionCreateFlagsForInstalledExtension( | |
| 693 const ExtensionInfo* info); | |
| 694 | |
| 695 base::WeakPtrFactory<ExtensionService> weak_ptr_factory_; | 649 base::WeakPtrFactory<ExtensionService> weak_ptr_factory_; |
| 696 | 650 |
| 697 // The profile this ExtensionService is part of. | 651 // The profile this ExtensionService is part of. |
| 698 Profile* profile_; | 652 Profile* profile_; |
| 699 | 653 |
| 700 // Preferences for the owning profile (weak reference). | 654 // Preferences for the owning profile (weak reference). |
| 701 ExtensionPrefs* extension_prefs_; | 655 ExtensionPrefs* extension_prefs_; |
| 702 | 656 |
| 703 // Settings for the owning profile. | 657 // Settings for the owning profile. |
| 704 ExtensionSettingsFrontend extension_settings_frontend_; | 658 ExtensionSettingsFrontend extension_settings_frontend_; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 729 | 683 |
| 730 // The full path to the directory where extensions are installed. | 684 // The full path to the directory where extensions are installed. |
| 731 FilePath install_directory_; | 685 FilePath install_directory_; |
| 732 | 686 |
| 733 // Whether or not extensions are enabled. | 687 // Whether or not extensions are enabled. |
| 734 bool extensions_enabled_; | 688 bool extensions_enabled_; |
| 735 | 689 |
| 736 // Whether to notify users when they attempt to install an extension. | 690 // Whether to notify users when they attempt to install an extension. |
| 737 bool show_extensions_prompts_; | 691 bool show_extensions_prompts_; |
| 738 | 692 |
| 739 // The backend that will do IO on behalf of this instance. | 693 // For loading and unloading component extensions. |
| 740 scoped_refptr<ExtensionServiceBackend> backend_; | 694 scoped_ptr<extensions::ComponentLoader> component_loader_; |
| 741 | 695 |
| 742 // Used by dispatchers to limit API quota for individual extensions. | 696 // Used by dispatchers to limit API quota for individual extensions. |
| 743 ExtensionsQuotaService quota_service_; | 697 ExtensionsQuotaService quota_service_; |
| 744 | 698 |
| 745 // Record that Init() has been called, and chrome::EXTENSIONS_READY | 699 // Record that Init() has been called, and chrome::EXTENSIONS_READY |
| 746 // has fired. | 700 // has fired. |
| 747 bool ready_; | 701 bool ready_; |
| 748 | 702 |
| 749 // Our extension updater, if updates are turned on. | 703 // Our extension updater, if updates are turned on. |
| 750 scoped_ptr<ExtensionUpdater> updater_; | 704 scoped_ptr<ExtensionUpdater> updater_; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 778 // Keeps track of app notifications. | 732 // Keeps track of app notifications. |
| 779 scoped_refptr<AppNotificationManager> app_notification_manager_; | 733 scoped_refptr<AppNotificationManager> app_notification_manager_; |
| 780 | 734 |
| 781 // Keeps track of extension permissions. | 735 // Keeps track of extension permissions. |
| 782 ExtensionPermissionsManager permissions_manager_; | 736 ExtensionPermissionsManager permissions_manager_; |
| 783 | 737 |
| 784 // Keeps track of favicon-sized omnibox icons for extensions. | 738 // Keeps track of favicon-sized omnibox icons for extensions. |
| 785 ExtensionIconManager omnibox_icon_manager_; | 739 ExtensionIconManager omnibox_icon_manager_; |
| 786 ExtensionIconManager omnibox_popup_icon_manager_; | 740 ExtensionIconManager omnibox_popup_icon_manager_; |
| 787 | 741 |
| 788 // List of registered component extensions (see Extension::Location). | |
| 789 typedef std::vector<ComponentExtensionInfo> RegisteredComponentExtensions; | |
| 790 RegisteredComponentExtensions component_extension_manifests_; | |
| 791 | |
| 792 // Manages the promotion of the web store. | 742 // Manages the promotion of the web store. |
| 793 AppsPromo apps_promo_; | 743 AppsPromo apps_promo_; |
| 794 | 744 |
| 795 // Flag to make sure event routers are only initialized once. | 745 // Flag to make sure event routers are only initialized once. |
| 796 bool event_routers_initialized_; | 746 bool event_routers_initialized_; |
| 797 | 747 |
| 798 scoped_ptr<ExtensionDownloadsEventRouter> downloads_event_router_; | 748 scoped_ptr<ExtensionDownloadsEventRouter> downloads_event_router_; |
| 799 | 749 |
| 800 scoped_ptr<HistoryExtensionEventRouter> history_event_router_; | 750 scoped_ptr<HistoryExtensionEventRouter> history_event_router_; |
| 801 | 751 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 ExtensionWarningSet extension_warnings_; | 786 ExtensionWarningSet extension_warnings_; |
| 837 | 787 |
| 838 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 788 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 839 InstallAppsWithUnlimtedStorage); | 789 InstallAppsWithUnlimtedStorage); |
| 840 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 790 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 841 InstallAppsAndCheckStorageProtection); | 791 InstallAppsAndCheckStorageProtection); |
| 842 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 792 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 843 }; | 793 }; |
| 844 | 794 |
| 845 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 795 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |