| Index: chrome/browser/extensions/api/downloads/downloads_api.cc
|
| diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| index 085fd949f699cdc3a849d48d03ad965641378e60..7098da6777a8377b816be5ab1b3ce27a86655efd 100644
|
| --- a/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| +++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| #include "base/callback.h"
|
| +#include "base/containers/flat_map.h"
|
| #include "base/files/file_path.h"
|
| #include "base/files/file_util.h"
|
| #include "base/json/json_writer.h"
|
| @@ -362,49 +363,69 @@ IconLoader::IconSize IconLoaderSizeFromPixelSize(int pixel_size) {
|
| }
|
| }
|
|
|
| -typedef base::hash_map<std::string, DownloadQuery::FilterType> FilterTypeMap;
|
| +using FilterTypeMap = base::flat_map<std::string, DownloadQuery::FilterType>;
|
| +void AppendFilter(const char* name,
|
| + DownloadQuery::FilterType type,
|
| + std::vector<FilterTypeMap::value_type>* v) {
|
| + v->emplace_back(name, type);
|
| +}
|
|
|
| void InitFilterTypeMap(FilterTypeMap* filter_types_ptr) {
|
| - FilterTypeMap& filter_types = *filter_types_ptr;
|
| - filter_types[kBytesReceivedKey] = DownloadQuery::FILTER_BYTES_RECEIVED;
|
| - filter_types[kExistsKey] = DownloadQuery::FILTER_EXISTS;
|
| - filter_types[kFilenameKey] = DownloadQuery::FILTER_FILENAME;
|
| - filter_types[kFilenameRegexKey] = DownloadQuery::FILTER_FILENAME_REGEX;
|
| - filter_types[kMimeKey] = DownloadQuery::FILTER_MIME;
|
| - filter_types[kPausedKey] = DownloadQuery::FILTER_PAUSED;
|
| - filter_types[kQueryKey] = DownloadQuery::FILTER_QUERY;
|
| - filter_types[kEndedAfterKey] = DownloadQuery::FILTER_ENDED_AFTER;
|
| - filter_types[kEndedBeforeKey] = DownloadQuery::FILTER_ENDED_BEFORE;
|
| - filter_types[kEndTimeKey] = DownloadQuery::FILTER_END_TIME;
|
| - filter_types[kStartedAfterKey] = DownloadQuery::FILTER_STARTED_AFTER;
|
| - filter_types[kStartedBeforeKey] = DownloadQuery::FILTER_STARTED_BEFORE;
|
| - filter_types[kStartTimeKey] = DownloadQuery::FILTER_START_TIME;
|
| - filter_types[kTotalBytesKey] = DownloadQuery::FILTER_TOTAL_BYTES;
|
| - filter_types[kTotalBytesGreaterKey] =
|
| - DownloadQuery::FILTER_TOTAL_BYTES_GREATER;
|
| - filter_types[kTotalBytesLessKey] = DownloadQuery::FILTER_TOTAL_BYTES_LESS;
|
| - filter_types[kUrlKey] = DownloadQuery::FILTER_ORIGINAL_URL;
|
| - filter_types[kUrlRegexKey] = DownloadQuery::FILTER_ORIGINAL_URL_REGEX;
|
| - filter_types[kFinalUrlKey] = DownloadQuery::FILTER_URL;
|
| - filter_types[kFinalUrlRegexKey] = DownloadQuery::FILTER_URL_REGEX;
|
| -}
|
| -
|
| -typedef base::hash_map<std::string, DownloadQuery::SortType> SortTypeMap;
|
| + // Initialize the map in one shot by storing to a vector and assigning.
|
| + std::vector<FilterTypeMap::value_type> v;
|
| +
|
| + AppendFilter(kBytesReceivedKey, DownloadQuery::FILTER_BYTES_RECEIVED, &v);
|
| +
|
| + AppendFilter(kBytesReceivedKey, DownloadQuery::FILTER_BYTES_RECEIVED, &v);
|
| + AppendFilter(kExistsKey, DownloadQuery::FILTER_EXISTS, &v);
|
| + AppendFilter(kFilenameKey, DownloadQuery::FILTER_FILENAME, &v);
|
| + AppendFilter(kFilenameRegexKey, DownloadQuery::FILTER_FILENAME_REGEX, &v);
|
| + AppendFilter(kMimeKey, DownloadQuery::FILTER_MIME, &v);
|
| + AppendFilter(kPausedKey, DownloadQuery::FILTER_PAUSED, &v);
|
| + AppendFilter(kQueryKey, DownloadQuery::FILTER_QUERY, &v);
|
| + AppendFilter(kEndedAfterKey, DownloadQuery::FILTER_ENDED_AFTER, &v);
|
| + AppendFilter(kEndedBeforeKey, DownloadQuery::FILTER_ENDED_BEFORE, &v);
|
| + AppendFilter(kEndTimeKey, DownloadQuery::FILTER_END_TIME, &v);
|
| + AppendFilter(kStartedAfterKey, DownloadQuery::FILTER_STARTED_AFTER, &v);
|
| + AppendFilter(kStartedBeforeKey, DownloadQuery::FILTER_STARTED_BEFORE, &v);
|
| + AppendFilter(kStartTimeKey, DownloadQuery::FILTER_START_TIME, &v);
|
| + AppendFilter(kTotalBytesKey, DownloadQuery::FILTER_TOTAL_BYTES, &v);
|
| + AppendFilter(kTotalBytesGreaterKey, DownloadQuery::FILTER_TOTAL_BYTES_GREATER,
|
| + &v);
|
| + AppendFilter(kTotalBytesLessKey, DownloadQuery::FILTER_TOTAL_BYTES_LESS, &v);
|
| + AppendFilter(kUrlKey, DownloadQuery::FILTER_ORIGINAL_URL, &v);
|
| + AppendFilter(kUrlRegexKey, DownloadQuery::FILTER_ORIGINAL_URL_REGEX, &v);
|
| + AppendFilter(kFinalUrlKey, DownloadQuery::FILTER_URL, &v);
|
| + AppendFilter(kFinalUrlRegexKey, DownloadQuery::FILTER_URL_REGEX, &v);
|
| +
|
| + *filter_types_ptr = FilterTypeMap(std::move(v), base::KEEP_FIRST_OF_DUPES);
|
| +}
|
| +
|
| +using SortTypeMap = base::flat_map<std::string, DownloadQuery::SortType>;
|
| +void AppendFilter(const char* name,
|
| + DownloadQuery::SortType type,
|
| + std::vector<SortTypeMap::value_type>* v) {
|
| + v->emplace_back(name, type);
|
| +}
|
|
|
| void InitSortTypeMap(SortTypeMap* sorter_types_ptr) {
|
| - SortTypeMap& sorter_types = *sorter_types_ptr;
|
| - sorter_types[kBytesReceivedKey] = DownloadQuery::SORT_BYTES_RECEIVED;
|
| - sorter_types[kDangerKey] = DownloadQuery::SORT_DANGER;
|
| - sorter_types[kEndTimeKey] = DownloadQuery::SORT_END_TIME;
|
| - sorter_types[kExistsKey] = DownloadQuery::SORT_EXISTS;
|
| - sorter_types[kFilenameKey] = DownloadQuery::SORT_FILENAME;
|
| - sorter_types[kMimeKey] = DownloadQuery::SORT_MIME;
|
| - sorter_types[kPausedKey] = DownloadQuery::SORT_PAUSED;
|
| - sorter_types[kStartTimeKey] = DownloadQuery::SORT_START_TIME;
|
| - sorter_types[kStateKey] = DownloadQuery::SORT_STATE;
|
| - sorter_types[kTotalBytesKey] = DownloadQuery::SORT_TOTAL_BYTES;
|
| - sorter_types[kUrlKey] = DownloadQuery::SORT_ORIGINAL_URL;
|
| - sorter_types[kFinalUrlKey] = DownloadQuery::SORT_URL;
|
| + // Initialize the map in one shot by storing to a vector and assigning.
|
| + std::vector<SortTypeMap::value_type> v;
|
| +
|
| + AppendFilter(kBytesReceivedKey, DownloadQuery::SORT_BYTES_RECEIVED, &v);
|
| + AppendFilter(kDangerKey, DownloadQuery::SORT_DANGER, &v);
|
| + AppendFilter(kEndTimeKey, DownloadQuery::SORT_END_TIME, &v);
|
| + AppendFilter(kExistsKey, DownloadQuery::SORT_EXISTS, &v);
|
| + AppendFilter(kFilenameKey, DownloadQuery::SORT_FILENAME, &v);
|
| + AppendFilter(kMimeKey, DownloadQuery::SORT_MIME, &v);
|
| + AppendFilter(kPausedKey, DownloadQuery::SORT_PAUSED, &v);
|
| + AppendFilter(kStartTimeKey, DownloadQuery::SORT_START_TIME, &v);
|
| + AppendFilter(kStateKey, DownloadQuery::SORT_STATE, &v);
|
| + AppendFilter(kTotalBytesKey, DownloadQuery::SORT_TOTAL_BYTES, &v);
|
| + AppendFilter(kUrlKey, DownloadQuery::SORT_ORIGINAL_URL, &v);
|
| + AppendFilter(kFinalUrlKey, DownloadQuery::SORT_URL, &v);
|
| +
|
| + *sorter_types_ptr = SortTypeMap(std::move(v), base::KEEP_FIRST_OF_DUPES);
|
| }
|
|
|
| bool IsNotTemporaryDownloadFilter(const DownloadItem& download_item) {
|
|
|