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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/file_system_provider/service.h" 5 #include "chrome/browser/chromeos/file_system_provider/service.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 storage::FileSystemMountOption( 153 storage::FileSystemMountOption(
154 storage::FlushPolicy::FLUSH_ON_COMPLETION), 154 storage::FlushPolicy::FLUSH_ON_COMPLETION),
155 mount_path)) { 155 mount_path)) {
156 FOR_EACH_OBSERVER( 156 FOR_EACH_OBSERVER(
157 Observer, observers_, 157 Observer, observers_,
158 OnProvidedFileSystemMount(ProvidedFileSystemInfo(), context, 158 OnProvidedFileSystemMount(ProvidedFileSystemInfo(), context,
159 base::File::FILE_ERROR_INVALID_OPERATION)); 159 base::File::FILE_ERROR_INVALID_OPERATION));
160 return base::File::FILE_ERROR_INVALID_OPERATION; 160 return base::File::FILE_ERROR_INVALID_OPERATION;
161 } 161 }
162 162
163 ProvidingExtensionInfo provider_info;
164 const bool result = GetProvidingExtensionInfo(extension_id, &provider_info);
165 DCHECK(result);
163 // Store the file system descriptor. Use the mount point name as the file 166 // Store the file system descriptor. Use the mount point name as the file
164 // system provider file system id. 167 // system provider file system id.
165 // Examples: 168 // Examples:
166 // file_system_id = hello_world 169 // file_system_id = hello_world
167 // mount_point_name = b33f1337-hello_world-5aa5 170 // mount_point_name = b33f1337-hello_world-5aa5
168 // writable = false 171 // writable = false
169 // supports_notify_tag = false 172 // supports_notify_tag = false
170 // mount_path = /provided/b33f1337-hello_world-5aa5 173 // mount_path = /provided/b33f1337-hello_world-5aa5
171 ProvidedFileSystemInfo file_system_info(extension_id, options, mount_path); 174 // configurable = true
175 // source = SOURCE_FILE
176 ProvidedFileSystemInfo file_system_info(
177 extension_id, options, mount_path,
178 provider_info.capabilities.configurable(),
179 provider_info.capabilities.source());
172 180
173 ProvidedFileSystemInterface* file_system = 181 ProvidedFileSystemInterface* file_system =
174 file_system_factory_.Run(profile_, file_system_info); 182 file_system_factory_.Run(profile_, file_system_info);
175 DCHECK(file_system); 183 DCHECK(file_system);
176 file_system_map_[FileSystemKey(extension_id, options.file_system_id)] = 184 file_system_map_[FileSystemKey(extension_id, options.file_system_id)] =
177 file_system; 185 file_system;
178 mount_point_name_to_key_map_[mount_point_name] = 186 mount_point_name_to_key_map_[mount_point_name] =
179 FileSystemKey(extension_id, options.file_system_id); 187 FileSystemKey(extension_id, options.file_system_id);
180 registry_->RememberFileSystem(file_system_info, *file_system->GetWatchers()); 188 registry_->RememberFileSystem(file_system_info, *file_system->GetWatchers());
181 189
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 } 311 }
304 312
305 std::vector<ProvidingExtensionInfo> Service::GetProvidingExtensionInfoList() 313 std::vector<ProvidingExtensionInfo> Service::GetProvidingExtensionInfoList()
306 const { 314 const {
307 extensions::ExtensionRegistry* const registry = 315 extensions::ExtensionRegistry* const registry =
308 extensions::ExtensionRegistry::Get(profile_); 316 extensions::ExtensionRegistry::Get(profile_);
309 DCHECK(registry); 317 DCHECK(registry);
310 318
311 std::vector<ProvidingExtensionInfo> result; 319 std::vector<ProvidingExtensionInfo> result;
312 for (const auto& extension : registry->enabled_extensions()) { 320 for (const auto& extension : registry->enabled_extensions()) {
313 if (!extension->permissions_data()->HasAPIPermission(
314 extensions::APIPermission::kFileSystemProvider)) {
315 continue;
316 }
317
318 ProvidingExtensionInfo info; 321 ProvidingExtensionInfo info;
319 info.extension_id = extension->id(); 322 if (GetProvidingExtensionInfo(extension->id(), &info))
320 info.name = extension->name(); 323 result.push_back(info);
321 const extensions::FileSystemProviderCapabilities* const capabilities =
322 extensions::FileSystemProviderCapabilities::Get(extension.get());
323 DCHECK(capabilities);
324 info.capabilities = *capabilities;
325 result.push_back(info);
326 } 324 }
327 325
328 return result; 326 return result;
329 } 327 }
330 328
329 bool Service::GetProvidingExtensionInfo(const std::string& extension_id,
330 ProvidingExtensionInfo* result) const {
331 DCHECK(result);
332 extensions::ExtensionRegistry* const registry =
333 extensions::ExtensionRegistry::Get(profile_);
334 DCHECK(registry);
335
336 const extensions::Extension* const extension = registry->GetExtensionById(
337 extension_id, extensions::ExtensionRegistry::ENABLED);
338 if (!extension ||
339 !extension->permissions_data()->HasAPIPermission(
340 extensions::APIPermission::kFileSystemProvider)) {
341 return false;
342 }
hirono 2015/05/14 10:43:09 Please fix the indent.
mtomasz 2015/05/15 02:03:37 Done.
343
344 result->extension_id = extension->id();
345 result->name = extension->name();
346 const extensions::FileSystemProviderCapabilities* const capabilities =
347 extensions::FileSystemProviderCapabilities::Get(extension);
348 DCHECK(capabilities);
349 result->capabilities = *capabilities;
350
351 return true;
352 }
353
331 void Service::OnExtensionUnloaded( 354 void Service::OnExtensionUnloaded(
332 content::BrowserContext* browser_context, 355 content::BrowserContext* browser_context,
333 const extensions::Extension* extension, 356 const extensions::Extension* extension,
334 extensions::UnloadedExtensionInfo::Reason reason) { 357 extensions::UnloadedExtensionInfo::Reason reason) {
335 // Unmount all of the provided file systems associated with this extension. 358 // Unmount all of the provided file systems associated with this extension.
336 ProvidedFileSystemMap::iterator it = file_system_map_.begin(); 359 ProvidedFileSystemMap::iterator it = file_system_map_.begin();
337 while (it != file_system_map_.end()) { 360 while (it != file_system_map_.end()) {
338 const ProvidedFileSystemInfo& file_system_info = 361 const ProvidedFileSystemInfo& file_system_info =
339 it->second->GetFileSystemInfo(); 362 it->second->GetFileSystemInfo();
340 // Advance the iterator beforehand, otherwise it will become invalidated 363 // Advance the iterator beforehand, otherwise it will become invalidated
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 } 452 }
430 453
431 void Service::OnWatcherListChanged( 454 void Service::OnWatcherListChanged(
432 const ProvidedFileSystemInfo& file_system_info, 455 const ProvidedFileSystemInfo& file_system_info,
433 const Watchers& watchers) { 456 const Watchers& watchers) {
434 registry_->RememberFileSystem(file_system_info, watchers); 457 registry_->RememberFileSystem(file_system_info, watchers);
435 } 458 }
436 459
437 } // namespace file_system_provider 460 } // namespace file_system_provider
438 } // namespace chromeos 461 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698