Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: chrome/browser/chromeos/extensions/file_browser_handler_api.h

Issue 11747025: Run the JSON Schema Compiler's bundle compilation on JSON files. Previously it (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix ms release build Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // File contains the fileBrowserHandlerInternal.selectFile extension function. 5 // File contains the fileBrowserHandlerInternal.selectFile extension function.
6 // The function prompts user to select a file path to be used by the caller. It 6 // The function prompts user to select a file path to be used by the caller. It
7 // will fail if it isn't invoked by a user gesture (e.g. a mouse click or a 7 // will fail if it isn't invoked by a user gesture (e.g. a mouse click or a
8 // keyboard key press). 8 // keyboard key press).
9 // Note that the target file is never actually created by this function, even 9 // Note that the target file is never actually created by this function, even
10 // if the selected path doesn't exist. 10 // if the selected path doesn't exist.
11 11
12 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_ 12 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_
13 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_ 13 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_
14 14
15 #include <string> 15 #include <string>
16 #include <vector> 16 #include <vector>
17 17
18 #include "base/file_path.h" 18 #include "base/file_path.h"
19 #include "chrome/browser/extensions/extension_function.h" 19 #include "chrome/browser/extensions/extension_function.h"
20 20
21 class Browser; 21 class Browser;
22 class FileHandlerSelectFileFunction; 22 class FileBrowserHandlerInternalSelectFileFunction;
23 23
24 namespace file_handler { 24 namespace file_handler {
25 25
26 // Interface that is used by FileHandlerSelectFileFunction to select the file 26 // Interface that is used by FileBrowserHandlerInternalSelectFileFunction to
27 // path that should be reported back to the extension function caller. 27 // select the file path that should be reported back to the extension function
28 // Nobody will take the ownership of the interface implementation, so it should 28 // caller. Nobody will take the ownership of the interface implementation, so
29 // delete itself once it's done. 29 // it should delete itself once it's done.
30 class FileSelector { 30 class FileSelector {
31 public: 31 public:
32 virtual ~FileSelector() {} 32 virtual ~FileSelector() {}
33 33
34 // Starts the file selection. It should prompt user to select a file path. 34 // Starts the file selection. It should prompt user to select a file path.
35 // Once the selection is made it should asynchronously call 35 // Once the selection is made it should asynchronously call
36 // |function_->OnFilePathSelected| with the selection information. 36 // |function_->OnFilePathSelected| with the selection information.
37 // User should be initially suggested to select file named |suggested_name|. 37 // User should be initially suggested to select file named |suggested_name|.
38 // |allowed_extensions| specifies the file extensions allowed to be shown, 38 // |allowed_extensions| specifies the file extensions allowed to be shown,
39 // and selected. Extensions should not include '.'. This spec comes from 39 // and selected. Extensions should not include '.'. This spec comes from
40 // ui::SelectFileDialog() which takes extensions without '.'. 40 // ui::SelectFileDialog() which takes extensions without '.'.
41 // 41 //
42 // Selection UI should be displayed using |browser|. |browser| should outlive 42 // Selection UI should be displayed using |browser|. |browser| should outlive
43 // the interface implementation. 43 // the interface implementation.
44 // |function| if the extension function that called the method and needs to 44 // |function| if the extension function that called the method and needs to
45 // be notified of user action. The interface implementation should keep a 45 // be notified of user action. The interface implementation should keep a
46 // reference to the function until it is notified (extension function 46 // reference to the function until it is notified (extension function
47 // implementations are ref counted). 47 // implementations are ref counted).
48 // |SelectFile| will be called at most once by a single extension function. 48 // |SelectFile| will be called at most once by a single extension function.
49 // The interface implementation should delete itself after the extension 49 // The interface implementation should delete itself after the extension
50 // function is notified of file selection result. 50 // function is notified of file selection result.
51 virtual void SelectFile(const FilePath& suggested_name, 51 virtual void SelectFile(
52 const std::vector<std::string>& allowed_extensions, 52 const FilePath& suggested_name,
53 Browser* browser, 53 const std::vector<std::string>& allowed_extensions,
54 FileHandlerSelectFileFunction* function) = 0; 54 Browser* browser,
55 FileBrowserHandlerInternalSelectFileFunction* function) = 0;
55 }; 56 };
56 57
57 // Interface that is used by FileHandlerSelectFileFunction to create a 58 // Interface that is used by FileBrowserHandlerInternalSelectFileFunction to
58 // FileSelector it can use to select a file path. 59 // create a FileSelector it can use to select a file path.
59 class FileSelectorFactory { 60 class FileSelectorFactory {
60 public: 61 public:
61 virtual ~FileSelectorFactory() {} 62 virtual ~FileSelectorFactory() {}
62 63
63 // Creates a FileSelector instance for the FileHandlerSelectFileFunction. 64 // Creates a FileSelector instance for the
65 // FileBrowserHandlerInternalSelectFileFunction.
64 virtual FileSelector* CreateFileSelector() const = 0; 66 virtual FileSelector* CreateFileSelector() const = 0;
65 }; 67 };
66 68
67 } // namespace file_handler 69 } // namespace file_handler
68 70
69 // The fileBrowserHandlerInternal.selectFile extension function implementation. 71 // The fileBrowserHandlerInternal.selectFile extension function implementation.
70 // See the file description for more info. 72 // See the file description for more info.
71 class FileHandlerSelectFileFunction : public AsyncExtensionFunction { 73 class FileBrowserHandlerInternalSelectFileFunction
74 : public AsyncExtensionFunction {
72 public: 75 public:
73 // Default constructor used in production code. 76 // Default constructor used in production code.
74 // It will create its own FileSelectorFactory implementation, and set the 77 // It will create its own FileSelectorFactory implementation, and set the
75 // value of |user_gesture_check_enabled| to true. 78 // value of |user_gesture_check_enabled| to true.
76 FileHandlerSelectFileFunction(); 79 FileBrowserHandlerInternalSelectFileFunction();
77 80
78 // This constructor should be used only in tests to inject test file selector 81 // This constructor should be used only in tests to inject test file selector
79 // factory and to allow extension function to run even if it hasn't been 82 // factory and to allow extension function to run even if it hasn't been
80 // invoked by user gesture. 83 // invoked by user gesture.
81 // Created object will take the ownership of the |file_selector_factory|. 84 // Created object will take the ownership of the |file_selector_factory|.
82 FileHandlerSelectFileFunction( 85 FileBrowserHandlerInternalSelectFileFunction(
83 file_handler::FileSelectorFactory* file_selector_factory, 86 file_handler::FileSelectorFactory* file_selector_factory,
84 bool enable_user_gesture_check); 87 bool enable_user_gesture_check);
85 88
86 // Called by FileSelector implementation when the user selects the file's 89 // Called by FileSelector implementation when the user selects the file's
87 // file path. File access permissions for the selected file are granted and 90 // file path. File access permissions for the selected file are granted and
88 // caller is notified of the selection result after this method is called. 91 // caller is notified of the selection result after this method is called.
89 // |success| Whether the path was selected. 92 // |success| Whether the path was selected.
90 // |full_path| The selected file path if one was selected. It is ignored if 93 // |full_path| The selected file path if one was selected. It is ignored if
91 // the selection did not succeed. 94 // the selection did not succeed.
92 void OnFilePathSelected(bool success, const FilePath& full_path); 95 void OnFilePathSelected(bool success, const FilePath& full_path);
93 96
94 protected: 97 protected:
95 // The class is ref counted, so destructor should not be public. 98 // The class is ref counted, so destructor should not be public.
96 virtual ~FileHandlerSelectFileFunction() OVERRIDE; 99 virtual ~FileBrowserHandlerInternalSelectFileFunction();
97 100
98 // AsyncExtensionFunction implementation. 101 // AsyncExtensionFunction implementation.
99 // Runs the extension function implementation. 102 // Runs the extension function implementation.
100 virtual bool RunImpl() OVERRIDE; 103 virtual bool RunImpl() OVERRIDE;
101 104
102 private: 105 private:
103 // Called when the external file system is opened for the extension function 106 // Called when the external file system is opened for the extension function
104 // caller in the browser context. It saves opened file system's parameters. 107 // caller in the browser context. It saves opened file system's parameters.
105 // The file system is needed to create FileEntry object for the selection 108 // The file system is needed to create FileEntry object for the selection
106 // result. 109 // result.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 GURL file_system_root_; 155 GURL file_system_root_;
153 156
154 // List of permissions and paths that have to be granted for the selected 157 // List of permissions and paths that have to be granted for the selected
155 // files. 158 // files.
156 std::vector<std::pair<FilePath, int> > permissions_to_grant_; 159 std::vector<std::pair<FilePath, int> > permissions_to_grant_;
157 160
158 DECLARE_EXTENSION_FUNCTION_NAME("fileBrowserHandlerInternal.selectFile"); 161 DECLARE_EXTENSION_FUNCTION_NAME("fileBrowserHandlerInternal.selectFile");
159 }; 162 };
160 163
161 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_ 164 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_BROWSER_HANDLER_API_H_
OLDNEW
« no previous file with comments | « build/json_schema_compile.gypi ('k') | chrome/browser/chromeos/extensions/file_browser_handler_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698