| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 virtual const ExtensionSet* disabled_extensions() const = 0; | 100 virtual const ExtensionSet* disabled_extensions() const = 0; |
| 101 virtual extensions::PendingExtensionManager* pending_extension_manager() = 0; | 101 virtual extensions::PendingExtensionManager* pending_extension_manager() = 0; |
| 102 | 102 |
| 103 // Install an update. Return true if the install can be started. | 103 // Install an update. Return true if the install can be started. |
| 104 // Set out_crx_installer to the installer if one was started. | 104 // Set out_crx_installer to the installer if one was started. |
| 105 virtual bool UpdateExtension( | 105 virtual bool UpdateExtension( |
| 106 const std::string& id, | 106 const std::string& id, |
| 107 const FilePath& path, | 107 const FilePath& path, |
| 108 const GURL& download_url, | 108 const GURL& download_url, |
| 109 extensions::CrxInstaller** out_crx_installer) = 0; | 109 extensions::CrxInstaller** out_crx_installer) = 0; |
| 110 virtual const extensions::Extension* GetExtensionById(const std::string& id, | 110 virtual const extensions::Extension* GetExtensionById( |
| 111 bool include_disabled) const = 0; | 111 const std::string& id, |
| 112 bool include_disabled) const = 0; |
| 112 virtual const extensions::Extension* GetInstalledExtension( | 113 virtual const extensions::Extension* GetInstalledExtension( |
| 113 const std::string& id) const = 0; | 114 const std::string& id) const = 0; |
| 114 | 115 |
| 115 virtual const extensions::Extension* GetPendingExtensionUpdate( | 116 virtual const extensions::Extension* GetPendingExtensionUpdate( |
| 116 const std::string& extension_id) const = 0; | 117 const std::string& extension_id) const = 0; |
| 117 virtual void FinishDelayedInstallation(const std::string& extension_id) = 0; | 118 virtual void FinishDelayedInstallation(const std::string& extension_id) = 0; |
| 118 | 119 |
| 119 virtual bool IsExtensionEnabled(const std::string& extension_id) const = 0; | 120 virtual bool IsExtensionEnabled(const std::string& extension_id) const = 0; |
| 120 virtual bool IsExternalExtensionUninstalled( | 121 virtual bool IsExternalExtensionUninstalled( |
| 121 const std::string& extension_id) const = 0; | 122 const std::string& extension_id) const = 0; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 extensions::Blacklist* blacklist, | 205 extensions::Blacklist* blacklist, |
| 205 bool autoupdate_enabled, | 206 bool autoupdate_enabled, |
| 206 bool extensions_enabled); | 207 bool extensions_enabled); |
| 207 | 208 |
| 208 virtual ~ExtensionService(); | 209 virtual ~ExtensionService(); |
| 209 | 210 |
| 210 // Gets the list of currently installed extensions. | 211 // Gets the list of currently installed extensions. |
| 211 virtual const ExtensionSet* extensions() const OVERRIDE; | 212 virtual const ExtensionSet* extensions() const OVERRIDE; |
| 212 virtual const ExtensionSet* disabled_extensions() const OVERRIDE; | 213 virtual const ExtensionSet* disabled_extensions() const OVERRIDE; |
| 213 const ExtensionSet* terminated_extensions() const; | 214 const ExtensionSet* terminated_extensions() const; |
| 215 const ExtensionSet* blacklisted_extensions() const; |
| 214 | 216 |
| 215 // Returns a set of all installed, disabled, and terminated extensions and | 217 // Returns a set of all installed, disabled, blacklisted, and terminated |
| 216 // transfers ownership to caller. | 218 // extensions. |
| 217 const ExtensionSet* GenerateInstalledExtensionsSet() const; | 219 scoped_ptr<const ExtensionSet> GenerateInstalledExtensionsSet() const; |
| 218 | 220 |
| 219 // Returns a set of all extensions disabled by the sideload wipeout | 221 // Returns a set of all extensions disabled by the sideload wipeout |
| 220 // initiative. | 222 // initiative. |
| 221 const ExtensionSet* GetWipedOutExtensions() const; | 223 scoped_ptr<const ExtensionSet> GetWipedOutExtensions() const; |
| 222 | 224 |
| 223 // Gets the object managing the set of pending extensions. | 225 // Gets the object managing the set of pending extensions. |
| 224 virtual extensions::PendingExtensionManager* | 226 virtual extensions::PendingExtensionManager* |
| 225 pending_extension_manager() OVERRIDE; | 227 pending_extension_manager() OVERRIDE; |
| 226 | 228 |
| 227 const FilePath& install_directory() const { return install_directory_; } | 229 const FilePath& install_directory() const { return install_directory_; } |
| 228 | 230 |
| 229 extensions::ProcessMap* process_map() { return &process_map_; } | 231 extensions::ProcessMap* process_map() { return &process_map_; } |
| 230 | 232 |
| 231 // Whether this extension can run in an incognito window. | 233 // Whether this extension can run in an incognito window. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 // Called when the ProfileSyncService for the associated Profile is | 300 // Called when the ProfileSyncService for the associated Profile is |
| 299 // going to be destroyed. This is guaranteed to be called exactly | 301 // going to be destroyed. This is guaranteed to be called exactly |
| 300 // once before Shutdown() is called. | 302 // once before Shutdown() is called. |
| 301 // | 303 // |
| 302 // TODO(akalin): Remove this once http://crbug.com/153827 is fixed. | 304 // TODO(akalin): Remove this once http://crbug.com/153827 is fixed. |
| 303 void OnProfileSyncServiceShutdown(); | 305 void OnProfileSyncServiceShutdown(); |
| 304 | 306 |
| 305 // Called when the associated Profile is going to be destroyed. | 307 // Called when the associated Profile is going to be destroyed. |
| 306 void Shutdown(); | 308 void Shutdown(); |
| 307 | 309 |
| 308 // Look up an extension by ID. Does not include terminated | 310 // Look up an extension by ID. Does not include terminated |
| 309 // extensions. | 311 // extensions. |
| 310 virtual const extensions::Extension* GetExtensionById( | 312 virtual const extensions::Extension* GetExtensionById( |
| 311 const std::string& id, bool include_disabled) const OVERRIDE; | 313 const std::string& id, bool include_disabled) const OVERRIDE; |
| 312 | 314 |
| 315 enum IncludeFlag { |
| 316 INCLUDE_NONE = 0, |
| 317 INCLUDE_ENABLED = 1 << 0, |
| 318 INCLUDE_DISABLED = 1 << 1, |
| 319 INCLUDE_TERMINATED = 1 << 2, |
| 320 INCLUDE_BLACKLISTED = 1 << 3, |
| 321 INCLUDE_EVERYTHING = (1 << 4) - 1, |
| 322 }; |
| 323 |
| 324 // Look up an extension by ID, selecting which sets to look in: |
| 325 // * extensions() --> INCLUDE_ENABLED |
| 326 // * disabled_extensions() --> INCLUDE_DISABLED |
| 327 // * terminated_extensions() --> INCLUDE_TERMINATED |
| 328 // * blacklisted_extensions() --> INCLUDE_BLACKLISTED |
| 329 const extensions::Extension* GetExtensionById(const std::string& id, |
| 330 int include_mask) const; |
| 331 |
| 313 // Looks up a terminated (crashed) extension by ID. | 332 // Looks up a terminated (crashed) extension by ID. |
| 314 const extensions::Extension* | 333 const extensions::Extension* |
| 315 GetTerminatedExtension(const std::string& id) const; | 334 GetTerminatedExtension(const std::string& id) const; |
| 316 | 335 |
| 317 // Looks up an extension by ID, regardless of whether it's enabled, | 336 // Looks up an extension by ID, regardless of whether it's enabled, |
| 318 // disabled, or terminated. | 337 // disabled, blacklisted, or terminated. |
| 319 virtual const extensions::Extension* GetInstalledExtension( | 338 virtual const extensions::Extension* GetInstalledExtension( |
| 320 const std::string& id) const OVERRIDE; | 339 const std::string& id) const OVERRIDE; |
| 321 | 340 |
| 322 // Updates a currently-installed extension with the contents from | 341 // Updates a currently-installed extension with the contents from |
| 323 // |extension_path|. | 342 // |extension_path|. |
| 324 // TODO(aa): This method can be removed. ExtensionUpdater could use | 343 // TODO(aa): This method can be removed. ExtensionUpdater could use |
| 325 // CrxInstaller directly instead. | 344 // CrxInstaller directly instead. |
| 326 virtual bool UpdateExtension( | 345 virtual bool UpdateExtension( |
| 327 const std::string& id, | 346 const std::string& id, |
| 328 const FilePath& extension_path, | 347 const FilePath& extension_path, |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 void OnExtensionInstallPrefChanged(); | 754 void OnExtensionInstallPrefChanged(); |
| 736 | 755 |
| 737 // Handles setting the extension specific values in |extension_sync_data| to | 756 // Handles setting the extension specific values in |extension_sync_data| to |
| 738 // the current system. | 757 // the current system. |
| 739 // Returns false if the changes were not completely applied and need to be | 758 // Returns false if the changes were not completely applied and need to be |
| 740 // tried again later. | 759 // tried again later. |
| 741 bool ProcessExtensionSyncDataHelper( | 760 bool ProcessExtensionSyncDataHelper( |
| 742 const extensions::ExtensionSyncData& extension_sync_data, | 761 const extensions::ExtensionSyncData& extension_sync_data, |
| 743 syncer::ModelType type); | 762 syncer::ModelType type); |
| 744 | 763 |
| 745 enum IncludeFlag { | |
| 746 INCLUDE_NONE = 0, | |
| 747 INCLUDE_ENABLED = 1 << 0, | |
| 748 INCLUDE_DISABLED = 1 << 1, | |
| 749 INCLUDE_TERMINATED = 1 << 2 | |
| 750 }; | |
| 751 | |
| 752 // Events to be fired after an extension is reloaded. | 764 // Events to be fired after an extension is reloaded. |
| 753 enum PostReloadEvents { | 765 enum PostReloadEvents { |
| 754 EVENT_NONE = 0, | 766 EVENT_NONE = 0, |
| 755 EVENT_LAUNCHED = 1 << 0, | 767 EVENT_LAUNCHED = 1 << 0, |
| 756 EVENT_RESTARTED = 1 << 1, | 768 EVENT_RESTARTED = 1 << 1, |
| 757 }; | 769 }; |
| 758 | 770 |
| 759 // Look up an extension by ID, optionally including either or both of enabled | |
| 760 // and disabled extensions. | |
| 761 const extensions::Extension* GetExtensionByIdInternal( | |
| 762 const std::string& id, | |
| 763 int include_mask) const; | |
| 764 | |
| 765 // Adds the given extension to the list of terminated extensions if | 771 // Adds the given extension to the list of terminated extensions if |
| 766 // it is not already there and unloads it. | 772 // it is not already there and unloads it. |
| 767 void TrackTerminatedExtension(const extensions::Extension* extension); | 773 void TrackTerminatedExtension(const extensions::Extension* extension); |
| 768 | 774 |
| 769 // Removes the extension with the given id from the list of | 775 // Removes the extension with the given id from the list of |
| 770 // terminated extensions if it is there. | 776 // terminated extensions if it is there. |
| 771 void UntrackTerminatedExtension(const std::string& id); | 777 void UntrackTerminatedExtension(const std::string& id); |
| 772 | 778 |
| 773 // Update preferences for a new or updated extension; notify observers that | 779 // Update preferences for a new or updated extension; notify observers that |
| 774 // the extension is installed, e.g., to update event handlers on background | 780 // the extension is installed, e.g., to update event handlers on background |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 bool IsExtensionIdle(const std::string& extension_id) const; | 843 bool IsExtensionIdle(const std::string& extension_id) const; |
| 838 | 844 |
| 839 // Helper to determine if updating an extensions should proceed immediately, | 845 // Helper to determine if updating an extensions should proceed immediately, |
| 840 // or if we should delay the update until further notice. | 846 // or if we should delay the update until further notice. |
| 841 bool ShouldDelayExtensionUpdate(const std::string& extension_id, | 847 bool ShouldDelayExtensionUpdate(const std::string& extension_id, |
| 842 bool wait_for_idle) const; | 848 bool wait_for_idle) const; |
| 843 | 849 |
| 844 // extensions::Blacklist::Observer implementation. | 850 // extensions::Blacklist::Observer implementation. |
| 845 virtual void OnBlacklistUpdated() OVERRIDE; | 851 virtual void OnBlacklistUpdated() OVERRIDE; |
| 846 | 852 |
| 853 // Manages the blacklisted extensions, intended as callback from |
| 854 // Blacklist::GetBlacklistedIDs. |
| 855 void ManageBlacklist(const std::set<std::string>& old_blacklisted_ids, |
| 856 const std::set<std::string>& new_blacklisted_ids); |
| 857 |
| 847 // The normal profile associated with this ExtensionService. | 858 // The normal profile associated with this ExtensionService. |
| 848 Profile* profile_; | 859 Profile* profile_; |
| 849 | 860 |
| 850 // The ExtensionSystem for the profile above. | 861 // The ExtensionSystem for the profile above. |
| 851 extensions::ExtensionSystem* system_; | 862 extensions::ExtensionSystem* system_; |
| 852 | 863 |
| 853 // Preferences for the owning profile (weak reference). | 864 // Preferences for the owning profile. |
| 854 extensions::ExtensionPrefs* extension_prefs_; | 865 extensions::ExtensionPrefs* extension_prefs_; |
| 855 | 866 |
| 867 // Blacklist for the owning profile. |
| 868 extensions::Blacklist* blacklist_; |
| 869 |
| 856 // Settings for the owning profile. | 870 // Settings for the owning profile. |
| 857 scoped_ptr<extensions::SettingsFrontend> settings_frontend_; | 871 scoped_ptr<extensions::SettingsFrontend> settings_frontend_; |
| 858 | 872 |
| 859 // The current list of installed extensions. | 873 // The current list of installed extensions. |
| 860 ExtensionSet extensions_; | 874 ExtensionSet extensions_; |
| 861 | 875 |
| 862 // The list of installed extensions that have been disabled. | 876 // The list of installed extensions that have been disabled. |
| 863 ExtensionSet disabled_extensions_; | 877 ExtensionSet disabled_extensions_; |
| 864 | 878 |
| 865 // The list of installed extensions that have been terminated. | 879 // The list of installed extensions that have been terminated. |
| 866 ExtensionSet terminated_extensions_; | 880 ExtensionSet terminated_extensions_; |
| 867 | 881 |
| 882 // The list of installed extensions that have been blacklisted. Generally |
| 883 // these shouldn't be considered as installed by the extension platform: we |
| 884 // only keep them around so that if extensions are blacklisted by mistake |
| 885 // they can easily be un-blacklisted. |
| 886 ExtensionSet blacklisted_extensions_; |
| 887 |
| 868 // The list of extension updates that are waiting to be installed. | 888 // The list of extension updates that are waiting to be installed. |
| 869 ExtensionSet pending_extension_updates_; | 889 ExtensionSet pending_extension_updates_; |
| 870 | 890 |
| 871 // Hold the set of pending extensions. | 891 // Hold the set of pending extensions. |
| 872 extensions::PendingExtensionManager pending_extension_manager_; | 892 extensions::PendingExtensionManager pending_extension_manager_; |
| 873 | 893 |
| 874 // The map of extension IDs to their runtime data. | 894 // The map of extension IDs to their runtime data. |
| 875 ExtensionRuntimeDataMap extension_runtime_data_; | 895 ExtensionRuntimeDataMap extension_runtime_data_; |
| 876 | 896 |
| 877 // The full path to the directory where extensions are installed. | 897 // The full path to the directory where extensions are installed. |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 #endif | 1028 #endif |
| 1009 | 1029 |
| 1010 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 1030 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 1011 InstallAppsWithUnlimtedStorage); | 1031 InstallAppsWithUnlimtedStorage); |
| 1012 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 1032 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 1013 InstallAppsAndCheckStorageProtection); | 1033 InstallAppsAndCheckStorageProtection); |
| 1014 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 1034 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 1015 }; | 1035 }; |
| 1016 | 1036 |
| 1017 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 1037 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |