| 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 #include "chrome/browser/extensions/api/downloads/downloads_api.h" | 5 #include "chrome/browser/extensions/api/downloads/downloads_api.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 const char kStateInterrupted[] = "interrupted"; | 160 const char kStateInterrupted[] = "interrupted"; |
| 161 const char kStateKey[] = "state"; | 161 const char kStateKey[] = "state"; |
| 162 const char kTotalBytesGreaterKey[] = "totalBytesGreater"; | 162 const char kTotalBytesGreaterKey[] = "totalBytesGreater"; |
| 163 const char kTotalBytesKey[] = "totalBytes"; | 163 const char kTotalBytesKey[] = "totalBytes"; |
| 164 const char kTotalBytesLessKey[] = "totalBytesLess"; | 164 const char kTotalBytesLessKey[] = "totalBytesLess"; |
| 165 const char kUrlKey[] = "url"; | 165 const char kUrlKey[] = "url"; |
| 166 const char kUrlRegexKey[] = "urlRegex"; | 166 const char kUrlRegexKey[] = "urlRegex"; |
| 167 | 167 |
| 168 // Note: Any change to the danger type strings, should be accompanied by a | 168 // Note: Any change to the danger type strings, should be accompanied by a |
| 169 // corresponding change to downloads.json. | 169 // corresponding change to downloads.json. |
| 170 const char* kDangerStrings[] = { | 170 const char* const kDangerStrings[] = { |
| 171 kDangerSafe, | 171 kDangerSafe, |
| 172 kDangerFile, | 172 kDangerFile, |
| 173 kDangerUrl, | 173 kDangerUrl, |
| 174 kDangerContent, | 174 kDangerContent, |
| 175 kDangerSafe, | 175 kDangerSafe, |
| 176 kDangerUncommon, | 176 kDangerUncommon, |
| 177 kDangerAccepted, | 177 kDangerAccepted, |
| 178 kDangerHost, | 178 kDangerHost, |
| 179 kDangerUnwanted | 179 kDangerUnwanted |
| 180 }; | 180 }; |
| 181 COMPILE_ASSERT(arraysize(kDangerStrings) == content::DOWNLOAD_DANGER_TYPE_MAX, | 181 COMPILE_ASSERT(arraysize(kDangerStrings) == content::DOWNLOAD_DANGER_TYPE_MAX, |
| 182 download_danger_type_enum_changed); | 182 download_danger_type_enum_changed); |
| 183 | 183 |
| 184 // Note: Any change to the state strings, should be accompanied by a | 184 // Note: Any change to the state strings, should be accompanied by a |
| 185 // corresponding change to downloads.json. | 185 // corresponding change to downloads.json. |
| 186 const char* kStateStrings[] = { | 186 const char* const kStateStrings[] = { |
| 187 kStateInProgress, | 187 kStateInProgress, |
| 188 kStateComplete, | 188 kStateComplete, |
| 189 kStateInterrupted, | 189 kStateInterrupted, |
| 190 kStateInterrupted, | 190 kStateInterrupted, |
| 191 }; | 191 }; |
| 192 COMPILE_ASSERT(arraysize(kStateStrings) == DownloadItem::MAX_DOWNLOAD_STATE, | 192 COMPILE_ASSERT(arraysize(kStateStrings) == DownloadItem::MAX_DOWNLOAD_STATE, |
| 193 download_item_state_enum_changed); | 193 download_item_state_enum_changed); |
| 194 | 194 |
| 195 const char* DangerString(content::DownloadDangerType danger) { | 195 const char* DangerString(content::DownloadDangerType danger) { |
| 196 DCHECK(danger >= 0); | 196 DCHECK(danger >= 0); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 case 16: return IconLoader::SMALL; | 340 case 16: return IconLoader::SMALL; |
| 341 case 32: return IconLoader::NORMAL; | 341 case 32: return IconLoader::NORMAL; |
| 342 default: | 342 default: |
| 343 NOTREACHED(); | 343 NOTREACHED(); |
| 344 return IconLoader::NORMAL; | 344 return IconLoader::NORMAL; |
| 345 } | 345 } |
| 346 } | 346 } |
| 347 | 347 |
| 348 typedef base::hash_map<std::string, DownloadQuery::FilterType> FilterTypeMap; | 348 typedef base::hash_map<std::string, DownloadQuery::FilterType> FilterTypeMap; |
| 349 | 349 |
| 350 void InitFilterTypeMap(FilterTypeMap& filter_types) { | 350 void InitFilterTypeMap(FilterTypeMap* filter_types_ptr) { |
| 351 FilterTypeMap& filter_types = *filter_types_ptr; |
| 351 filter_types[kBytesReceivedKey] = DownloadQuery::FILTER_BYTES_RECEIVED; | 352 filter_types[kBytesReceivedKey] = DownloadQuery::FILTER_BYTES_RECEIVED; |
| 352 filter_types[kExistsKey] = DownloadQuery::FILTER_EXISTS; | 353 filter_types[kExistsKey] = DownloadQuery::FILTER_EXISTS; |
| 353 filter_types[kFilenameKey] = DownloadQuery::FILTER_FILENAME; | 354 filter_types[kFilenameKey] = DownloadQuery::FILTER_FILENAME; |
| 354 filter_types[kFilenameRegexKey] = DownloadQuery::FILTER_FILENAME_REGEX; | 355 filter_types[kFilenameRegexKey] = DownloadQuery::FILTER_FILENAME_REGEX; |
| 355 filter_types[kMimeKey] = DownloadQuery::FILTER_MIME; | 356 filter_types[kMimeKey] = DownloadQuery::FILTER_MIME; |
| 356 filter_types[kPausedKey] = DownloadQuery::FILTER_PAUSED; | 357 filter_types[kPausedKey] = DownloadQuery::FILTER_PAUSED; |
| 357 filter_types[kQueryKey] = DownloadQuery::FILTER_QUERY; | 358 filter_types[kQueryKey] = DownloadQuery::FILTER_QUERY; |
| 358 filter_types[kEndedAfterKey] = DownloadQuery::FILTER_ENDED_AFTER; | 359 filter_types[kEndedAfterKey] = DownloadQuery::FILTER_ENDED_AFTER; |
| 359 filter_types[kEndedBeforeKey] = DownloadQuery::FILTER_ENDED_BEFORE; | 360 filter_types[kEndedBeforeKey] = DownloadQuery::FILTER_ENDED_BEFORE; |
| 360 filter_types[kEndTimeKey] = DownloadQuery::FILTER_END_TIME; | 361 filter_types[kEndTimeKey] = DownloadQuery::FILTER_END_TIME; |
| 361 filter_types[kStartedAfterKey] = DownloadQuery::FILTER_STARTED_AFTER; | 362 filter_types[kStartedAfterKey] = DownloadQuery::FILTER_STARTED_AFTER; |
| 362 filter_types[kStartedBeforeKey] = DownloadQuery::FILTER_STARTED_BEFORE; | 363 filter_types[kStartedBeforeKey] = DownloadQuery::FILTER_STARTED_BEFORE; |
| 363 filter_types[kStartTimeKey] = DownloadQuery::FILTER_START_TIME; | 364 filter_types[kStartTimeKey] = DownloadQuery::FILTER_START_TIME; |
| 364 filter_types[kTotalBytesKey] = DownloadQuery::FILTER_TOTAL_BYTES; | 365 filter_types[kTotalBytesKey] = DownloadQuery::FILTER_TOTAL_BYTES; |
| 365 filter_types[kTotalBytesGreaterKey] = | 366 filter_types[kTotalBytesGreaterKey] = |
| 366 DownloadQuery::FILTER_TOTAL_BYTES_GREATER; | 367 DownloadQuery::FILTER_TOTAL_BYTES_GREATER; |
| 367 filter_types[kTotalBytesLessKey] = DownloadQuery::FILTER_TOTAL_BYTES_LESS; | 368 filter_types[kTotalBytesLessKey] = DownloadQuery::FILTER_TOTAL_BYTES_LESS; |
| 368 filter_types[kUrlKey] = DownloadQuery::FILTER_URL; | 369 filter_types[kUrlKey] = DownloadQuery::FILTER_URL; |
| 369 filter_types[kUrlRegexKey] = DownloadQuery::FILTER_URL_REGEX; | 370 filter_types[kUrlRegexKey] = DownloadQuery::FILTER_URL_REGEX; |
| 370 } | 371 } |
| 371 | 372 |
| 372 typedef base::hash_map<std::string, DownloadQuery::SortType> SortTypeMap; | 373 typedef base::hash_map<std::string, DownloadQuery::SortType> SortTypeMap; |
| 373 | 374 |
| 374 void InitSortTypeMap(SortTypeMap& sorter_types) { | 375 void InitSortTypeMap(SortTypeMap* sorter_types_ptr) { |
| 376 SortTypeMap& sorter_types = *sorter_types_ptr; |
| 375 sorter_types[kBytesReceivedKey] = DownloadQuery::SORT_BYTES_RECEIVED; | 377 sorter_types[kBytesReceivedKey] = DownloadQuery::SORT_BYTES_RECEIVED; |
| 376 sorter_types[kDangerKey] = DownloadQuery::SORT_DANGER; | 378 sorter_types[kDangerKey] = DownloadQuery::SORT_DANGER; |
| 377 sorter_types[kEndTimeKey] = DownloadQuery::SORT_END_TIME; | 379 sorter_types[kEndTimeKey] = DownloadQuery::SORT_END_TIME; |
| 378 sorter_types[kExistsKey] = DownloadQuery::SORT_EXISTS; | 380 sorter_types[kExistsKey] = DownloadQuery::SORT_EXISTS; |
| 379 sorter_types[kFilenameKey] = DownloadQuery::SORT_FILENAME; | 381 sorter_types[kFilenameKey] = DownloadQuery::SORT_FILENAME; |
| 380 sorter_types[kMimeKey] = DownloadQuery::SORT_MIME; | 382 sorter_types[kMimeKey] = DownloadQuery::SORT_MIME; |
| 381 sorter_types[kPausedKey] = DownloadQuery::SORT_PAUSED; | 383 sorter_types[kPausedKey] = DownloadQuery::SORT_PAUSED; |
| 382 sorter_types[kStartTimeKey] = DownloadQuery::SORT_START_TIME; | 384 sorter_types[kStartTimeKey] = DownloadQuery::SORT_START_TIME; |
| 383 sorter_types[kStateKey] = DownloadQuery::SORT_STATE; | 385 sorter_types[kStateKey] = DownloadQuery::SORT_STATE; |
| 384 sorter_types[kTotalBytesKey] = DownloadQuery::SORT_TOTAL_BYTES; | 386 sorter_types[kTotalBytesKey] = DownloadQuery::SORT_TOTAL_BYTES; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 } | 449 } |
| 448 | 450 |
| 449 void CompileDownloadQueryOrderBy( | 451 void CompileDownloadQueryOrderBy( |
| 450 const std::vector<std::string>& order_by_strs, | 452 const std::vector<std::string>& order_by_strs, |
| 451 std::string* error, | 453 std::string* error, |
| 452 DownloadQuery* query) { | 454 DownloadQuery* query) { |
| 453 // TODO(benjhayden): Consider switching from LazyInstance to explicit string | 455 // TODO(benjhayden): Consider switching from LazyInstance to explicit string |
| 454 // comparisons. | 456 // comparisons. |
| 455 static base::LazyInstance<SortTypeMap> sorter_types = | 457 static base::LazyInstance<SortTypeMap> sorter_types = |
| 456 LAZY_INSTANCE_INITIALIZER; | 458 LAZY_INSTANCE_INITIALIZER; |
| 457 if (sorter_types.Get().size() == 0) | 459 if (sorter_types.Get().empty()) |
| 458 InitSortTypeMap(sorter_types.Get()); | 460 InitSortTypeMap(sorter_types.Pointer()); |
| 459 | 461 |
| 460 for (std::vector<std::string>::const_iterator iter = order_by_strs.begin(); | 462 for (std::vector<std::string>::const_iterator iter = order_by_strs.begin(); |
| 461 iter != order_by_strs.end(); ++iter) { | 463 iter != order_by_strs.end(); ++iter) { |
| 462 std::string term_str = *iter; | 464 std::string term_str = *iter; |
| 463 if (term_str.empty()) | 465 if (term_str.empty()) |
| 464 continue; | 466 continue; |
| 465 DownloadQuery::SortDirection direction = DownloadQuery::ASCENDING; | 467 DownloadQuery::SortDirection direction = DownloadQuery::ASCENDING; |
| 466 if (term_str[0] == '-') { | 468 if (term_str[0] == '-') { |
| 467 direction = DownloadQuery::DESCENDING; | 469 direction = DownloadQuery::DESCENDING; |
| 468 term_str = term_str.substr(1); | 470 term_str = term_str.substr(1); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 480 void RunDownloadQuery( | 482 void RunDownloadQuery( |
| 481 const downloads::DownloadQuery& query_in, | 483 const downloads::DownloadQuery& query_in, |
| 482 DownloadManager* manager, | 484 DownloadManager* manager, |
| 483 DownloadManager* incognito_manager, | 485 DownloadManager* incognito_manager, |
| 484 std::string* error, | 486 std::string* error, |
| 485 DownloadQuery::DownloadVector* results) { | 487 DownloadQuery::DownloadVector* results) { |
| 486 // TODO(benjhayden): Consider switching from LazyInstance to explicit string | 488 // TODO(benjhayden): Consider switching from LazyInstance to explicit string |
| 487 // comparisons. | 489 // comparisons. |
| 488 static base::LazyInstance<FilterTypeMap> filter_types = | 490 static base::LazyInstance<FilterTypeMap> filter_types = |
| 489 LAZY_INSTANCE_INITIALIZER; | 491 LAZY_INSTANCE_INITIALIZER; |
| 490 if (filter_types.Get().size() == 0) | 492 if (filter_types.Get().empty()) |
| 491 InitFilterTypeMap(filter_types.Get()); | 493 InitFilterTypeMap(filter_types.Pointer()); |
| 492 | 494 |
| 493 DownloadQuery query_out; | 495 DownloadQuery query_out; |
| 494 | 496 |
| 495 size_t limit = 1000; | 497 size_t limit = 1000; |
| 496 if (query_in.limit.get()) { | 498 if (query_in.limit.get()) { |
| 497 if (*query_in.limit.get() < 0) { | 499 if (*query_in.limit.get() < 0) { |
| 498 *error = errors::kInvalidQueryLimit; | 500 *error = errors::kInvalidQueryLimit; |
| 499 return; | 501 return; |
| 500 } | 502 } |
| 501 limit = *query_in.limit.get(); | 503 limit = *query_in.limit.get(); |
| (...skipping 1428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1930 const Extension* extension, | 1932 const Extension* extension, |
| 1931 UnloadedExtensionInfo::Reason reason) { | 1933 UnloadedExtensionInfo::Reason reason) { |
| 1932 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 1934 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 1933 std::set<const Extension*>::iterator iter = | 1935 std::set<const Extension*>::iterator iter = |
| 1934 shelf_disabling_extensions_.find(extension); | 1936 shelf_disabling_extensions_.find(extension); |
| 1935 if (iter != shelf_disabling_extensions_.end()) | 1937 if (iter != shelf_disabling_extensions_.end()) |
| 1936 shelf_disabling_extensions_.erase(iter); | 1938 shelf_disabling_extensions_.erase(iter); |
| 1937 } | 1939 } |
| 1938 | 1940 |
| 1939 } // namespace extensions | 1941 } // namespace extensions |
| OLD | NEW |