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 <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/compiler_specific.h" | 13 #include "base/compiler_specific.h" |
14 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
15 #include "base/gtest_prod_util.h" | 15 #include "base/gtest_prod_util.h" |
16 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
17 #include "base/memory/weak_ptr.h" | 17 #include "base/memory/weak_ptr.h" |
18 #include "base/prefs/pref_change_registrar.h" | 18 #include "base/prefs/pref_change_registrar.h" |
19 #include "base/strings/string16.h" | 19 #include "base/strings/string16.h" |
20 #include "chrome/browser/extensions/blacklist.h" | 20 #include "chrome/browser/extensions/blacklist.h" |
21 #include "chrome/browser/extensions/pending_extension_manager.h" | 21 #include "chrome/browser/extensions/pending_extension_manager.h" |
22 #include "content/public/browser/notification_observer.h" | 22 #include "content/public/browser/notification_observer.h" |
23 #include "content/public/browser/notification_registrar.h" | 23 #include "content/public/browser/notification_registrar.h" |
24 #include "extensions/browser/external_provider_interface.h" | 24 #include "extensions/browser/external_provider_interface.h" |
| 25 #include "extensions/browser/install_flag.h" |
25 #include "extensions/browser/management_policy.h" | 26 #include "extensions/browser/management_policy.h" |
26 #include "extensions/browser/process_manager.h" | 27 #include "extensions/browser/process_manager.h" |
27 #include "extensions/common/extension.h" | 28 #include "extensions/common/extension.h" |
28 #include "extensions/common/extension_set.h" | 29 #include "extensions/common/extension_set.h" |
29 #include "extensions/common/manifest.h" | 30 #include "extensions/common/manifest.h" |
30 #include "sync/api/string_ordinal.h" | 31 #include "sync/api/string_ordinal.h" |
31 | 32 |
32 class ExtensionSyncService; | 33 class ExtensionSyncService; |
33 class GURL; | 34 class GURL; |
34 class Profile; | 35 class Profile; |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 void GrantPermissions(const extensions::Extension* extension); | 275 void GrantPermissions(const extensions::Extension* extension); |
275 | 276 |
276 // Check for updates (or potentially new extensions from external providers) | 277 // Check for updates (or potentially new extensions from external providers) |
277 void CheckForExternalUpdates(); | 278 void CheckForExternalUpdates(); |
278 | 279 |
279 // Called when the initial extensions load has completed. | 280 // Called when the initial extensions load has completed. |
280 virtual void OnLoadedInstalledExtensions(); | 281 virtual void OnLoadedInstalledExtensions(); |
281 | 282 |
282 // Informs the service that an extension's files are in place for loading. | 283 // Informs the service that an extension's files are in place for loading. |
283 // | 284 // |
284 // |page_ordinal| is the location of the extension in the app launcher. | 285 // |extension| the extension |
285 // |has_requirement_errors| is true if requirements of the extension weren't | 286 // |page_ordinal| the location of the extension in the app launcher |
286 // met (for example graphics capabilities). | 287 // |install_flags| a bitmask of extensions::InstallFlags |
287 // |blacklist_state| will be BLACKLISTED if the extension is blacklisted. | |
288 // |wait_for_idle| may be false to install the extension immediately. | |
289 void OnExtensionInstalled(const extensions::Extension* extension, | 288 void OnExtensionInstalled(const extensions::Extension* extension, |
290 const syncer::StringOrdinal& page_ordinal, | 289 const syncer::StringOrdinal& page_ordinal, |
291 bool has_requirement_errors, | 290 int install_flags); |
292 extensions::BlacklistState blacklist_state, | 291 void OnExtensionInstalled(const extensions::Extension* extension, |
293 bool is_ephemeral, | 292 const syncer::StringOrdinal& page_ordinal) { |
294 bool wait_for_idle); | 293 OnExtensionInstalled(extension, |
| 294 page_ordinal, |
| 295 static_cast<int>(extensions::kInstallFlagNone)); |
| 296 } |
295 | 297 |
296 // Checks for delayed installation for all pending installs. | 298 // Checks for delayed installation for all pending installs. |
297 void MaybeFinishDelayedInstallations(); | 299 void MaybeFinishDelayedInstallations(); |
298 | 300 |
299 // Promotes an ephemeral app to a regular installed app. Ephemeral apps | 301 // Promotes an ephemeral app to a regular installed app. Ephemeral apps |
300 // are already installed in extension system (albiet transiently) and only | 302 // are already installed in extension system (albiet transiently) and only |
301 // need to be exposed in the UI. Set |is_from_sync| to true if the | 303 // need to be exposed in the UI. Set |is_from_sync| to true if the |
302 // install was initiated via sync. | 304 // install was initiated via sync. |
303 void PromoteEphemeralApp( | 305 void PromoteEphemeralApp( |
304 const extensions::Extension* extension, bool is_from_sync); | 306 const extensions::Extension* extension, bool is_from_sync); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 void TrackTerminatedExtension(const extensions::Extension* extension); | 478 void TrackTerminatedExtension(const extensions::Extension* extension); |
477 | 479 |
478 // Removes the extension with the given id from the list of | 480 // Removes the extension with the given id from the list of |
479 // terminated extensions if it is there. | 481 // terminated extensions if it is there. |
480 void UntrackTerminatedExtension(const std::string& id); | 482 void UntrackTerminatedExtension(const std::string& id); |
481 | 483 |
482 // Update preferences for a new or updated extension; notify observers that | 484 // Update preferences for a new or updated extension; notify observers that |
483 // the extension is installed, e.g., to update event handlers on background | 485 // the extension is installed, e.g., to update event handlers on background |
484 // pages; and perform other extension install tasks before calling | 486 // pages; and perform other extension install tasks before calling |
485 // AddExtension. | 487 // AddExtension. |
| 488 // |install_flags| is a bitmask of extensions::InstallFlags. |
486 void AddNewOrUpdatedExtension(const extensions::Extension* extension, | 489 void AddNewOrUpdatedExtension(const extensions::Extension* extension, |
487 extensions::Extension::State initial_state, | 490 extensions::Extension::State initial_state, |
488 extensions::BlacklistState blacklist_state, | 491 int install_flags, |
489 bool is_ephemeral, | |
490 const syncer::StringOrdinal& page_ordinal, | 492 const syncer::StringOrdinal& page_ordinal, |
491 const std::string& install_parameter); | 493 const std::string& install_parameter); |
492 | 494 |
493 // Handles sending notification that |extension| was loaded. | 495 // Handles sending notification that |extension| was loaded. |
494 void NotifyExtensionLoaded(const extensions::Extension* extension); | 496 void NotifyExtensionLoaded(const extensions::Extension* extension); |
495 | 497 |
496 // Handles sending notification that |extension| was unloaded. | 498 // Handles sending notification that |extension| was unloaded. |
497 void NotifyExtensionUnloaded( | 499 void NotifyExtensionUnloaded( |
498 const extensions::Extension* extension, | 500 const extensions::Extension* extension, |
499 extensions::UnloadedExtensionInfo::Reason reason); | 501 extensions::UnloadedExtensionInfo::Reason reason); |
(...skipping 16 matching lines...) Expand all Loading... |
516 // Helper that updates the active extension list used for crash reporting. | 518 // Helper that updates the active extension list used for crash reporting. |
517 void UpdateActiveExtensionsInCrashReporter(); | 519 void UpdateActiveExtensionsInCrashReporter(); |
518 | 520 |
519 // Helper to determine whether we should initially enable an installed | 521 // Helper to determine whether we should initially enable an installed |
520 // (or upgraded) extension. | 522 // (or upgraded) extension. |
521 bool ShouldEnableOnInstall(const extensions::Extension* extension); | 523 bool ShouldEnableOnInstall(const extensions::Extension* extension); |
522 | 524 |
523 // Helper to determine if updating an extensions should proceed immediately, | 525 // Helper to determine if updating an extensions should proceed immediately, |
524 // or if we should delay the update until further notice. | 526 // or if we should delay the update until further notice. |
525 bool ShouldDelayExtensionUpdate(const std::string& extension_id, | 527 bool ShouldDelayExtensionUpdate(const std::string& extension_id, |
526 bool wait_for_idle) const; | 528 bool install_immediately) const; |
527 | 529 |
528 // Manages the blacklisted extensions, intended as callback from | 530 // Manages the blacklisted extensions, intended as callback from |
529 // Blacklist::GetBlacklistedIDs. | 531 // Blacklist::GetBlacklistedIDs. |
530 void ManageBlacklist( | 532 void ManageBlacklist( |
531 const extensions::Blacklist::BlacklistStateMap& blacklisted_ids); | 533 const extensions::Blacklist::BlacklistStateMap& blacklisted_ids); |
532 | 534 |
533 // Add extensions in |blocked| to blacklisted_extensions, remove extensions | 535 // Add extensions in |blocked| to blacklisted_extensions, remove extensions |
534 // that are neither in |blocked|, nor in |unchanged|. | 536 // that are neither in |blocked|, nor in |unchanged|. |
535 void UpdateBlockedExtensions(const extensions::ExtensionIdSet& blocked, | 537 void UpdateBlockedExtensions(const extensions::ExtensionIdSet& blocked, |
536 const extensions::ExtensionIdSet& unchanged); | 538 const extensions::ExtensionIdSet& unchanged); |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 GreylistedExtensionDisabled); | 708 GreylistedExtensionDisabled); |
707 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 709 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
708 GreylistDontEnableManuallyDisabled); | 710 GreylistDontEnableManuallyDisabled); |
709 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, | 711 FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
710 GreylistUnknownDontChange); | 712 GreylistUnknownDontChange); |
711 | 713 |
712 DISALLOW_COPY_AND_ASSIGN(ExtensionService); | 714 DISALLOW_COPY_AND_ASSIGN(ExtensionService); |
713 }; | 715 }; |
714 | 716 |
715 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ | 717 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SERVICE_H_ |
OLD | NEW |