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

Unified Diff: chrome/browser/chromeos/file_system_provider/service.cc

Issue 1137383002: Show the eject button only for removabled and file handlers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed tests. Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
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 94ef49dde675c5390175bec802ce73726dd108be..faa6ce5c885e84dfd936f31b30180fbcfade88a8 100644
--- a/chrome/browser/chromeos/file_system_provider/service.cc
+++ b/chrome/browser/chromeos/file_system_provider/service.cc
@@ -160,6 +160,9 @@ base::File::Error Service::MountFileSystemInternal(
return base::File::FILE_ERROR_INVALID_OPERATION;
}
+ ProvidingExtensionInfo provider_info;
+ // TODO(mtomasz): Set up a testing extension in unit tests.
+ GetProvidingExtensionInfo(extension_id, &provider_info);
// Store the file system descriptor. Use the mount point name as the file
// system provider file system id.
// Examples:
@@ -168,7 +171,12 @@ base::File::Error Service::MountFileSystemInternal(
// writable = false
// supports_notify_tag = false
// mount_path = /provided/b33f1337-hello_world-5aa5
- ProvidedFileSystemInfo file_system_info(extension_id, options, mount_path);
+ // configurable = true
+ // source = SOURCE_FILE
+ ProvidedFileSystemInfo file_system_info(
+ extension_id, options, mount_path,
+ provider_info.capabilities.configurable(),
+ provider_info.capabilities.source());
ProvidedFileSystemInterface* file_system =
file_system_factory_.Run(profile_, file_system_info);
@@ -310,24 +318,39 @@ std::vector<ProvidingExtensionInfo> Service::GetProvidingExtensionInfoList()
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();
- const extensions::FileSystemProviderCapabilities* const capabilities =
- extensions::FileSystemProviderCapabilities::Get(extension.get());
- DCHECK(capabilities);
- info.capabilities = *capabilities;
- result.push_back(info);
+ if (GetProvidingExtensionInfo(extension->id(), &info))
+ result.push_back(info);
}
return result;
}
+bool Service::GetProvidingExtensionInfo(const std::string& extension_id,
+ ProvidingExtensionInfo* result) const {
+ DCHECK(result);
+ extensions::ExtensionRegistry* const registry =
+ extensions::ExtensionRegistry::Get(profile_);
+ DCHECK(registry);
+
+ const extensions::Extension* const extension = registry->GetExtensionById(
+ extension_id, extensions::ExtensionRegistry::ENABLED);
+ if (!extension ||
+ !extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kFileSystemProvider)) {
+ return false;
+ }
+
+ result->extension_id = extension->id();
+ result->name = extension->name();
+ const extensions::FileSystemProviderCapabilities* const capabilities =
+ extensions::FileSystemProviderCapabilities::Get(extension);
+ DCHECK(capabilities);
+ result->capabilities = *capabilities;
+
+ return true;
+}
+
void Service::OnExtensionUnloaded(
content::BrowserContext* browser_context,
const extensions::Extension* extension,

Powered by Google App Engine
This is Rietveld 408576698