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

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: Simplified. 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..c2483713431c3065b5c636fc5056f5379e0ca403 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;
+ const bool result = GetProvidingExtensionInfo(extension_id, &provider_info);
+ DCHECK(result);
// 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,22 +318,37 @@ 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;
+ 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;
}
hirono 2015/05/14 10:43:09 Please fix the indent.
mtomasz 2015/05/15 02:03:37 Done.
- ProvidingExtensionInfo info;
- info.extension_id = extension->id();
- info.name = extension->name();
+ result->extension_id = extension->id();
+ result->name = extension->name();
const extensions::FileSystemProviderCapabilities* const capabilities =
- extensions::FileSystemProviderCapabilities::Get(extension.get());
+ extensions::FileSystemProviderCapabilities::Get(extension);
DCHECK(capabilities);
- info.capabilities = *capabilities;
- result.push_back(info);
- }
+ result->capabilities = *capabilities;
- return result;
+ return true;
}
void Service::OnExtensionUnloaded(

Powered by Google App Engine
This is Rietveld 408576698