| 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/file_manager/file_browser_handlers.h" | 5 #include "chrome/browser/chromeos/file_manager/file_browser_handlers.h" |
| 6 | 6 |
| 7 #include <algorithm> |
| 8 #include <set> |
| 9 |
| 7 #include "base/bind.h" | 10 #include "base/bind.h" |
| 8 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
| 9 #include "base/i18n/case_conversion.h" | 12 #include "base/i18n/case_conversion.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 11 #include "chrome/browser/chromeos/drive/file_system_util.h" | 14 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 12 #include "chrome/browser/chromeos/file_manager/app_id.h" | 15 #include "chrome/browser/chromeos/file_manager/app_id.h" |
| 13 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" | 16 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" |
| 14 #include "chrome/browser/chromeos/file_manager/open_with_browser.h" | 17 #include "chrome/browser/chromeos/file_manager/open_with_browser.h" |
| 15 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" | 18 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" |
| 16 #include "chrome/browser/extensions/extension_service.h" | 19 #include "chrome/browser/extensions/extension_service.h" |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 GrantCreateReadWriteFile(handler_pid, iter->absolute_path); | 426 GrantCreateReadWriteFile(handler_pid, iter->absolute_path); |
| 424 } | 427 } |
| 425 } | 428 } |
| 426 } | 429 } |
| 427 | 430 |
| 428 // Returns true if |extension_id| and |action_id| indicate that the file | 431 // Returns true if |extension_id| and |action_id| indicate that the file |
| 429 // currently being handled should be opened with the browser. This function | 432 // currently being handled should be opened with the browser. This function |
| 430 // is used to handle certain action IDs of the file manager. | 433 // is used to handle certain action IDs of the file manager. |
| 431 bool ShouldBeOpenedWithBrowser(const std::string& extension_id, | 434 bool ShouldBeOpenedWithBrowser(const std::string& extension_id, |
| 432 const std::string& action_id) { | 435 const std::string& action_id) { |
| 433 | |
| 434 return (extension_id == kFileManagerAppId && | 436 return (extension_id == kFileManagerAppId && |
| 435 (action_id == "view-pdf" || | 437 (action_id == "view-pdf" || |
| 436 action_id == "view-swf" || | 438 action_id == "view-swf" || |
| 437 action_id == "view-in-browser" || | 439 action_id == "view-in-browser" || |
| 438 action_id == "open-hosted-generic" || | 440 action_id == "open-hosted-generic" || |
| 439 action_id == "open-hosted-gdoc" || | 441 action_id == "open-hosted-gdoc" || |
| 440 action_id == "open-hosted-gsheet" || | 442 action_id == "open-hosted-gsheet" || |
| 441 action_id == "open-hosted-gslides")); | 443 action_id == "open-hosted-gslides")); |
| 442 } | 444 } |
| 443 | 445 |
| 444 // Opens the files specified by |file_urls| with the browser for |profile|. | 446 // Opens the files specified by |file_urls| with the browser for |profile|. |
| 445 // Returns true on success. It's a failure if no files are opened. | 447 // Returns true on success. It's a failure if no files are opened. |
| 446 bool OpenFilesWithBrowser(Profile* profile, | 448 bool OpenFilesWithBrowser(Profile* profile, |
| 447 const std::vector<FileSystemURL>& file_urls) { | 449 const std::vector<FileSystemURL>& file_urls) { |
| 448 int num_opened = 0; | 450 int num_opened = 0; |
| 449 for (size_t i = 0; i < file_urls.size(); ++i) { | 451 for (size_t i = 0; i < file_urls.size(); ++i) { |
| 450 const FileSystemURL& file_url = file_urls[i]; | 452 const FileSystemURL& file_url = file_urls[i]; |
| 451 if (chromeos::FileSystemBackend::CanHandleURL(file_url)) { | 453 if (chromeos::FileSystemBackend::CanHandleURL(file_url)) { |
| 452 const base::FilePath& file_path = file_url.path(); | 454 num_opened += util::OpenFileWithBrowser(profile, file_url) ? 1 : 0; |
| 453 num_opened += util::OpenFileWithBrowser(profile, file_path); | |
| 454 } | 455 } |
| 455 } | 456 } |
| 456 return num_opened > 0; | 457 return num_opened > 0; |
| 457 } | 458 } |
| 458 | 459 |
| 459 } // namespace | 460 } // namespace |
| 460 | 461 |
| 461 bool ExecuteFileBrowserHandler( | 462 bool ExecuteFileBrowserHandler( |
| 462 Profile* profile, | 463 Profile* profile, |
| 463 const Extension* extension, | 464 const Extension* extension, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 if (common_handlers.empty()) | 517 if (common_handlers.empty()) |
| 517 return FileBrowserHandlerList(); | 518 return FileBrowserHandlerList(); |
| 518 } | 519 } |
| 519 } | 520 } |
| 520 | 521 |
| 521 return common_handlers; | 522 return common_handlers; |
| 522 } | 523 } |
| 523 | 524 |
| 524 } // namespace file_browser_handlers | 525 } // namespace file_browser_handlers |
| 525 } // namespace file_manager | 526 } // namespace file_manager |
| OLD | NEW |