| Index: chrome/browser/platform_util.h
|
| diff --git a/chrome/browser/platform_util.h b/chrome/browser/platform_util.h
|
| index 3e9346964fe4e399e3a47e4109521577fc41c7d5..f45e3a580fd5f92cb8df5c315bd4aad3f5f59ec4 100644
|
| --- a/chrome/browser/platform_util.h
|
| +++ b/chrome/browser/platform_util.h
|
| @@ -7,6 +7,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/callback_forward.h"
|
| #include "base/strings/string16.h"
|
| #include "ui/gfx/native_widget_types.h"
|
|
|
| @@ -19,15 +20,45 @@ class FilePath;
|
|
|
| namespace platform_util {
|
|
|
| -// Show the given file in a file manager. If possible, select the file.
|
| -// The |profile| is used to determine the running profile of file manager app
|
| -// in Chrome OS only. Not used in other platforms.
|
| -// Must be called from the UI thread.
|
| +// Result of calling OpenFile() or OpenFolder() passed into OpenOperationResult.
|
| +enum OpenOperationResult {
|
| + OPEN_SUCCEEDED,
|
| + OPEN_FAILED_PATH_NOT_FOUND, // Specified path does not exist.
|
| + OPEN_FAILED_INVALID_TYPE, // Type of object found at path did not match what
|
| + // was expected. I.e. OpenFile was called on a
|
| + // folder or OpenFolder called on a file.
|
| + OPEN_FAILED_NO_HANLDER_FOR_FILE_TYPE, // There was no file handler capable of
|
| + // opening file. Only returned on
|
| + // ChromeOS.
|
| + OPEN_FAILED_FILE_ERROR, // Open operation failed due to some other file
|
| + // error.
|
| +};
|
| +
|
| +// Callback used with OpenFile and OpenFolder.
|
| +typedef base::Callback<void(OpenOperationResult)> OpenOperationCallback;
|
| +
|
| +// Opens the folder containing the item specified by |full_path| in the
|
| +// desktop's default manner. If possible, the item will be selected. The
|
| +// |profile| is used to determine the running profile of file manager app in
|
| +// Chrome OS only. Not used in other platforms. Must be called on the UI
|
| +// thread.
|
| void ShowItemInFolder(Profile* profile, const base::FilePath& full_path);
|
|
|
| -// Open the given file in the desktop's default manner.
|
| -// Must be called from the UI thread.
|
| -void OpenItem(Profile* profile, const base::FilePath& full_path);
|
| +// Opens the file specified by |full_path| in the desktop's default manner.
|
| +// |callback| will be invoked on the UI thread with the result of the open
|
| +// operation. |full_path| must point to a valid file. If it doesn't exist or is
|
| +// not a file, the corresponding error will be returned to |callback|.
|
| +void OpenFile(Profile* profile,
|
| + const base::FilePath& full_path,
|
| + const OpenOperationCallback& callback);
|
| +
|
| +// Opens the folder specified by |full_path| in the desktop's default manner.
|
| +// |callback| will be invoked on the UI thread with the result of the open
|
| +// operation. |full_path| must be an existing directory. If not, the
|
| +// corresponding error will be returned to |callback|.
|
| +void OpenFolder(Profile* profile,
|
| + const base::FilePath& full_path,
|
| + const OpenOperationCallback& callback);
|
|
|
| // Open the given external protocol URL in the desktop's default manner.
|
| // (For example, mailto: URLs in the default mail user agent.)
|
|
|