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

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

Issue 10993066: Add oem mount point to cros_mount_provider. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
« no previous file with comments | « no previous file | webkit/chromeos/fileapi/cros_mount_point_provider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_handler_util.h" 5 #include "chrome/browser/chromeos/extensions/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/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 using extensions::Extension; 50 using extensions::Extension;
51 51
52 namespace file_handler_util { 52 namespace file_handler_util {
53 53
54 const char kTaskFile[] = "file"; 54 const char kTaskFile[] = "file";
55 const char kTaskDrive[] = "drive"; 55 const char kTaskDrive[] = "drive";
56 const char kTaskWebIntent[] = "web-intent"; 56 const char kTaskWebIntent[] = "web-intent";
57 57
58 namespace { 58 namespace {
59 59
60 typedef std::set<const FileBrowserHandler*> FileBrowserHandlerSet;
61
60 // Legacy Drive task extension prefix, used by CrackTaskID. 62 // Legacy Drive task extension prefix, used by CrackTaskID.
61 const char kDriveTaskExtensionPrefix[] = "drive-app:"; 63 const char kDriveTaskExtensionPrefix[] = "drive-app:";
62 const size_t kDriveTaskExtensionPrefixLength = 64 const size_t kDriveTaskExtensionPrefixLength =
63 arraysize(kDriveTaskExtensionPrefix) - 1; 65 arraysize(kDriveTaskExtensionPrefix) - 1;
64 66
65 typedef std::set<const FileBrowserHandler*> FileBrowserHandlerSet; 67 const char kOemMountPointID[] = "oem";
66 68
67 const int kReadWriteFilePermissions = base::PLATFORM_FILE_OPEN | 69 const int kReadWriteFilePermissions = base::PLATFORM_FILE_OPEN |
68 base::PLATFORM_FILE_CREATE | 70 base::PLATFORM_FILE_CREATE |
69 base::PLATFORM_FILE_OPEN_ALWAYS | 71 base::PLATFORM_FILE_OPEN_ALWAYS |
70 base::PLATFORM_FILE_CREATE_ALWAYS | 72 base::PLATFORM_FILE_CREATE_ALWAYS |
71 base::PLATFORM_FILE_OPEN_TRUNCATED | 73 base::PLATFORM_FILE_OPEN_TRUNCATED |
72 base::PLATFORM_FILE_READ | 74 base::PLATFORM_FILE_READ |
73 base::PLATFORM_FILE_WRITE | 75 base::PLATFORM_FILE_WRITE |
74 base::PLATFORM_FILE_EXCLUSIVE_READ | 76 base::PLATFORM_FILE_EXCLUSIVE_READ |
75 base::PLATFORM_FILE_EXCLUSIVE_WRITE | 77 base::PLATFORM_FILE_EXCLUSIVE_WRITE |
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 if (!handler_extension_.get()) 714 if (!handler_extension_.get())
713 return false; 715 return false;
714 716
715 if (handler_pid_ == 0) 717 if (handler_pid_ == 0)
716 return false; 718 return false;
717 719
718 fileapi::FileSystemURL url(origin_file_url); 720 fileapi::FileSystemURL url(origin_file_url);
719 if (!chromeos::CrosMountPointProvider::CanHandleURL(url)) 721 if (!chromeos::CrosMountPointProvider::CanHandleURL(url))
720 return false; 722 return false;
721 723
724 if (url.filesystem_id() == kOemMountPointID) {
zel 2012/09/27 20:11:10 let's create a more general concept of read-only m
725 LOG(ERROR) << "Can't grant permissions for oem mount point.";
726 return false;
727 }
728
722 fileapi::ExternalFileSystemMountPointProvider* external_provider = 729 fileapi::ExternalFileSystemMountPointProvider* external_provider =
723 file_system_context_->external_provider(); 730 file_system_context_->external_provider();
724 if (!external_provider || !external_provider->IsAccessAllowed(url)) 731 if (!external_provider || !external_provider->IsAccessAllowed(url))
725 return false; 732 return false;
726 733
727 // Make sure this url really being used by the right caller extension. 734 // Make sure this url really being used by the right caller extension.
728 if (source_url_.GetOrigin() != url.origin()) { 735 if (source_url_.GetOrigin() != url.origin()) {
729 DidFail(base::PLATFORM_FILE_ERROR_SECURITY); 736 DidFail(base::PLATFORM_FILE_ERROR_SECURITY);
730 return false; 737 return false;
731 } 738 }
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 done.Run(success); 1045 done.Run(success);
1039 1046
1040 return true; 1047 return true;
1041 } 1048 }
1042 1049
1043 bool WebIntentTaskExecutor::ExecuteForURL(const GURL& file_url) { 1050 bool WebIntentTaskExecutor::ExecuteForURL(const GURL& file_url) {
1044 fileapi::FileSystemURL url(file_url); 1051 fileapi::FileSystemURL url(file_url);
1045 if (!chromeos::CrosMountPointProvider::CanHandleURL(url)) 1052 if (!chromeos::CrosMountPointProvider::CanHandleURL(url))
1046 return false; 1053 return false;
1047 1054
1055 if (url.filesystem_id() == kOemMountPointID) {
1056 LOG(ERROR) << "Can't grant permissions for oem mount point.";
1057 return false;
1058 }
1059
1048 scoped_refptr<fileapi::FileSystemContext> file_system_context = 1060 scoped_refptr<fileapi::FileSystemContext> file_system_context =
1049 BrowserContext::GetDefaultStoragePartition(profile())-> 1061 BrowserContext::GetDefaultStoragePartition(profile())->
1050 GetFileSystemContext(); 1062 GetFileSystemContext();
1051 fileapi::ExternalFileSystemMountPointProvider* external_provider = 1063 fileapi::ExternalFileSystemMountPointProvider* external_provider =
1052 file_system_context->external_provider(); 1064 file_system_context->external_provider();
1053 if (!external_provider || !external_provider->IsAccessAllowed(url)) 1065 if (!external_provider || !external_provider->IsAccessAllowed(url))
1054 return false; 1066 return false;
1055 1067
1056 // Make sure this url really being used by the right caller extension. 1068 // Make sure this url really being used by the right caller extension.
1057 if (source_url_.GetOrigin() != url.origin()) 1069 if (source_url_.GetOrigin() != url.origin())
1058 return false; 1070 return false;
1059 1071
1060 FilePath local_path = url.path(); 1072 FilePath local_path = url.path();
1061 extensions::LaunchPlatformAppWithPath(profile(), GetExtension(), local_path); 1073 extensions::LaunchPlatformAppWithPath(profile(), GetExtension(), local_path);
1062 return true; 1074 return true;
1063 } 1075 }
1064 1076
1065 } // namespace file_handler_util 1077 } // namespace file_handler_util
OLDNEW
« no previous file with comments | « no previous file | webkit/chromeos/fileapi/cros_mount_point_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698