Chromium Code Reviews| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 54 class SequencedTaskRunner; | 54 class SequencedTaskRunner; |
| 55 } | 55 } |
| 56 | 56 |
| 57 namespace extensions { | 57 namespace extensions { |
| 58 class AppNotificationManager; | 58 class AppNotificationManager; |
| 59 class AppSyncData; | 59 class AppSyncData; |
| 60 class BrowserEventRouter; | 60 class BrowserEventRouter; |
| 61 class ComponentLoader; | 61 class ComponentLoader; |
| 62 class ContentSettingsStore; | 62 class ContentSettingsStore; |
| 63 class CrxInstaller; | 63 class CrxInstaller; |
| 64 class Extension; | |
| 65 class ExtensionActionStorageManager; | 64 class ExtensionActionStorageManager; |
| 66 class ExtensionSyncData; | 65 class ExtensionSyncData; |
| 67 class ExtensionSystem; | 66 class ExtensionSystem; |
| 68 class ExtensionUpdater; | 67 class ExtensionUpdater; |
| 69 class PendingExtensionManager; | 68 class PendingExtensionManager; |
| 70 class SettingsFrontend; | 69 class SettingsFrontend; |
| 71 } | 70 } |
| 72 | 71 |
| 73 namespace syncer { | 72 namespace syncer { |
| 74 class SyncErrorFactory; | 73 class SyncErrorFactory; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 const std::string& extension_id) const = 0; | 109 const std::string& extension_id) const = 0; |
| 111 | 110 |
| 112 virtual void CheckManagementPolicy() = 0; | 111 virtual void CheckManagementPolicy() = 0; |
| 113 | 112 |
| 114 // Safe to call multiple times in a row. | 113 // Safe to call multiple times in a row. |
| 115 // | 114 // |
| 116 // TODO(akalin): Remove this method (and others) once we refactor | 115 // TODO(akalin): Remove this method (and others) once we refactor |
| 117 // themes sync to not use it directly. | 116 // themes sync to not use it directly. |
| 118 virtual void CheckForUpdatesSoon() = 0; | 117 virtual void CheckForUpdatesSoon() = 0; |
| 119 | 118 |
| 119 virtual void AddExtensions(const extensions::ExtensionList& extensions) = 0; | |
| 120 virtual void AddExtension(const extensions::Extension* extension) = 0; | 120 virtual void AddExtension(const extensions::Extension* extension) = 0; |
| 121 virtual void AddComponentExtension( | 121 virtual void AddComponentExtension( |
| 122 const extensions::Extension* extension) = 0; | 122 const extensions::Extension* extension) = 0; |
| 123 | 123 |
| 124 virtual void UnloadExtension( | 124 virtual void UnloadExtension( |
| 125 const std::string& extension_id, | 125 const std::string& extension_id, |
| 126 extension_misc::UnloadedExtensionReason reason) = 0; | 126 extension_misc::UnloadedExtensionReason reason) = 0; |
| 127 | 127 |
| 128 virtual void SyncExtensionChangeIfNeeded( | 128 virtual void SyncExtensionChangeIfNeeded( |
| 129 const extensions::Extension& extension) = 0; | 129 const extensions::Extension& extension) = 0; |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 421 // permissions the given extension has been granted. | 421 // permissions the given extension has been granted. |
| 422 bool ExtensionBindingsAllowed(const GURL& url); | 422 bool ExtensionBindingsAllowed(const GURL& url); |
| 423 | 423 |
| 424 // Returns true if a normal browser window should avoid showing |url| in a | 424 // Returns true if a normal browser window should avoid showing |url| in a |
| 425 // tab. In this case, |url| is also rewritten to an error URL. | 425 // tab. In this case, |url| is also rewritten to an error URL. |
| 426 bool ShouldBlockUrlInBrowserTab(GURL* url); | 426 bool ShouldBlockUrlInBrowserTab(GURL* url); |
| 427 | 427 |
| 428 // Called when the initial extensions load has completed. | 428 // Called when the initial extensions load has completed. |
| 429 virtual void OnLoadedInstalledExtensions(); | 429 virtual void OnLoadedInstalledExtensions(); |
| 430 | 430 |
| 431 // Adds |extension| to this ExtensionService and notifies observers than an | 431 // Adds every extension in |extensions| to this ExtensionService and notifies |
| 432 // extension has been loaded. Called by the backend after an extension has | 432 // observers that the extensions have been loaded, then asynchronously checks |
| 433 // been loaded from a file and installed. | 433 // those against the blacklist. |
| 434 // | |
| 435 // If possible, please check the blacklist ahead of time, since this method | |
| 436 // may end up loading blacklisted extensions for a short period of time. | |
| 437 virtual void AddExtensions( | |
| 438 const extensions::ExtensionList& extensions) OVERRIDE; | |
| 439 | |
| 440 // Calls AddExtensions with a single extension, please see comment. | |
| 434 virtual void AddExtension(const extensions::Extension* extension) OVERRIDE; | 441 virtual void AddExtension(const extensions::Extension* extension) OVERRIDE; |
| 435 | 442 |
| 436 // Check if we have preferences for the component extension and, if not or if | 443 // Check if we have preferences for the component extension and, if not or if |
| 437 // the stored version differs, install the extension (without requirements | 444 // the stored version differs, install the extension (without requirements |
| 438 // checking) before calling AddExtension. | 445 // checking) before calling AddNonBlacklistedExtension. |
| 439 virtual void AddComponentExtension(const extensions::Extension* extension) | 446 virtual void AddComponentExtension(const extensions::Extension* extension) |
| 440 OVERRIDE; | 447 OVERRIDE; |
| 441 | 448 |
| 442 // Called by the backend when an extension has been installed. | 449 // Instructs the extension service to install an extension some point in the |
| 443 void OnExtensionInstalled( | 450 // future, then runs |on_done|. |
|
Matt Perry
2013/02/07 01:05:35
After thinking about it, I can see the reasoning b
Matt Perry
2013/02/07 01:10:23
Actually, lets just make it explicit. Keep OnExten
not at google - send to devlin
2013/02/07 02:11:37
Done.
| |
| 451 // | |
| 452 // If installation succeeds the callback will be passed true. If it fails | |
| 453 // (e.g. due to blacklisting) then it will be passed false. | |
| 454 void InstallExtensionAsync( | |
| 444 const extensions::Extension* extension, | 455 const extensions::Extension* extension, |
| 445 const syncer::StringOrdinal& page_ordinal, | 456 const syncer::StringOrdinal& page_ordinal, |
| 446 bool has_requirement_errors, | 457 bool has_requirement_errors, |
| 458 bool wait_for_idle, | |
| 459 const base::Callback<void(bool /*success*/)>& on_done); | |
| 460 | |
| 461 // Instructs the extension service to install an extension now. No blacklist | |
| 462 // checking is done. | |
| 463 void InstallExtensionNow( | |
| 464 const extensions::Extension* extension, | |
| 465 const syncer::StringOrdinal& page_ordinal, | |
| 466 bool has_requirement_errors, | |
| 447 bool wait_for_idle); | 467 bool wait_for_idle); |
| 448 | 468 |
| 449 // Similar to FinishInstallation, but first checks if there still is an update | 469 // Similar to FinishInstallation, but first checks if there still is an update |
| 450 // pending for the extension, and makes sure the extension is still idle. | 470 // pending for the extension, and makes sure the extension is still idle. |
| 451 void MaybeFinishDelayedInstallation(const std::string& extension_id); | 471 void MaybeFinishDelayedInstallation(const std::string& extension_id); |
| 452 | 472 |
| 453 // Finishes installation of an update for an extension with the specified id, | 473 // Finishes installation of an update for an extension with the specified id, |
| 454 // when installation of that extension was previously delayed because the | 474 // when installation of that extension was previously delayed because the |
| 455 // extension was in use. | 475 // extension was in use. |
| 456 virtual void FinishDelayedInstallation( | 476 virtual void FinishDelayedInstallation( |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 749 }; | 769 }; |
| 750 | 770 |
| 751 // Adds the given extension to the list of terminated extensions if | 771 // Adds the given extension to the list of terminated extensions if |
| 752 // it is not already there and unloads it. | 772 // it is not already there and unloads it. |
| 753 void TrackTerminatedExtension(const extensions::Extension* extension); | 773 void TrackTerminatedExtension(const extensions::Extension* extension); |
| 754 | 774 |
| 755 // Removes the extension with the given id from the list of | 775 // Removes the extension with the given id from the list of |
| 756 // terminated extensions if it is there. | 776 // terminated extensions if it is there. |
| 757 void UntrackTerminatedExtension(const std::string& id); | 777 void UntrackTerminatedExtension(const std::string& id); |
| 758 | 778 |
| 779 // Adds an extension to the service without checking any blacklist. | |
| 780 bool AddNonBlacklistedExtension(const extensions::Extension* extension); | |
| 781 | |
| 759 // Update preferences for a new or updated extension; notify observers that | 782 // Update preferences for a new or updated extension; notify observers that |
| 760 // the extension is installed, e.g., to update event handlers on background | 783 // the extension is installed, e.g., to update event handlers on background |
| 761 // pages; and perform other extension install tasks before calling | 784 // pages; and perform other extension install tasks before calling |
| 762 // AddExtension. | 785 // AddNonBlacklistedExtension. |
| 763 void AddNewOrUpdatedExtension(const extensions::Extension* extension, | 786 void AddNewOrUpdatedExtension(const extensions::Extension* extension, |
| 764 extensions::Extension::State initial_state, | 787 extensions::Extension::State initial_state, |
| 765 const syncer::StringOrdinal& page_ordinal); | 788 const syncer::StringOrdinal& page_ordinal); |
| 766 | 789 |
| 767 // Handles sending notification that |extension| was loaded. | 790 // Handles sending notification that |extension| was loaded. |
| 768 void NotifyExtensionLoaded(const extensions::Extension* extension); | 791 void NotifyExtensionLoaded(const extensions::Extension* extension); |
| 769 | 792 |
| 770 // Handles sending notification that |extension| was unloaded. | 793 // Handles sending notification that |extension| was unloaded. |
| 771 void NotifyExtensionUnloaded(const extensions::Extension* extension, | 794 void NotifyExtensionUnloaded(const extensions::Extension* extension, |
| 772 extension_misc::UnloadedExtensionReason reason); | 795 extension_misc::UnloadedExtensionReason reason); |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1003 #endif | 1026 #endif |
| 1004 | 1027 |
| 1005 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 1028 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 1006 InstallAppsWithUnlimtedStorage); | 1029 InstallAppsWithUnlimtedStorage); |
| 1007 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 1030 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| 1008 InstallAppsAndCheckStorageProtection); | 1031 InstallAppsAndCheckStorageProtection); |
| 1009 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 1032 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
| 1010 }; | 1033 }; |
| 1011 | 1034 |
| 1012 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 1035 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
| OLD | NEW |