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 #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 Loading... |
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 Loading... |
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_ |
OLD | NEW |