| 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 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h" | 4 #include "chrome/browser/chromeos/extensions/file_manager/file_manager_util.h" |
| 5 | 5 |
| 6 #include "ash/shell.h" | 6 #include "ash/shell.h" |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 #include "content/public/browser/storage_partition.h" | 48 #include "content/public/browser/storage_partition.h" |
| 49 #include "content/public/browser/user_metrics.h" | 49 #include "content/public/browser/user_metrics.h" |
| 50 #include "content/public/browser/web_contents.h" | 50 #include "content/public/browser/web_contents.h" |
| 51 #include "content/public/common/pepper_plugin_info.h" | 51 #include "content/public/common/pepper_plugin_info.h" |
| 52 #include "grit/generated_resources.h" | 52 #include "grit/generated_resources.h" |
| 53 #include "net/base/escape.h" | 53 #include "net/base/escape.h" |
| 54 #include "net/base/mime_util.h" | 54 #include "net/base/mime_util.h" |
| 55 #include "net/base/net_util.h" | 55 #include "net/base/net_util.h" |
| 56 #include "ui/base/l10n/l10n_util.h" | 56 #include "ui/base/l10n/l10n_util.h" |
| 57 #include "ui/gfx/screen.h" | 57 #include "ui/gfx/screen.h" |
| 58 #include "webkit/browser/fileapi/file_system_backend.h" |
| 58 #include "webkit/browser/fileapi/file_system_context.h" | 59 #include "webkit/browser/fileapi/file_system_context.h" |
| 59 #include "webkit/browser/fileapi/file_system_mount_point_provider.h" | |
| 60 #include "webkit/browser/fileapi/file_system_operation_runner.h" | 60 #include "webkit/browser/fileapi/file_system_operation_runner.h" |
| 61 #include "webkit/browser/fileapi/file_system_url.h" | 61 #include "webkit/browser/fileapi/file_system_url.h" |
| 62 #include "webkit/common/fileapi/file_system_util.h" | 62 #include "webkit/common/fileapi/file_system_util.h" |
| 63 #include "webkit/plugins/webplugininfo.h" | 63 #include "webkit/plugins/webplugininfo.h" |
| 64 | 64 |
| 65 using base::DictionaryValue; | 65 using base::DictionaryValue; |
| 66 using base::ListValue; | 66 using base::ListValue; |
| 67 using content::BrowserContext; | 67 using content::BrowserContext; |
| 68 using content::BrowserThread; | 68 using content::BrowserThread; |
| 69 using content::PluginService; | 69 using content::PluginService; |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 return; | 249 return; |
| 250 InstallCRX(browser, file); | 250 InstallCRX(browser, file); |
| 251 } | 251 } |
| 252 | 252 |
| 253 // Grants file system access to the file browser. | 253 // Grants file system access to the file browser. |
| 254 bool GrantFileSystemAccessToFileBrowser(Profile* profile) { | 254 bool GrantFileSystemAccessToFileBrowser(Profile* profile) { |
| 255 // File browser always runs in the site for its extension id, so that is the | 255 // File browser always runs in the site for its extension id, so that is the |
| 256 // site for which file access permissions should be granted. | 256 // site for which file access permissions should be granted. |
| 257 GURL site = extensions::ExtensionSystem::Get(profile)->extension_service()-> | 257 GURL site = extensions::ExtensionSystem::Get(profile)->extension_service()-> |
| 258 GetSiteForExtensionId(kFileBrowserDomain); | 258 GetSiteForExtensionId(kFileBrowserDomain); |
| 259 fileapi::ExternalFileSystemMountPointProvider* external_provider = | 259 fileapi::ExternalFileSystemBackend* backend = |
| 260 BrowserContext::GetStoragePartitionForSite(profile, site)-> | 260 BrowserContext::GetStoragePartitionForSite(profile, site)-> |
| 261 GetFileSystemContext()->external_provider(); | 261 GetFileSystemContext()->external_backend(); |
| 262 if (!external_provider) | 262 if (!backend) |
| 263 return false; | 263 return false; |
| 264 external_provider->GrantFullAccessToExtension(GetFileBrowserUrl().host()); | 264 backend->GrantFullAccessToExtension(GetFileBrowserUrl().host()); |
| 265 return true; | 265 return true; |
| 266 } | 266 } |
| 267 | 267 |
| 268 // Executes handler specifed with |extension_id| and |action_id| for |url|. | 268 // Executes handler specifed with |extension_id| and |action_id| for |url|. |
| 269 void ExecuteHandler(Profile* profile, | 269 void ExecuteHandler(Profile* profile, |
| 270 std::string extension_id, | 270 std::string extension_id, |
| 271 std::string action_id, | 271 std::string action_id, |
| 272 const GURL& url, | 272 const GURL& url, |
| 273 const std::string& task_type) { | 273 const std::string& task_type) { |
| 274 // If File Browser has not been open yet then it did not request access | 274 // If File Browser has not been open yet then it did not request access |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 ExtensionService* service = | 563 ExtensionService* service = |
| 564 extensions::ExtensionSystem::Get(profile)->extension_service(); | 564 extensions::ExtensionSystem::Get(profile)->extension_service(); |
| 565 // May be NULL during unit_tests. | 565 // May be NULL during unit_tests. |
| 566 if (!service) | 566 if (!service) |
| 567 return false; | 567 return false; |
| 568 | 568 |
| 569 // File browser APIs are meant to be used only from extension context, so the | 569 // File browser APIs are meant to be used only from extension context, so the |
| 570 // extension's site is the one in whose file system context the virtual path | 570 // extension's site is the one in whose file system context the virtual path |
| 571 // should be found. | 571 // should be found. |
| 572 GURL site = service->GetSiteForExtensionId(extension_id); | 572 GURL site = service->GetSiteForExtensionId(extension_id); |
| 573 fileapi::ExternalFileSystemMountPointProvider* provider = | 573 fileapi::ExternalFileSystemBackend* backend = |
| 574 BrowserContext::GetStoragePartitionForSite(profile, site)-> | 574 BrowserContext::GetStoragePartitionForSite(profile, site)-> |
| 575 GetFileSystemContext()->external_provider(); | 575 GetFileSystemContext()->external_backend(); |
| 576 if (!provider) | 576 if (!backend) |
| 577 return false; | 577 return false; |
| 578 | 578 |
| 579 // Find if this file path is managed by the external provider. | 579 // Find if this file path is managed by the external backend. |
| 580 if (!provider->GetVirtualPath(full_file_path, virtual_path)) | 580 if (!backend->GetVirtualPath(full_file_path, virtual_path)) |
| 581 return false; | 581 return false; |
| 582 | 582 |
| 583 return true; | 583 return true; |
| 584 } | 584 } |
| 585 | 585 |
| 586 GURL GetFileBrowserUrlWithParams( | 586 GURL GetFileBrowserUrlWithParams( |
| 587 ui::SelectFileDialog::Type type, | 587 ui::SelectFileDialog::Type type, |
| 588 const string16& title, | 588 const string16& title, |
| 589 const base::FilePath& default_virtual_path, | 589 const base::FilePath& default_virtual_path, |
| 590 const ui::SelectFileDialog::FileTypeInfo* file_types, | 590 const ui::SelectFileDialog::FileTypeInfo* file_types, |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 // If the file doesn't have an extension or its mime-type cannot be | 855 // If the file doesn't have an extension or its mime-type cannot be |
| 856 // determined, then indicate that it has the empty mime-type. This will | 856 // determined, then indicate that it has the empty mime-type. This will |
| 857 // only be matched if the Web Intents accepts "*" or "*/*". | 857 // only be matched if the Web Intents accepts "*" or "*/*". |
| 858 return ""; | 858 return ""; |
| 859 } else { | 859 } else { |
| 860 return mime_type; | 860 return mime_type; |
| 861 } | 861 } |
| 862 } | 862 } |
| 863 | 863 |
| 864 } // namespace file_manager_util | 864 } // namespace file_manager_util |
| OLD | NEW |