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

Side by Side Diff: chrome/browser/extensions/api/downloads/downloads_api.h

Issue 10639020: Switch the downloads API over to IDL/json_schema_compiler (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 8 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/extensions/api/downloads/downloads_api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 29 matching lines...) Expand all
40 extern const char kInvalidFilterError[]; 40 extern const char kInvalidFilterError[];
41 extern const char kInvalidOperationError[]; 41 extern const char kInvalidOperationError[];
42 extern const char kInvalidOrderByError[]; 42 extern const char kInvalidOrderByError[];
43 extern const char kInvalidQueryLimit[]; 43 extern const char kInvalidQueryLimit[];
44 extern const char kInvalidStateError[]; 44 extern const char kInvalidStateError[];
45 extern const char kInvalidURLError[]; 45 extern const char kInvalidURLError[];
46 extern const char kNotImplementedError[]; 46 extern const char kNotImplementedError[];
47 47
48 } // namespace download_extension_errors 48 } // namespace download_extension_errors
49 49
50 class DownloadsFunctionInterface {
51 public:
52 enum DownloadsFunctionName {
53 DOWNLOADS_FUNCTION_DOWNLOAD = 0,
54 DOWNLOADS_FUNCTION_SEARCH = 1,
55 DOWNLOADS_FUNCTION_PAUSE = 2,
56 DOWNLOADS_FUNCTION_RESUME = 3,
57 DOWNLOADS_FUNCTION_CANCEL = 4,
58 DOWNLOADS_FUNCTION_ERASE = 5,
59 DOWNLOADS_FUNCTION_SET_DESTINATION = 6,
60 DOWNLOADS_FUNCTION_ACCEPT_DANGER = 7,
61 DOWNLOADS_FUNCTION_SHOW = 8,
62 DOWNLOADS_FUNCTION_DRAG = 9,
63 DOWNLOADS_FUNCTION_GET_FILE_ICON = 10,
64 // Insert new values here, not at the beginning.
65 DOWNLOADS_FUNCTION_LAST
66 };
67 50
68 protected: 51 class DownloadsDownloadFunction : public AsyncExtensionFunction {
69 virtual ~DownloadsFunctionInterface() {}
70
71 // Return true if args_ is well-formed, otherwise set error_ and return false.
72 virtual bool ParseArgs() = 0;
73
74 // Implementation-specific logic. "Do the thing that you do." Should return
75 // true if the call succeeded and false otherwise.
76 virtual bool RunInternal() = 0;
77
78 // Which subclass is this.
79 virtual DownloadsFunctionName function() const = 0;
80
81 // Wrap ParseArgs(), RunInternal().
82 static bool RunImplImpl(DownloadsFunctionInterface* pimpl);
83 };
84
85 class SyncDownloadsFunction : public SyncExtensionFunction,
86 public DownloadsFunctionInterface {
87 protected:
88 explicit SyncDownloadsFunction(DownloadsFunctionName function);
89 virtual ~SyncDownloadsFunction();
90
91 // ExtensionFunction:
92 virtual bool RunImpl() OVERRIDE;
93
94 // DownloadsFunctionInterface:
95 virtual DownloadsFunctionName function() const OVERRIDE;
96
97 content::DownloadItem* GetActiveItem(int download_id);
98
99 private:
100 DownloadsFunctionName function_;
101
102 DISALLOW_COPY_AND_ASSIGN(SyncDownloadsFunction);
103 };
104
105 class AsyncDownloadsFunction : public AsyncExtensionFunction,
106 public DownloadsFunctionInterface {
107 protected:
108 explicit AsyncDownloadsFunction(DownloadsFunctionName function);
109 virtual ~AsyncDownloadsFunction();
110
111 // ExtensionFunction:
112 virtual bool RunImpl() OVERRIDE;
113
114 // DownloadsFunctionInterface:
115 virtual DownloadsFunctionName function() const OVERRIDE;
116
117 content::DownloadItem* GetActiveItem(int download_id);
118
119 private:
120 DownloadsFunctionName function_;
121
122 DISALLOW_COPY_AND_ASSIGN(AsyncDownloadsFunction);
123 };
124
125 class DownloadsDownloadFunction : public AsyncDownloadsFunction {
126 public: 52 public:
127 DECLARE_EXTENSION_FUNCTION_NAME("downloads.download"); 53 DECLARE_EXTENSION_FUNCTION_NAME("downloads.download");
128
129 DownloadsDownloadFunction(); 54 DownloadsDownloadFunction();
55 virtual bool RunImpl() OVERRIDE;
130 56
131 protected: 57 protected:
132 virtual ~DownloadsDownloadFunction(); 58 virtual ~DownloadsDownloadFunction();
133 59
134 // DownloadsFunctionInterface:
135 virtual bool ParseArgs() OVERRIDE;
136 virtual bool RunInternal() OVERRIDE;
137
138 private: 60 private:
139 struct IOData {
140 public:
141 IOData();
142 ~IOData();
143
144 GURL url;
145 string16 filename;
146 bool save_as;
147 base::ListValue* extra_headers;
148 std::string method;
149 std::string post_body;
150 content::ResourceDispatcherHost* rdh;
151 content::ResourceContext* resource_context;
152 int render_process_host_id;
153 int render_view_host_routing_id;
154 };
155
156 void BeginDownloadOnIOThread();
157 void OnStarted(content::DownloadId dl_id, net::Error error); 61 void OnStarted(content::DownloadId dl_id, net::Error error);
158 62
159 scoped_ptr<IOData> iodata_;
160
161 DISALLOW_COPY_AND_ASSIGN(DownloadsDownloadFunction); 63 DISALLOW_COPY_AND_ASSIGN(DownloadsDownloadFunction);
162 }; 64 };
163 65
164 class DownloadsSearchFunction : public SyncDownloadsFunction { 66 class DownloadsSearchFunction : public SyncExtensionFunction {
165 public: 67 public:
166 DECLARE_EXTENSION_FUNCTION_NAME("downloads.search"); 68 DECLARE_EXTENSION_FUNCTION_NAME("downloads.search");
167
168 DownloadsSearchFunction(); 69 DownloadsSearchFunction();
70 virtual bool RunImpl() OVERRIDE;
169 71
170 protected: 72 protected:
171 virtual ~DownloadsSearchFunction(); 73 virtual ~DownloadsSearchFunction();
172 74
173 // DownloadsFunctionInterface:
174 virtual bool ParseArgs() OVERRIDE;
175 virtual bool RunInternal() OVERRIDE;
176
177 private: 75 private:
178 bool ParseOrderBy(const base::Value& order_by_value);
179
180 scoped_ptr<DownloadQuery> query_;
181 int get_id_;
182 bool has_get_id_;
183
184 DISALLOW_COPY_AND_ASSIGN(DownloadsSearchFunction); 76 DISALLOW_COPY_AND_ASSIGN(DownloadsSearchFunction);
185 }; 77 };
186 78
187 class DownloadsPauseFunction : public SyncDownloadsFunction { 79 class DownloadsPauseFunction : public SyncExtensionFunction {
188 public: 80 public:
189 DECLARE_EXTENSION_FUNCTION_NAME("downloads.pause"); 81 DECLARE_EXTENSION_FUNCTION_NAME("downloads.pause");
190
191 DownloadsPauseFunction(); 82 DownloadsPauseFunction();
83 virtual bool RunImpl() OVERRIDE;
192 84
193 protected: 85 protected:
194 virtual ~DownloadsPauseFunction(); 86 virtual ~DownloadsPauseFunction();
195 87
196 // DownloadsFunctionInterface:
197 virtual bool ParseArgs() OVERRIDE;
198 virtual bool RunInternal() OVERRIDE;
199
200 private: 88 private:
201 int download_id_;
202 DISALLOW_COPY_AND_ASSIGN(DownloadsPauseFunction); 89 DISALLOW_COPY_AND_ASSIGN(DownloadsPauseFunction);
203 }; 90 };
204 91
205 class DownloadsResumeFunction : public SyncDownloadsFunction { 92 class DownloadsResumeFunction : public SyncExtensionFunction {
206 public: 93 public:
207 DECLARE_EXTENSION_FUNCTION_NAME("downloads.resume"); 94 DECLARE_EXTENSION_FUNCTION_NAME("downloads.resume");
208
209 DownloadsResumeFunction(); 95 DownloadsResumeFunction();
96 virtual bool RunImpl() OVERRIDE;
210 97
211 protected: 98 protected:
212 virtual ~DownloadsResumeFunction(); 99 virtual ~DownloadsResumeFunction();
213 100
214 // DownloadsFunctionInterface:
215 virtual bool ParseArgs() OVERRIDE;
216 virtual bool RunInternal() OVERRIDE;
217
218 private: 101 private:
219 int download_id_;
220 DISALLOW_COPY_AND_ASSIGN(DownloadsResumeFunction); 102 DISALLOW_COPY_AND_ASSIGN(DownloadsResumeFunction);
221 }; 103 };
222 104
223 class DownloadsCancelFunction : public SyncDownloadsFunction { 105 class DownloadsCancelFunction : public SyncExtensionFunction {
224 public: 106 public:
225 DECLARE_EXTENSION_FUNCTION_NAME("downloads.cancel"); 107 DECLARE_EXTENSION_FUNCTION_NAME("downloads.cancel");
226
227 DownloadsCancelFunction(); 108 DownloadsCancelFunction();
109 virtual bool RunImpl() OVERRIDE;
228 110
229 protected: 111 protected:
230 virtual ~DownloadsCancelFunction(); 112 virtual ~DownloadsCancelFunction();
231 113
232 // DownloadsFunctionInterface:
233 virtual bool ParseArgs() OVERRIDE;
234 virtual bool RunInternal() OVERRIDE;
235
236 private: 114 private:
237 int download_id_;
238 DISALLOW_COPY_AND_ASSIGN(DownloadsCancelFunction); 115 DISALLOW_COPY_AND_ASSIGN(DownloadsCancelFunction);
239 }; 116 };
240 117
241 class DownloadsEraseFunction : public AsyncDownloadsFunction { 118 class DownloadsEraseFunction : public AsyncExtensionFunction {
242 public: 119 public:
243 DECLARE_EXTENSION_FUNCTION_NAME("downloads.erase"); 120 DECLARE_EXTENSION_FUNCTION_NAME("downloads.erase");
244
245 DownloadsEraseFunction(); 121 DownloadsEraseFunction();
122 virtual bool RunImpl() OVERRIDE;
246 123
247 protected: 124 protected:
248 virtual ~DownloadsEraseFunction(); 125 virtual ~DownloadsEraseFunction();
249 126
250 // DownloadsFunctionInterface:
251 virtual bool ParseArgs() OVERRIDE;
252 virtual bool RunInternal() OVERRIDE;
253
254 private: 127 private:
255 DISALLOW_COPY_AND_ASSIGN(DownloadsEraseFunction); 128 DISALLOW_COPY_AND_ASSIGN(DownloadsEraseFunction);
256 }; 129 };
257 130
258 class DownloadsSetDestinationFunction : public AsyncDownloadsFunction { 131 class DownloadsSetDestinationFunction : public AsyncExtensionFunction {
259 public: 132 public:
260 DECLARE_EXTENSION_FUNCTION_NAME("downloads.setDestination"); 133 DECLARE_EXTENSION_FUNCTION_NAME("downloads.setDestination");
261
262 DownloadsSetDestinationFunction(); 134 DownloadsSetDestinationFunction();
135 virtual bool RunImpl() OVERRIDE;
263 136
264 protected: 137 protected:
265 virtual ~DownloadsSetDestinationFunction(); 138 virtual ~DownloadsSetDestinationFunction();
266 139
267 // DownloadsFunctionInterface:
268 virtual bool ParseArgs() OVERRIDE;
269 virtual bool RunInternal() OVERRIDE;
270
271 private: 140 private:
272 DISALLOW_COPY_AND_ASSIGN(DownloadsSetDestinationFunction); 141 DISALLOW_COPY_AND_ASSIGN(DownloadsSetDestinationFunction);
273 }; 142 };
274 143
275 class DownloadsAcceptDangerFunction : public AsyncDownloadsFunction { 144 class DownloadsAcceptDangerFunction : public AsyncExtensionFunction {
276 public: 145 public:
277 DECLARE_EXTENSION_FUNCTION_NAME("downloads.acceptDanger"); 146 DECLARE_EXTENSION_FUNCTION_NAME("downloads.acceptDanger");
278
279 DownloadsAcceptDangerFunction(); 147 DownloadsAcceptDangerFunction();
148 virtual bool RunImpl() OVERRIDE;
280 149
281 protected: 150 protected:
282 virtual ~DownloadsAcceptDangerFunction(); 151 virtual ~DownloadsAcceptDangerFunction();
283 152
284 // DownloadsFunctionInterface:
285 virtual bool ParseArgs() OVERRIDE;
286 virtual bool RunInternal() OVERRIDE;
287
288 private: 153 private:
289 DISALLOW_COPY_AND_ASSIGN(DownloadsAcceptDangerFunction); 154 DISALLOW_COPY_AND_ASSIGN(DownloadsAcceptDangerFunction);
290 }; 155 };
291 156
292 class DownloadsShowFunction : public AsyncDownloadsFunction { 157 class DownloadsShowFunction : public AsyncExtensionFunction {
293 public: 158 public:
294 DECLARE_EXTENSION_FUNCTION_NAME("downloads.show"); 159 DECLARE_EXTENSION_FUNCTION_NAME("downloads.show");
295
296 DownloadsShowFunction(); 160 DownloadsShowFunction();
161 virtual bool RunImpl() OVERRIDE;
297 162
298 protected: 163 protected:
299 virtual ~DownloadsShowFunction(); 164 virtual ~DownloadsShowFunction();
300 165
301 // DownloadsFunctionInterface:
302 virtual bool ParseArgs() OVERRIDE;
303 virtual bool RunInternal() OVERRIDE;
304
305 private: 166 private:
306 DISALLOW_COPY_AND_ASSIGN(DownloadsShowFunction); 167 DISALLOW_COPY_AND_ASSIGN(DownloadsShowFunction);
307 }; 168 };
308 169
309 class DownloadsDragFunction : public AsyncDownloadsFunction { 170 class DownloadsOpenFunction : public AsyncExtensionFunction {
171 public:
172 DECLARE_EXTENSION_FUNCTION_NAME("downloads.open");
173 DownloadsOpenFunction();
174 virtual bool RunImpl() OVERRIDE;
175
176 protected:
177 virtual ~DownloadsOpenFunction();
178
179 private:
180 DISALLOW_COPY_AND_ASSIGN(DownloadsOpenFunction);
181 };
182
183 class DownloadsDragFunction : public AsyncExtensionFunction {
310 public: 184 public:
311 DECLARE_EXTENSION_FUNCTION_NAME("downloads.drag"); 185 DECLARE_EXTENSION_FUNCTION_NAME("downloads.drag");
312
313 DownloadsDragFunction(); 186 DownloadsDragFunction();
187 virtual bool RunImpl() OVERRIDE;
314 188
315 protected: 189 protected:
316 virtual ~DownloadsDragFunction(); 190 virtual ~DownloadsDragFunction();
317 191
318 // DownloadsFunctionInterface:
319 virtual bool ParseArgs() OVERRIDE;
320 virtual bool RunInternal() OVERRIDE;
321
322 private: 192 private:
323 DISALLOW_COPY_AND_ASSIGN(DownloadsDragFunction); 193 DISALLOW_COPY_AND_ASSIGN(DownloadsDragFunction);
324 }; 194 };
325 195
326 class DownloadsGetFileIconFunction : public AsyncDownloadsFunction { 196 class DownloadsGetFileIconFunction : public AsyncExtensionFunction {
327 public: 197 public:
328 DECLARE_EXTENSION_FUNCTION_NAME("downloads.getFileIcon"); 198 DECLARE_EXTENSION_FUNCTION_NAME("downloads.getFileIcon");
329
330 DownloadsGetFileIconFunction(); 199 DownloadsGetFileIconFunction();
200 virtual bool RunImpl() OVERRIDE;
331 void SetIconExtractorForTesting(DownloadFileIconExtractor* extractor); 201 void SetIconExtractorForTesting(DownloadFileIconExtractor* extractor);
332 202
333 protected: 203 protected:
334 virtual ~DownloadsGetFileIconFunction(); 204 virtual ~DownloadsGetFileIconFunction();
335 205
336 // DownloadsFunctionInterface:
337 virtual bool ParseArgs() OVERRIDE;
338 virtual bool RunInternal() OVERRIDE;
339
340 private: 206 private:
341 void OnIconURLExtracted(const std::string& url); 207 void OnIconURLExtracted(const std::string& url);
342 FilePath path_; 208 FilePath path_;
343 int icon_size_; 209 int icon_size_;
344 scoped_ptr<DownloadFileIconExtractor> icon_extractor_; 210 scoped_ptr<DownloadFileIconExtractor> icon_extractor_;
345 DISALLOW_COPY_AND_ASSIGN(DownloadsGetFileIconFunction); 211 DISALLOW_COPY_AND_ASSIGN(DownloadsGetFileIconFunction);
346 }; 212 };
347 213
348 // Observes a single DownloadManager and many DownloadItems and dispatches 214 // Observes a single DownloadManager and many DownloadItems and dispatches
349 // onCreated and onErased events. 215 // onCreated and onErased events.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 Profile* profile_; 248 Profile* profile_;
383 content::DownloadManager* manager_; 249 content::DownloadManager* manager_;
384 ItemMap downloads_; 250 ItemMap downloads_;
385 ItemJsonMap item_jsons_; 251 ItemJsonMap item_jsons_;
386 OnChangedStatMap on_changed_stats_; 252 OnChangedStatMap on_changed_stats_;
387 253
388 DISALLOW_COPY_AND_ASSIGN(ExtensionDownloadsEventRouter); 254 DISALLOW_COPY_AND_ASSIGN(ExtensionDownloadsEventRouter);
389 }; 255 };
390 256
391 #endif // CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_ 257 #endif // CHROME_BROWSER_EXTENSIONS_API_DOWNLOADS_DOWNLOADS_API_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/api/downloads/downloads_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698