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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/file_handler_util.cc

Issue 18344013: fileapi: Rename FileSystemMountProvider to FileSystemBackend (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/file_manager/file_handler_util.h" 5 #include "chrome/browser/chromeos/extensions/file_manager/file_handler_util.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/i18n/case_conversion.h" 9 #include "base/i18n/case_conversion.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "chrome/browser/chromeos/drive/file_system_util.h" 13 #include "chrome/browser/chromeos/drive/file_system_util.h"
14 #include "chrome/browser/chromeos/drive/file_task_executor.h" 14 #include "chrome/browser/chromeos/drive/file_task_executor.h"
15 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_handler.h " 15 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_handler.h "
16 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h" 16 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h"
17 #include "chrome/browser/chromeos/fileapi/cros_mount_point_provider.h" 17 #include "chrome/browser/chromeos/fileapi/file_system_backend.h"
18 #include "chrome/browser/extensions/event_router.h" 18 #include "chrome/browser/extensions/event_router.h"
19 #include "chrome/browser/extensions/extension_host.h" 19 #include "chrome/browser/extensions/extension_host.h"
20 #include "chrome/browser/extensions/extension_service.h" 20 #include "chrome/browser/extensions/extension_service.h"
21 #include "chrome/browser/extensions/extension_system.h" 21 #include "chrome/browser/extensions/extension_system.h"
22 #include "chrome/browser/extensions/extension_tab_util.h" 22 #include "chrome/browser/extensions/extension_tab_util.h"
23 #include "chrome/browser/extensions/lazy_background_task_queue.h" 23 #include "chrome/browser/extensions/lazy_background_task_queue.h"
24 #include "chrome/browser/extensions/platform_app_launcher.h" 24 #include "chrome/browser/extensions/platform_app_launcher.h"
25 #include "chrome/browser/prefs/scoped_user_pref_update.h" 25 #include "chrome/browser/prefs/scoped_user_pref_update.h"
26 #include "chrome/browser/profiles/profile.h" 26 #include "chrome/browser/profiles/profile.h"
27 #include "chrome/browser/ui/browser.h" 27 #include "chrome/browser/ui/browser.h"
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 GetFileSystemContext(); 180 GetFileSystemContext();
181 } 181 }
182 182
183 // Checks if the file browser extension has permissions for the files in its 183 // Checks if the file browser extension has permissions for the files in its
184 // file system context. 184 // file system context.
185 bool FileBrowserHasAccessPermissionForFiles( 185 bool FileBrowserHasAccessPermissionForFiles(
186 Profile* profile, 186 Profile* profile,
187 const GURL& source_url, 187 const GURL& source_url,
188 const std::string& file_browser_id, 188 const std::string& file_browser_id,
189 const std::vector<FileSystemURL>& files) { 189 const std::vector<FileSystemURL>& files) {
190 fileapi::ExternalFileSystemMountPointProvider* external_provider = 190 fileapi::ExternalFileSystemBackend* backend =
191 GetFileSystemContextForExtension(profile, file_browser_id)-> 191 GetFileSystemContextForExtension(profile, file_browser_id)->
192 external_provider(); 192 external_backend();
193 if (!external_provider) 193 if (!backend)
194 return false; 194 return false;
195 195
196 for (size_t i = 0; i < files.size(); ++i) { 196 for (size_t i = 0; i < files.size(); ++i) {
197 // Make sure this url really being used by the right caller extension. 197 // Make sure this url really being used by the right caller extension.
198 if (source_url.GetOrigin() != files[i].origin()) 198 if (source_url.GetOrigin() != files[i].origin())
199 return false; 199 return false;
200 200
201 if (!chromeos::CrosMountPointProvider::CanHandleURL(files[i]) || 201 if (!chromeos::FileSystemBackend::CanHandleURL(files[i]) ||
202 !external_provider->IsAccessAllowed(files[i])) { 202 !backend->IsAccessAllowed(files[i])) {
203 return false; 203 return false;
204 } 204 }
205 } 205 }
206 206
207 return true; 207 return true;
208 } 208 }
209 209
210 } // namespace 210 } // namespace
211 211
212 bool IsFallbackTask(const FileBrowserHandler* task) { 212 bool IsFallbackTask(const FileBrowserHandler* task) {
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 622
623 // static 623 // static
624 ExtensionTaskExecutor::FileDefinitionList 624 ExtensionTaskExecutor::FileDefinitionList
625 ExtensionTaskExecutor::SetupFileAccessPermissions( 625 ExtensionTaskExecutor::SetupFileAccessPermissions(
626 scoped_refptr<fileapi::FileSystemContext> file_system_context_handler, 626 scoped_refptr<fileapi::FileSystemContext> file_system_context_handler,
627 const scoped_refptr<const Extension>& handler_extension, 627 const scoped_refptr<const Extension>& handler_extension,
628 const std::vector<FileSystemURL>& file_urls) { 628 const std::vector<FileSystemURL>& file_urls) {
629 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 629 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
630 DCHECK(handler_extension.get()); 630 DCHECK(handler_extension.get());
631 631
632 fileapi::ExternalFileSystemMountPointProvider* external_provider_handler = 632 fileapi::ExternalFileSystemBackend* backend =
633 file_system_context_handler->external_provider(); 633 file_system_context_handler->external_backend();
634 634
635 FileDefinitionList file_list; 635 FileDefinitionList file_list;
636 for (size_t i = 0; i < file_urls.size(); ++i) { 636 for (size_t i = 0; i < file_urls.size(); ++i) {
637 const FileSystemURL& url = file_urls[i]; 637 const FileSystemURL& url = file_urls[i];
638 638
639 // Check if this file system entry exists first. 639 // Check if this file system entry exists first.
640 base::PlatformFileInfo file_info; 640 base::PlatformFileInfo file_info;
641 641
642 base::FilePath local_path = url.path(); 642 base::FilePath local_path = url.path();
643 base::FilePath virtual_path = url.virtual_path(); 643 base::FilePath virtual_path = url.virtual_path();
644 644
645 bool is_drive_file = url.type() == fileapi::kFileSystemTypeDrive; 645 bool is_drive_file = url.type() == fileapi::kFileSystemTypeDrive;
646 DCHECK(!is_drive_file || drive::util::IsUnderDriveMountPoint(local_path)); 646 DCHECK(!is_drive_file || drive::util::IsUnderDriveMountPoint(local_path));
647 647
648 // If the file is under drive mount point, there is no actual file to be 648 // If the file is under drive mount point, there is no actual file to be
649 // found on the url.path(). 649 // found on the url.path().
650 if (!is_drive_file) { 650 if (!is_drive_file) {
651 if (!file_util::PathExists(local_path) || 651 if (!file_util::PathExists(local_path) ||
652 file_util::IsLink(local_path) || 652 file_util::IsLink(local_path) ||
653 !file_util::GetFileInfo(local_path, &file_info)) { 653 !file_util::GetFileInfo(local_path, &file_info)) {
654 continue; 654 continue;
655 } 655 }
656 } 656 }
657 657
658 // Grant access to this particular file to target extension. This will 658 // Grant access to this particular file to target extension. This will
659 // ensure that the target extension can access only this FS entry and 659 // ensure that the target extension can access only this FS entry and
660 // prevent from traversing FS hierarchy upward. 660 // prevent from traversing FS hierarchy upward.
661 external_provider_handler->GrantFileAccessToExtension( 661 backend->GrantFileAccessToExtension(
662 handler_extension->id(), virtual_path); 662 handler_extension->id(), virtual_path);
663 663
664 // Output values. 664 // Output values.
665 FileDefinition file; 665 FileDefinition file;
666 file.virtual_path = virtual_path; 666 file.virtual_path = virtual_path;
667 file.is_directory = file_info.is_directory; 667 file.is_directory = file_info.is_directory;
668 file.absolute_path = local_path; 668 file.absolute_path = local_path;
669 file_list.push_back(file); 669 file_list.push_back(file);
670 } 670 }
671 return file_list; 671 return file_list;
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 ++iter) { 838 ++iter) {
839 content::ChildProcessSecurityPolicy::GetInstance()->GrantPermissionsForFile( 839 content::ChildProcessSecurityPolicy::GetInstance()->GrantPermissionsForFile(
840 handler_pid, 840 handler_pid,
841 iter->absolute_path, 841 iter->absolute_path,
842 GetAccessPermissionsForFileBrowserHandler(extension_.get(), 842 GetAccessPermissionsForFileBrowserHandler(extension_.get(),
843 action_id_)); 843 action_id_));
844 } 844 }
845 } 845 }
846 846
847 } // namespace file_handler_util 847 } // namespace file_handler_util
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698