| 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,
|
|
|