Index: chrome/browser/chromeos/file_system_provider/service.cc |
diff --git a/chrome/browser/chromeos/file_system_provider/service.cc b/chrome/browser/chromeos/file_system_provider/service.cc |
index 08f0985b9e1dabe4a3a1edc08e1693a5d1380ee1..b764523b2ff4bf2cd1d207d6e7a41dcee8866c12 100644 |
--- a/chrome/browser/chromeos/file_system_provider/service.cc |
+++ b/chrome/browser/chromeos/file_system_provider/service.cc |
@@ -20,6 +20,8 @@ |
#include "extensions/browser/event_router.h" |
#include "extensions/browser/extension_registry.h" |
#include "extensions/browser/extension_system.h" |
+#include "extensions/common/permissions/api_permission.h" |
+#include "extensions/common/permissions/permissions_data.h" |
#include "storage/browser/fileapi/external_mount_points.h" |
#include "storage/common/fileapi/file_system_mount_option.h" |
@@ -41,6 +43,13 @@ ProvidedFileSystemInterface* CreateProvidedFileSystem( |
} // namespace |
+ProvidingExtensionInfo::ProvidingExtensionInfo() |
+ : can_configure(false), can_add(false) { |
+} |
+ |
+ProvidingExtensionInfo::~ProvidingExtensionInfo() { |
+} |
+ |
Service::Service(Profile* profile, |
extensions::ExtensionRegistry* extension_registry) |
: profile_(profile), |
@@ -294,6 +303,39 @@ ProvidedFileSystemInterface* Service::GetProvidedFileSystem( |
return file_system_it->second; |
} |
+std::vector<ProvidingExtensionInfo> Service::GetProvidingExtensionInfoList() |
+ const { |
+ extensions::ExtensionRegistry* const registry = |
+ extensions::ExtensionRegistry::Get(profile_); |
+ DCHECK(registry); |
+ |
+ extensions::EventRouter* const router = |
+ extensions::EventRouter::Get(profile_); |
+ DCHECK(router); |
+ |
+ std::vector<ProvidingExtensionInfo> result; |
+ for (const auto& extension : registry->enabled_extensions()) { |
+ if (!extension->permissions_data()->HasAPIPermission( |
+ extensions::APIPermission::kFileSystemProvider)) { |
+ continue; |
+ } |
+ |
+ ProvidingExtensionInfo info; |
+ info.extension_id = extension->id(); |
+ info.name = extension->name(); |
+ info.can_configure = router->ExtensionHasEventListener( |
+ extension->id(), extensions::api::file_system_provider:: |
+ OnConfigureRequested::kEventName); |
+ info.can_add = router->ExtensionHasEventListener( |
+ extension->id(), |
+ extensions::api::file_system_provider::OnMountRequested::kEventName); |
+ |
+ result.push_back(info); |
+ } |
+ |
+ return result; |
+} |
+ |
void Service::OnExtensionUnloaded( |
content::BrowserContext* browser_context, |
const extensions::Extension* extension, |