| 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_util.h" | 4 #include "chrome/browser/chromeos/extensions/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/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 #include "webkit/plugins/webplugininfo.h" | 61 #include "webkit/plugins/webplugininfo.h" |
| 62 | 62 |
| 63 using base::DictionaryValue; | 63 using base::DictionaryValue; |
| 64 using base::ListValue; | 64 using base::ListValue; |
| 65 using content::BrowserContext; | 65 using content::BrowserContext; |
| 66 using content::BrowserThread; | 66 using content::BrowserThread; |
| 67 using content::PluginService; | 67 using content::PluginService; |
| 68 using content::UserMetricsAction; | 68 using content::UserMetricsAction; |
| 69 using extensions::Extension; | 69 using extensions::Extension; |
| 70 using file_handler_util::FileTaskExecutor; | 70 using file_handler_util::FileTaskExecutor; |
| 71 using fileapi::FileSystemURL; |
| 71 | 72 |
| 72 #define FILEBROWSER_EXTENSON_ID "hhaomjibdihmijegdhdafkllkbggdgoj" | 73 #define FILEBROWSER_EXTENSON_ID "hhaomjibdihmijegdhdafkllkbggdgoj" |
| 73 const char kFileBrowserDomain[] = FILEBROWSER_EXTENSON_ID; | 74 const char kFileBrowserDomain[] = FILEBROWSER_EXTENSON_ID; |
| 74 | 75 |
| 75 const char kFileBrowserGalleryTaskId[] = "gallery"; | 76 const char kFileBrowserGalleryTaskId[] = "gallery"; |
| 76 const char kFileBrowserMountArchiveTaskId[] = "mount-archive"; | 77 const char kFileBrowserMountArchiveTaskId[] = "mount-archive"; |
| 77 const char kFileBrowserWatchTaskId[] = "watch"; | 78 const char kFileBrowserWatchTaskId[] = "watch"; |
| 78 const char kFileBrowserPlayTaskId[] = "play"; | 79 const char kFileBrowserPlayTaskId[] = "play"; |
| 79 | 80 |
| 80 const char kVideoPlayerAppName[] = "videoplayer"; | 81 const char kVideoPlayerAppName[] = "videoplayer"; |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 const GURL& url) { | 343 const GURL& url) { |
| 343 // We are executing the task on behalf of File Browser extension. | 344 // We are executing the task on behalf of File Browser extension. |
| 344 const GURL source_url(kBaseFileBrowserUrl); | 345 const GURL source_url(kBaseFileBrowserUrl); |
| 345 | 346 |
| 346 // If File Browser has not been open yet then it did not request access | 347 // If File Browser has not been open yet then it did not request access |
| 347 // to the file system. Do it now. | 348 // to the file system. Do it now. |
| 348 // File browser always runs in the site for its extension id, so that is the | 349 // File browser always runs in the site for its extension id, so that is the |
| 349 // site for which file access permissions should be granted. | 350 // site for which file access permissions should be granted. |
| 350 GURL site = extensions::ExtensionSystem::Get(profile)->extension_service()-> | 351 GURL site = extensions::ExtensionSystem::Get(profile)->extension_service()-> |
| 351 GetSiteForExtensionId(kFileBrowserDomain); | 352 GetSiteForExtensionId(kFileBrowserDomain); |
| 352 fileapi::ExternalFileSystemMountPointProvider* external_provider = | 353 fileapi::FileSystemContext* file_system_context = |
| 353 BrowserContext::GetStoragePartitionForSite(profile, site)-> | 354 BrowserContext::GetStoragePartitionForSite(profile, site)-> |
| 354 GetFileSystemContext()->external_provider(); | 355 GetFileSystemContext(); |
| 355 if (!external_provider) | 356 |
| 357 if (!file_system_context->external_provider()) |
| 356 return; | 358 return; |
| 357 external_provider->GrantFullAccessToExtension(source_url.host()); | 359 file_system_context->external_provider()->GrantFullAccessToExtension( |
| 360 source_url.host()); |
| 358 | 361 |
| 359 std::vector<GURL> urls; | 362 std::vector<FileSystemURL> urls; |
| 360 urls.push_back(url); | 363 urls.push_back(file_system_context->CrackURL(url)); |
| 361 scoped_refptr<FileTaskExecutor> executor = FileTaskExecutor::Create(profile, | 364 scoped_refptr<FileTaskExecutor> executor = FileTaskExecutor::Create(profile, |
| 362 source_url, kFileBrowserDomain, 0 /* no tab id */, extension_id, | 365 source_url, kFileBrowserDomain, 0 /* no tab id */, extension_id, |
| 363 file_handler_util::kTaskFile, action_id); | 366 file_handler_util::kTaskFile, action_id); |
| 364 executor->Execute(urls); | 367 executor->Execute(urls); |
| 365 } | 368 } |
| 366 | 369 |
| 367 void OpenFileBrowser(const FilePath& path, | 370 void OpenFileBrowser(const FilePath& path, |
| 368 TAB_REUSE_MODE mode, | 371 TAB_REUSE_MODE mode, |
| 369 const std::string& action_id) { | 372 const std::string& action_id) { |
| 370 content::RecordAction(UserMetricsAction("ShowFileBrowserFullTab")); | 373 content::RecordAction(UserMetricsAction("ShowFileBrowserFullTab")); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 } | 435 } |
| 433 return NULL; | 436 return NULL; |
| 434 } | 437 } |
| 435 | 438 |
| 436 bool ExecuteDefaultHandler(Profile* profile, const FilePath& path) { | 439 bool ExecuteDefaultHandler(Profile* profile, const FilePath& path) { |
| 437 GURL url; | 440 GURL url; |
| 438 if (!ConvertFileToFileSystemUrl(profile, path, kFileBrowserDomain, &url)) | 441 if (!ConvertFileToFileSystemUrl(profile, path, kFileBrowserDomain, &url)) |
| 439 return false; | 442 return false; |
| 440 | 443 |
| 441 const FileBrowserHandler* handler; | 444 const FileBrowserHandler* handler; |
| 442 if (!file_handler_util::GetTaskForURL(profile, url, &handler)) | 445 if (!file_handler_util::GetTaskForURLAndPath(profile, url, path, &handler)) |
| 443 return false; | 446 return false; |
| 444 | 447 |
| 445 std::string extension_id = handler->extension_id(); | 448 std::string extension_id = handler->extension_id(); |
| 446 std::string action_id = handler->id(); | 449 std::string action_id = handler->id(); |
| 447 Browser* browser = chrome::FindLastActiveWithProfile(profile, | 450 Browser* browser = chrome::FindLastActiveWithProfile(profile, |
| 448 chrome::HOST_DESKTOP_TYPE_ASH); | 451 chrome::HOST_DESKTOP_TYPE_ASH); |
| 449 | 452 |
| 450 // If there is no browsers for the profile, bail out. Return true so warning | 453 // If there is no browsers for the profile, bail out. Return true so warning |
| 451 // about file type not being supported is not displayed. | 454 // about file type not being supported is not displayed. |
| 452 if (!browser) | 455 if (!browser) |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 } | 543 } |
| 541 } | 544 } |
| 542 | 545 |
| 543 // Used to implement CheckIfDirectoryExists(). | 546 // Used to implement CheckIfDirectoryExists(). |
| 544 void CheckIfDirectoryExistsOnIOThread( | 547 void CheckIfDirectoryExistsOnIOThread( |
| 545 scoped_refptr<fileapi::FileSystemContext> file_system_context, | 548 scoped_refptr<fileapi::FileSystemContext> file_system_context, |
| 546 const GURL& url, | 549 const GURL& url, |
| 547 const fileapi::FileSystemOperation::StatusCallback& callback) { | 550 const fileapi::FileSystemOperation::StatusCallback& callback) { |
| 548 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 551 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 549 | 552 |
| 550 fileapi::FileSystemURL file_system_url(url); | 553 fileapi::FileSystemURL file_system_url = file_system_context->CrackURL(url); |
| 551 base::PlatformFileError error = base::PLATFORM_FILE_OK; | 554 base::PlatformFileError error = base::PLATFORM_FILE_OK; |
| 552 fileapi::FileSystemOperation* operation = | 555 fileapi::FileSystemOperation* operation = |
| 553 file_system_context->CreateFileSystemOperation(file_system_url, &error); | 556 file_system_context->CreateFileSystemOperation(file_system_url, &error); |
| 554 if (error != base::PLATFORM_FILE_OK) { | 557 if (error != base::PLATFORM_FILE_OK) { |
| 555 callback.Run(error); | 558 callback.Run(error); |
| 556 return; | 559 return; |
| 557 } | 560 } |
| 558 operation->DirectoryExists(file_system_url, callback); | 561 operation->DirectoryExists(file_system_url, callback); |
| 559 } | 562 } |
| 560 | 563 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 for (google_apis::OperationProgressStatusList::const_iterator iter = | 933 for (google_apis::OperationProgressStatusList::const_iterator iter = |
| 931 list.begin(); | 934 list.begin(); |
| 932 iter != list.end(); ++iter) { | 935 iter != list.end(); ++iter) { |
| 933 result_list->Append( | 936 result_list->Append( |
| 934 ProgessStatusToDictionaryValue(profile, extension_id, *iter)); | 937 ProgessStatusToDictionaryValue(profile, extension_id, *iter)); |
| 935 } | 938 } |
| 936 return result_list.release(); | 939 return result_list.release(); |
| 937 } | 940 } |
| 938 | 941 |
| 939 } // namespace file_manager_util | 942 } // namespace file_manager_util |
| OLD | NEW |