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

Side by Side Diff: chrome/browser/extensions/extension_service.h

Issue 14490002: Start refactoring extension reloading to avoid redundant reloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
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 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 // extension was in use. 443 // extension was in use.
444 virtual void FinishDelayedInstallation( 444 virtual void FinishDelayedInstallation(
445 const std::string& extension_id) OVERRIDE; 445 const std::string& extension_id) OVERRIDE;
446 446
447 // Returns an update for an extension with the specified id, if installation 447 // Returns an update for an extension with the specified id, if installation
448 // of that update was previously delayed because the extension was in use. If 448 // of that update was previously delayed because the extension was in use. If
449 // no updates are pending for the extension returns NULL. 449 // no updates are pending for the extension returns NULL.
450 virtual const extensions::Extension* GetPendingExtensionUpdate( 450 virtual const extensions::Extension* GetPendingExtensionUpdate(
451 const std::string& extension_id) const OVERRIDE; 451 const std::string& extension_id) const OVERRIDE;
452 452
453 // Initializes the |extension|'s active permission set and disables the
454 // extension if the privilege level has increased (e.g., due to an upgrade).
455 void InitializePermissions(const extensions::Extension* extension);
Jeffrey Yasskin 2013/04/25 01:53:37 Made private and renamed.
456
457 // Go through each extension and unload those that are not allowed to run by 453 // Go through each extension and unload those that are not allowed to run by
458 // management policy providers (ie. network admin and Google-managed 454 // management policy providers (ie. network admin and Google-managed
459 // blacklist). 455 // blacklist).
460 virtual void CheckManagementPolicy() OVERRIDE; 456 virtual void CheckManagementPolicy() OVERRIDE;
461 457
462 virtual void CheckForUpdatesSoon() OVERRIDE; 458 virtual void CheckForUpdatesSoon() OVERRIDE;
463 459
464 // syncer::SyncableService implementation. 460 // syncer::SyncableService implementation.
465 virtual syncer::SyncMergeResult MergeDataAndStartSyncing( 461 virtual syncer::SyncMergeResult MergeDataAndStartSyncing(
466 syncer::ModelType type, 462 syncer::ModelType type,
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 extension_misc::UnloadedExtensionReason reason); 752 extension_misc::UnloadedExtensionReason reason);
757 753
758 // Common helper to finish installing the given extension. 754 // Common helper to finish installing the given extension.
759 void FinishInstallation(const extensions::Extension* extension); 755 void FinishInstallation(const extensions::Extension* extension);
760 756
761 // Reloads |extension_id| and then dispatches to it the PostReloadEvents 757 // Reloads |extension_id| and then dispatches to it the PostReloadEvents
762 // indicated by |events|. 758 // indicated by |events|.
763 void ReloadExtensionWithEvents(const std::string& extension_id, 759 void ReloadExtensionWithEvents(const std::string& extension_id,
764 int events); 760 int events);
765 761
762 // Updates the |extension|'s active permission set to include only permissions
763 // currently requested by the extension and all the permissions required by
764 // the extension.
765 void UpdateActivePermissions(const extensions::Extension* extension);
766
767 // Disables the extension if the privilege level has increased
768 // (e.g., due to an upgrade).
769 void CheckPermissionsIncrease(const extensions::Extension* extension,
770 bool is_upgrade);
771
766 // Returns true if the app with id |extension_id| has any shell windows open. 772 // Returns true if the app with id |extension_id| has any shell windows open.
767 bool HasShellWindows(const std::string& extension_id); 773 bool HasShellWindows(const std::string& extension_id);
768 774
769 // Helper that updates the active extension list used for crash reporting. 775 // Helper that updates the active extension list used for crash reporting.
770 void UpdateActiveExtensionsInCrashReporter(); 776 void UpdateActiveExtensionsInCrashReporter();
771 777
772 // We implement some Pepper plug-ins using NaCl to take advantage of NaCl's 778 // We implement some Pepper plug-ins using NaCl to take advantage of NaCl's
773 // strong sandbox. Typically, these NaCl modules are stored in extensions 779 // strong sandbox. Typically, these NaCl modules are stored in extensions
774 // and registered here. Not all NaCl modules need to register for a MIME 780 // and registered here. Not all NaCl modules need to register for a MIME
775 // type, just the ones that are responsible for rendering a particular MIME 781 // type, just the ones that are responsible for rendering a particular MIME
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 907
902 // The model that tracks extensions with BrowserAction buttons. 908 // The model that tracks extensions with BrowserAction buttons.
903 ExtensionToolbarModel toolbar_model_; 909 ExtensionToolbarModel toolbar_model_;
904 910
905 // Map unloaded extensions' ids to their paths. When a temporarily loaded 911 // Map unloaded extensions' ids to their paths. When a temporarily loaded
906 // extension is unloaded, we lose the information about it and don't have 912 // extension is unloaded, we lose the information about it and don't have
907 // any in the extension preferences file. 913 // any in the extension preferences file.
908 typedef std::map<std::string, base::FilePath> UnloadedExtensionPathMap; 914 typedef std::map<std::string, base::FilePath> UnloadedExtensionPathMap;
909 UnloadedExtensionPathMap unloaded_extension_paths_; 915 UnloadedExtensionPathMap unloaded_extension_paths_;
910 916
911 // Map disabled extensions' ids to their paths. When a temporarily loaded 917 // Store the ids of reloading extensions.
912 // extension is disabled before it is reloaded, keep track of the path so that 918 std::set<std::string> reloading_extensions_;
913 // it can be re-enabled upon a successful load.
914 typedef std::map<std::string, base::FilePath> DisabledExtensionPathMap;
915 DisabledExtensionPathMap disabled_extension_paths_;
916 919
917 // Map of inspector cookies that are detached, waiting for an extension to be 920 // Map of inspector cookies that are detached, waiting for an extension to be
918 // reloaded. 921 // reloaded.
919 typedef std::map<std::string, std::string> OrphanedDevTools; 922 typedef std::map<std::string, std::string> OrphanedDevTools;
920 OrphanedDevTools orphaned_dev_tools_; 923 OrphanedDevTools orphaned_dev_tools_;
921 924
922 // Maps extension ids to a bitmask that indicates which events should be 925 // Maps extension ids to a bitmask that indicates which events should be
923 // dispatched to the extension when it is loaded. 926 // dispatched to the extension when it is loaded.
924 std::map<std::string, int> on_load_events_; 927 std::map<std::string, int> on_load_events_;
925 928
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 ObserverList<extensions::UpdateObserver, true> update_observers_; 996 ObserverList<extensions::UpdateObserver, true> update_observers_;
994 997
995 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, 998 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
996 InstallAppsWithUnlimtedStorage); 999 InstallAppsWithUnlimtedStorage);
997 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, 1000 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
998 InstallAppsAndCheckStorageProtection); 1001 InstallAppsAndCheckStorageProtection);
999 DISALLOW_COPY_AND_ASSIGN(ExtensionService); 1002 DISALLOW_COPY_AND_ASSIGN(ExtensionService);
1000 }; 1003 };
1001 1004
1002 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ 1005 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_service.cc » ('j') | chrome/browser/extensions/extension_service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698