| OLD | NEW |
| 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_browser_private_a
pi.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a
pi.h" |
| 6 | 6 |
| 7 #include <sys/stat.h> | 7 #include <sys/stat.h> |
| 8 #include <sys/statvfs.h> | 8 #include <sys/statvfs.h> |
| 9 #include <sys/types.h> | 9 #include <sys/types.h> |
| 10 #include <utime.h> | 10 #include <utime.h> |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "chrome/browser/chromeos/drive/file_system_interface.h" | 28 #include "chrome/browser/chromeos/drive/file_system_interface.h" |
| 29 #include "chrome/browser/chromeos/drive/file_system_util.h" | 29 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 30 #include "chrome/browser/chromeos/drive/job_list.h" | 30 #include "chrome/browser/chromeos/drive/job_list.h" |
| 31 #include "chrome/browser/chromeos/drive/logging.h" | 31 #include "chrome/browser/chromeos/drive/logging.h" |
| 32 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_handler.h
" | 32 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_handler.h
" |
| 33 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a
pi_factory.h" | 33 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a
pi_factory.h" |
| 34 #include "chrome/browser/chromeos/extensions/file_manager/file_handler_util.h" | 34 #include "chrome/browser/chromeos/extensions/file_manager/file_handler_util.h" |
| 35 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_event_rou
ter.h" | 35 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_event_rou
ter.h" |
| 36 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h" | 36 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h" |
| 37 #include "chrome/browser/chromeos/extensions/file_manager/zip_file_creator.h" | 37 #include "chrome/browser/chromeos/extensions/file_manager/zip_file_creator.h" |
| 38 #include "chrome/browser/chromeos/fileapi/cros_mount_point_provider.h" | 38 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" |
| 39 #include "chrome/browser/chromeos/settings/cros_settings.h" | 39 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 40 #include "chrome/browser/chromeos/system/statistics_provider.h" | 40 #include "chrome/browser/chromeos/system/statistics_provider.h" |
| 41 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" | 41 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" |
| 42 #include "chrome/browser/extensions/extension_function_dispatcher.h" | 42 #include "chrome/browser/extensions/extension_function_dispatcher.h" |
| 43 #include "chrome/browser/extensions/extension_function_registry.h" | 43 #include "chrome/browser/extensions/extension_function_registry.h" |
| 44 #include "chrome/browser/extensions/extension_service.h" | 44 #include "chrome/browser/extensions/extension_service.h" |
| 45 #include "chrome/browser/extensions/extension_system.h" | 45 #include "chrome/browser/extensions/extension_system.h" |
| 46 #include "chrome/browser/extensions/extension_tab_util.h" | 46 #include "chrome/browser/extensions/extension_tab_util.h" |
| 47 #include "chrome/browser/google_apis/gdata_wapi_parser.h" | 47 #include "chrome/browser/google_apis/gdata_wapi_parser.h" |
| 48 #include "chrome/browser/lifetime/application_lifetime.h" | 48 #include "chrome/browser/lifetime/application_lifetime.h" |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 void SetDriveMountPointPermissions( | 212 void SetDriveMountPointPermissions( |
| 213 Profile* profile, | 213 Profile* profile, |
| 214 const std::string& extension_id, | 214 const std::string& extension_id, |
| 215 content::RenderViewHost* render_view_host) { | 215 content::RenderViewHost* render_view_host) { |
| 216 if (!render_view_host || | 216 if (!render_view_host || |
| 217 !render_view_host->GetSiteInstance() || !render_view_host->GetProcess()) { | 217 !render_view_host->GetSiteInstance() || !render_view_host->GetProcess()) { |
| 218 return; | 218 return; |
| 219 } | 219 } |
| 220 | 220 |
| 221 content::SiteInstance* site_instance = render_view_host->GetSiteInstance(); | 221 content::SiteInstance* site_instance = render_view_host->GetSiteInstance(); |
| 222 fileapi::ExternalFileSystemMountPointProvider* provider = | 222 fileapi::ExternalFileSystemBackend* backend = |
| 223 BrowserContext::GetStoragePartition(profile, site_instance)-> | 223 BrowserContext::GetStoragePartition(profile, site_instance)-> |
| 224 GetFileSystemContext()->external_provider(); | 224 GetFileSystemContext()->external_backend(); |
| 225 if (!provider) | 225 if (!backend) |
| 226 return; | 226 return; |
| 227 | 227 |
| 228 const base::FilePath mount_point = drive::util::GetDriveMountPointPath(); | 228 const base::FilePath mount_point = drive::util::GetDriveMountPointPath(); |
| 229 // Grant R/W permissions to drive 'folder'. File API layer still | 229 // Grant R/W permissions to drive 'folder'. File API layer still |
| 230 // expects this to be satisfied. | 230 // expects this to be satisfied. |
| 231 GrantFilePermissionsToHost(render_view_host, | 231 GrantFilePermissionsToHost(render_view_host, |
| 232 mount_point, | 232 mount_point, |
| 233 file_handler_util::GetReadWritePermissions()); | 233 file_handler_util::GetReadWritePermissions()); |
| 234 | 234 |
| 235 base::FilePath mount_point_virtual; | 235 base::FilePath mount_point_virtual; |
| 236 if (provider->GetVirtualPath(mount_point, &mount_point_virtual)) | 236 if (backend->GetVirtualPath(mount_point, &mount_point_virtual)) |
| 237 provider->GrantFileAccessToExtension(extension_id, mount_point_virtual); | 237 backend->GrantFileAccessToExtension(extension_id, mount_point_virtual); |
| 238 } | 238 } |
| 239 | 239 |
| 240 // Finds an icon in the list of icons. If unable to find an icon of the exact | 240 // Finds an icon in the list of icons. If unable to find an icon of the exact |
| 241 // size requested, returns one with the next larger size. If all icons are | 241 // size requested, returns one with the next larger size. If all icons are |
| 242 // smaller than the preferred size, we'll return the largest one available. | 242 // smaller than the preferred size, we'll return the largest one available. |
| 243 // Icons must be sorted by the icon size, smallest to largest. If there are no | 243 // Icons must be sorted by the icon size, smallest to largest. If there are no |
| 244 // icons in the list, returns an empty URL. | 244 // icons in the list, returns an empty URL. |
| 245 GURL FindPreferredIcon(const InstalledApp::IconList& icons, | 245 GURL FindPreferredIcon(const InstalledApp::IconList& icons, |
| 246 int preferred_size) { | 246 int preferred_size) { |
| 247 GURL result; | 247 GURL result; |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 return false; | 533 return false; |
| 534 | 534 |
| 535 // Make sure that only component extension can access the entire | 535 // Make sure that only component extension can access the entire |
| 536 // local file system. | 536 // local file system. |
| 537 if (extension_->location() != extensions::Manifest::COMPONENT) { | 537 if (extension_->location() != extensions::Manifest::COMPONENT) { |
| 538 NOTREACHED() << "Private method access by non-component extension " | 538 NOTREACHED() << "Private method access by non-component extension " |
| 539 << extension->id(); | 539 << extension->id(); |
| 540 return false; | 540 return false; |
| 541 } | 541 } |
| 542 | 542 |
| 543 fileapi::ExternalFileSystemMountPointProvider* provider = | 543 fileapi::ExternalFileSystemBackend* backend = |
| 544 file_system_context->external_provider(); | 544 file_system_context->external_backend(); |
| 545 if (!provider) | 545 if (!backend) |
| 546 return false; | 546 return false; |
| 547 | 547 |
| 548 // Grant full access to File API from this component extension. | 548 // Grant full access to File API from this component extension. |
| 549 provider->GrantFullAccessToExtension(extension_->id()); | 549 backend->GrantFullAccessToExtension(extension_->id()); |
| 550 | 550 |
| 551 // Grant R/W file permissions to the renderer hosting component | 551 // Grant R/W file permissions to the renderer hosting component |
| 552 // extension for all paths exposed by our local file system provider. | 552 // extension for all paths exposed by our local file system backend. |
| 553 std::vector<base::FilePath> root_dirs = provider->GetRootDirectories(); | 553 std::vector<base::FilePath> root_dirs = backend->GetRootDirectories(); |
| 554 for (size_t i = 0; i < root_dirs.size(); ++i) { | 554 for (size_t i = 0; i < root_dirs.size(); ++i) { |
| 555 ChildProcessSecurityPolicy::GetInstance()->GrantPermissionsForFile( | 555 ChildProcessSecurityPolicy::GetInstance()->GrantPermissionsForFile( |
| 556 child_id, root_dirs[i], | 556 child_id, root_dirs[i], |
| 557 file_handler_util::GetReadWritePermissions()); | 557 file_handler_util::GetReadWritePermissions()); |
| 558 } | 558 } |
| 559 return true; | 559 return true; |
| 560 } | 560 } |
| 561 | 561 |
| 562 bool RequestFileSystemFunction::RunImpl() { | 562 bool RequestFileSystemFunction::RunImpl() { |
| 563 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 563 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 899 if (!files_list->GetString(i, &file_url_str)) | 899 if (!files_list->GetString(i, &file_url_str)) |
| 900 return false; | 900 return false; |
| 901 | 901 |
| 902 if (mime_types_list->GetSize() != 0 && | 902 if (mime_types_list->GetSize() != 0 && |
| 903 !mime_types_list->GetString(i, &info.mime_type)) | 903 !mime_types_list->GetString(i, &info.mime_type)) |
| 904 return false; | 904 return false; |
| 905 | 905 |
| 906 GURL file_url(file_url_str); | 906 GURL file_url(file_url_str); |
| 907 fileapi::FileSystemURL file_system_url( | 907 fileapi::FileSystemURL file_system_url( |
| 908 file_system_context->CrackURL(file_url)); | 908 file_system_context->CrackURL(file_url)); |
| 909 if (!chromeos::CrosMountPointProvider::CanHandleURL(file_system_url)) | 909 if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) |
| 910 continue; | 910 continue; |
| 911 | 911 |
| 912 file_urls.push_back(file_url); | 912 file_urls.push_back(file_url); |
| 913 file_paths.push_back(file_system_url.path()); | 913 file_paths.push_back(file_system_url.path()); |
| 914 | 914 |
| 915 info.file_url = file_url; | 915 info.file_url = file_url; |
| 916 info.file_path = file_system_url.path(); | 916 info.file_path = file_system_url.path(); |
| 917 info_list.push_back(info); | 917 info_list.push_back(info); |
| 918 | 918 |
| 919 if (google_apis::ResourceEntry::ClassifyEntryKindByFileExtension( | 919 if (google_apis::ResourceEntry::ClassifyEntryKindByFileExtension( |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1038 GetFileSystemContext(); | 1038 GetFileSystemContext(); |
| 1039 | 1039 |
| 1040 std::vector<FileSystemURL> file_urls; | 1040 std::vector<FileSystemURL> file_urls; |
| 1041 for (size_t i = 0; i < files_list->GetSize(); i++) { | 1041 for (size_t i = 0; i < files_list->GetSize(); i++) { |
| 1042 std::string file_url_str; | 1042 std::string file_url_str; |
| 1043 if (!files_list->GetString(i, &file_url_str)) { | 1043 if (!files_list->GetString(i, &file_url_str)) { |
| 1044 error_ = kInvalidFileUrl; | 1044 error_ = kInvalidFileUrl; |
| 1045 return false; | 1045 return false; |
| 1046 } | 1046 } |
| 1047 FileSystemURL url = file_system_context->CrackURL(GURL(file_url_str)); | 1047 FileSystemURL url = file_system_context->CrackURL(GURL(file_url_str)); |
| 1048 if (!chromeos::CrosMountPointProvider::CanHandleURL(url)) { | 1048 if (!chromeos::FileSystemBackend::CanHandleURL(url)) { |
| 1049 error_ = kInvalidFileUrl; | 1049 error_ = kInvalidFileUrl; |
| 1050 return false; | 1050 return false; |
| 1051 } | 1051 } |
| 1052 file_urls.push_back(url); | 1052 file_urls.push_back(url); |
| 1053 } | 1053 } |
| 1054 | 1054 |
| 1055 WebContents* web_contents = | 1055 WebContents* web_contents = |
| 1056 dispatcher()->delegate()->GetAssociatedWebContents(); | 1056 dispatcher()->delegate()->GetAssociatedWebContents(); |
| 1057 int32 tab_id = 0; | 1057 int32 tab_id = 0; |
| 1058 if (web_contents) | 1058 if (web_contents) |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1156 DCHECK(render_view_host()); | 1156 DCHECK(render_view_host()); |
| 1157 | 1157 |
| 1158 content::SiteInstance* site_instance = render_view_host()->GetSiteInstance(); | 1158 content::SiteInstance* site_instance = render_view_host()->GetSiteInstance(); |
| 1159 scoped_refptr<fileapi::FileSystemContext> file_system_context = | 1159 scoped_refptr<fileapi::FileSystemContext> file_system_context = |
| 1160 BrowserContext::GetStoragePartition(profile(), site_instance)-> | 1160 BrowserContext::GetStoragePartition(profile(), site_instance)-> |
| 1161 GetFileSystemContext(); | 1161 GetFileSystemContext(); |
| 1162 | 1162 |
| 1163 const fileapi::FileSystemURL filesystem_url( | 1163 const fileapi::FileSystemURL filesystem_url( |
| 1164 file_system_context->CrackURL(url)); | 1164 file_system_context->CrackURL(url)); |
| 1165 base::FilePath path; | 1165 base::FilePath path; |
| 1166 if (!chromeos::CrosMountPointProvider::CanHandleURL(filesystem_url)) | 1166 if (!chromeos::FileSystemBackend::CanHandleURL(filesystem_url)) |
| 1167 return base::FilePath(); | 1167 return base::FilePath(); |
| 1168 return filesystem_url.path(); | 1168 return filesystem_url.path(); |
| 1169 } | 1169 } |
| 1170 | 1170 |
| 1171 void FileBrowserFunction::GetSelectedFileInfo( | 1171 void FileBrowserFunction::GetSelectedFileInfo( |
| 1172 const UrlList& file_urls, | 1172 const UrlList& file_urls, |
| 1173 bool for_opening, | 1173 bool for_opening, |
| 1174 GetSelectedFileInfoCallback callback) { | 1174 GetSelectedFileInfoCallback callback) { |
| 1175 scoped_ptr<GetSelectedFileInfoParams> params(new GetSelectedFileInfoParams); | 1175 scoped_ptr<GetSelectedFileInfoParams> params(new GetSelectedFileInfoParams); |
| 1176 params->for_opening = for_opening; | 1176 params->for_opening = for_opening; |
| (...skipping 1872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3049 std::string name; | 3049 std::string name; |
| 3050 if (!args_->GetString(1, &name)) | 3050 if (!args_->GetString(1, &name)) |
| 3051 return false; | 3051 return false; |
| 3052 | 3052 |
| 3053 content::SiteInstance* site_instance = render_view_host()->GetSiteInstance(); | 3053 content::SiteInstance* site_instance = render_view_host()->GetSiteInstance(); |
| 3054 scoped_refptr<fileapi::FileSystemContext> file_system_context = | 3054 scoped_refptr<fileapi::FileSystemContext> file_system_context = |
| 3055 BrowserContext::GetStoragePartition(profile(), site_instance)-> | 3055 BrowserContext::GetStoragePartition(profile(), site_instance)-> |
| 3056 GetFileSystemContext(); | 3056 GetFileSystemContext(); |
| 3057 fileapi::FileSystemURL filesystem_url( | 3057 fileapi::FileSystemURL filesystem_url( |
| 3058 file_system_context->CrackURL(GURL(parent_url))); | 3058 file_system_context->CrackURL(GURL(parent_url))); |
| 3059 if (!chromeos::CrosMountPointProvider::CanHandleURL(filesystem_url)) | 3059 if (!chromeos::FileSystemBackend::CanHandleURL(filesystem_url)) |
| 3060 return false; | 3060 return false; |
| 3061 | 3061 |
| 3062 // No explicit limit on the length of Drive file names. | 3062 // No explicit limit on the length of Drive file names. |
| 3063 if (filesystem_url.type() == fileapi::kFileSystemTypeDrive) { | 3063 if (filesystem_url.type() == fileapi::kFileSystemTypeDrive) { |
| 3064 SetResult(new base::FundamentalValue(true)); | 3064 SetResult(new base::FundamentalValue(true)); |
| 3065 SendResponse(true); | 3065 SendResponse(true); |
| 3066 return true; | 3066 return true; |
| 3067 } | 3067 } |
| 3068 | 3068 |
| 3069 base::PostTaskAndReplyWithResult( | 3069 base::PostTaskAndReplyWithResult( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 3094 zoom_type = content::PAGE_ZOOM_OUT; | 3094 zoom_type = content::PAGE_ZOOM_OUT; |
| 3095 } else if (operation == "reset") { | 3095 } else if (operation == "reset") { |
| 3096 zoom_type = content::PAGE_ZOOM_RESET; | 3096 zoom_type = content::PAGE_ZOOM_RESET; |
| 3097 } else { | 3097 } else { |
| 3098 NOTREACHED(); | 3098 NOTREACHED(); |
| 3099 return false; | 3099 return false; |
| 3100 } | 3100 } |
| 3101 view_host->Zoom(zoom_type); | 3101 view_host->Zoom(zoom_type); |
| 3102 return true; | 3102 return true; |
| 3103 } | 3103 } |
| OLD | NEW |