1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_EXTENSIONS_FILE_MANAGER_UTIL_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_EXTENSIONS_FILE_MANAGER_UTIL_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/file_path.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/shell_dialogs.h"
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "googleurl/src/gurl.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass Profile;
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Helper class for wiring file browser component extension with the rest of UI.
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass FileManagerUtil {
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Gets base file browser url.
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static GURL GetFileBrowserUrl();
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Converts |full_file_path| into external filesystem: url. Returns false
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // if |full_file_path| is not managed by the external filesystem provider.
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static bool ConvertFileToFileSystemUrl(Profile* profile,
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const FilePath& full_file_path, const GURL& origin_url, GURL* url);
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Gets base file browser url for.
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static GURL GetFileBrowserUrlWithParams(
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      SelectFileDialog::Type type,
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const string16& title,
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const FilePath& default_path,
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const SelectFileDialog::FileTypeInfo* file_types,
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      int file_type_index,
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const FilePath::StringType& default_extension);
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Opens file browser UI in its own tab on file system location defined with
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // |default_path|.
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static void ShowFullTabUrl(Profile* profile,
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                             const FilePath& default_path);
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static void ViewItem(const FilePath& full_path, bool enqueue);
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  FileManagerUtil() {}
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Helper to convert numeric dialog type to a string.
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static std::string GetDialogTypeAsString(SelectFileDialog::Type dialog_type);
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Help to convert potential dialog arguments into json.
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  static std::string GetArgumentsJson(
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      SelectFileDialog::Type type,
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const string16& title,
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const FilePath& default_path,
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const SelectFileDialog::FileTypeInfo* file_types,
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      int file_type_index,
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const FilePath::StringType& default_extension);
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(FileManagerUtil);
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_EXTENSIONS_FILE_MANAGER_UTIL_H_
57