Index: chrome/browser/extensions/extensions_service.h |
diff --git a/chrome/browser/extensions/extensions_service.h b/chrome/browser/extensions/extensions_service.h |
index b18c63bcde591562553d2c1f5333e449c77d4251..76565b452d446c7c76ecc8cfe7712040bc3eacea 100644 |
--- a/chrome/browser/extensions/extensions_service.h |
+++ b/chrome/browser/extensions/extensions_service.h |
@@ -20,6 +20,7 @@ |
#include "base/time.h" |
#include "base/tuple.h" |
#include "chrome/browser/chrome_thread.h" |
+#include "chrome/browser/extensions/default_apps.h" |
#include "chrome/browser/extensions/extension_icon_manager.h" |
#include "chrome/browser/extensions/extension_menu_manager.h" |
#include "chrome/browser/extensions/extension_prefs.h" |
@@ -51,6 +52,7 @@ struct PendingExtensionInfo { |
enum ExpectedCrxType { |
UNKNOWN, // Sometimes we don't know the type of a pending item. An |
// update URL from external_extensions.json is one such case. |
+ APP, |
THEME, |
EXTENSION |
}; |
@@ -60,7 +62,8 @@ struct PendingExtensionInfo { |
bool is_from_sync, |
bool install_silently, |
bool enable_on_install, |
- bool enable_incognito_on_install); |
+ bool enable_incognito_on_install, |
+ Extension::Location install_source); |
PendingExtensionInfo(); |
@@ -70,6 +73,7 @@ struct PendingExtensionInfo { |
bool install_silently; |
bool enable_on_install; |
bool enable_incognito_on_install; |
+ Extension::Location install_source; |
}; |
// A PendingExtensionMap is a map from IDs of pending extensions to |
@@ -169,6 +173,10 @@ class ExtensionsService |
return !(extensions_.empty() && disabled_extensions_.empty()); |
} |
+ const FilePath& install_directory() const { return install_directory_; } |
+ |
+ DefaultApps* default_apps() { return &default_apps_; } |
+ |
// Whether this extension can run in an incognito window. |
bool IsIncognitoEnabled(const Extension* extension); |
void SetIsIncognitoEnabled(Extension* extension, bool enabled); |
@@ -177,8 +185,6 @@ class ExtensionsService |
bool AllowFileAccess(const Extension* extension); |
void SetAllowFileAccess(Extension* extension, bool allow); |
- const FilePath& install_directory() const { return install_directory_; } |
- |
// Initialize and start all installed extensions. |
void Init(); |
@@ -225,6 +231,10 @@ class ExtensionsService |
void AddPendingExtensionFromExternalUpdateUrl(const std::string& id, |
const GURL& update_url); |
+ // Like the above. Always installed silently, and defaults update url |
+ // from extension id. |
+ void AddPendingExtensionFromDefaultAppList(const std::string& id); |
+ |
// Reloads the specified extension. |
void ReloadExtension(const std::string& extension_id); |
@@ -386,8 +396,11 @@ class ExtensionsService |
const NotificationSource& source, |
const NotificationDetails& details); |
- // Whether there are any apps installed. |
- bool HasApps(); |
+ // Whether there are any apps installed. Component apps are not included. |
+ bool HasApps() const; |
+ |
+ // Gets the set of loaded app ids. Component apps are not included. |
+ ExtensionIdSet GetAppIds() const; |
private: |
virtual ~ExtensionsService(); |
@@ -409,7 +422,8 @@ class ExtensionsService |
const std::string& id, const GURL& update_url, |
PendingExtensionInfo::ExpectedCrxType crx_type, |
bool is_from_sync, bool install_silently, |
- bool enable_on_install, bool enable_incognito_on_install); |
+ bool enable_on_install, bool enable_incognito_on_install, |
+ Extension::Location install_source); |
// Handles sending notification that |extension| was loaded. |
void NotifyExtensionLoaded(Extension* extension); |
@@ -511,6 +525,10 @@ class ExtensionsService |
typedef std::map<GURL, int> ProtectedStorageMap; |
ProtectedStorageMap protected_storage_map_; |
+ // Manages the installation of default apps and the promotion of them in the |
+ // app launcher. |
+ DefaultApps default_apps_; |
+ |
FRIEND_TEST_ALL_PREFIXES(ExtensionsServiceTest, |
UpdatePendingExtensionAlreadyInstalled); |
FRIEND_TEST_ALL_PREFIXES(ExtensionsServiceTest, |