| 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 |