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

Side by Side Diff: chrome/browser/extensions/extension_web_ui.cc

Issue 2000803003: Use std::unique_ptr for base::DictionaryValue and base::ListValue's internal store. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix various builds. Created 4 years, 7 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
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 #include "chrome/browser/extensions/extension_web_ui.h" 5 #include "chrome/browser/extensions/extension_web_ui.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 // Iterates over |list| and: 58 // Iterates over |list| and:
59 // - Converts any entries of the form <entry> to 59 // - Converts any entries of the form <entry> to
60 // { 'entry': <entry>, 'active': true }. 60 // { 'entry': <entry>, 'active': true }.
61 // - Removes any duplicate entries. 61 // - Removes any duplicate entries.
62 // We do the conversion because we previously stored these values as strings 62 // We do the conversion because we previously stored these values as strings
63 // rather than objects. 63 // rather than objects.
64 // TODO(devlin): Remove the conversion once everyone's updated. 64 // TODO(devlin): Remove the conversion once everyone's updated.
65 void InitializeOverridesList(base::ListValue* list) { 65 void InitializeOverridesList(base::ListValue* list) {
66 base::ListValue migrated; 66 base::ListValue migrated;
67 std::set<std::string> seen_entries; 67 std::set<std::string> seen_entries;
68 for (base::Value* val : *list) { 68 for (const auto& val : *list) {
69 std::unique_ptr<base::DictionaryValue> new_dict( 69 std::unique_ptr<base::DictionaryValue> new_dict(
70 new base::DictionaryValue()); 70 new base::DictionaryValue());
71 std::string entry_name; 71 std::string entry_name;
72 base::DictionaryValue* existing_dict = nullptr; 72 base::DictionaryValue* existing_dict = nullptr;
73 if (val->GetAsDictionary(&existing_dict)) { 73 if (val->GetAsDictionary(&existing_dict)) {
74 bool success = existing_dict->GetString(kEntry, &entry_name); 74 bool success = existing_dict->GetString(kEntry, &entry_name);
75 if (!success) // See comment about CHECK(success) in ForEachOverrideList. 75 if (!success) // See comment about CHECK(success) in ForEachOverrideList.
76 continue; 76 continue;
77 new_dict->Swap(existing_dict); 77 new_dict->Swap(existing_dict);
78 } else if (val->GetAsString(&entry_name)) { 78 } else if (val->GetAsString(&entry_name)) {
(...skipping 10 matching lines...) Expand all
89 } 89 }
90 } 90 }
91 91
92 list->Swap(&migrated); 92 list->Swap(&migrated);
93 } 93 }
94 94
95 // Adds |override| to |list|, or, if there's already an entry for the override, 95 // Adds |override| to |list|, or, if there's already an entry for the override,
96 // marks it as active. 96 // marks it as active.
97 void AddOverridesToList(base::ListValue* list, 97 void AddOverridesToList(base::ListValue* list,
98 const std::string& override) { 98 const std::string& override) {
99 for (base::Value* val : *list) { 99 for (const auto& val : *list) {
100 base::DictionaryValue* dict = nullptr; 100 base::DictionaryValue* dict = nullptr;
101 std::string entry; 101 std::string entry;
102 if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { 102 if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) {
103 NOTREACHED(); 103 NOTREACHED();
104 continue; 104 continue;
105 } 105 }
106 if (entry == override) { 106 if (entry == override) {
107 dict->SetBoolean(kActive, true); 107 dict->SetBoolean(kActive, true);
108 return; // All done! 108 return; // All done!
109 } 109 }
110 } 110 }
111 111
112 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); 112 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
113 dict->SetString(kEntry, override); 113 dict->SetString(kEntry, override);
114 dict->SetBoolean(kActive, true); 114 dict->SetBoolean(kActive, true);
115 // Add the entry to the front of the list. 115 // Add the entry to the front of the list.
116 list->Insert(0, dict.release()); 116 list->Insert(0, dict.release());
117 } 117 }
118 118
119 // Validates that each entry in |list| contains a valid url and points to an 119 // Validates that each entry in |list| contains a valid url and points to an
120 // extension contained in |all_extensions| (and, if not, removes it). 120 // extension contained in |all_extensions| (and, if not, removes it).
121 void ValidateOverridesList(const extensions::ExtensionSet* all_extensions, 121 void ValidateOverridesList(const extensions::ExtensionSet* all_extensions,
122 base::ListValue* list) { 122 base::ListValue* list) {
123 base::ListValue migrated; 123 base::ListValue migrated;
124 for (base::Value* val : *list) { 124 for (const auto& val : *list) {
125 base::DictionaryValue* dict = nullptr; 125 base::DictionaryValue* dict = nullptr;
126 std::string entry; 126 std::string entry;
127 if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) { 127 if (!val->GetAsDictionary(&dict) || !dict->GetString(kEntry, &entry)) {
128 NOTREACHED(); 128 NOTREACHED();
129 continue; 129 continue;
130 } 130 }
131 std::unique_ptr<base::DictionaryValue> new_dict( 131 std::unique_ptr<base::DictionaryValue> new_dict(
132 new base::DictionaryValue()); 132 new base::DictionaryValue());
133 new_dict->Swap(dict); 133 new_dict->Swap(dict);
134 GURL override_url(entry); 134 GURL override_url(entry);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 UPDATE_REMOVE, // Remove the entry from the list. 169 UPDATE_REMOVE, // Remove the entry from the list.
170 }; 170 };
171 171
172 // Updates the entry (if any) for |override_url| in |overrides_list| according 172 // Updates the entry (if any) for |override_url| in |overrides_list| according
173 // to |behavior|. Returns true if anything changed. 173 // to |behavior|. Returns true if anything changed.
174 bool UpdateOverridesList(base::ListValue* overrides_list, 174 bool UpdateOverridesList(base::ListValue* overrides_list,
175 const std::string& override_url, 175 const std::string& override_url,
176 UpdateBehavior behavior) { 176 UpdateBehavior behavior) {
177 base::ListValue::iterator iter = 177 base::ListValue::iterator iter =
178 std::find_if(overrides_list->begin(), overrides_list->end(), 178 std::find_if(overrides_list->begin(), overrides_list->end(),
179 [&override_url](const base::Value* value) { 179 [&override_url](const std::unique_ptr<base::Value>& value) {
180 std::string entry; 180 std::string entry;
181 const base::DictionaryValue* dict = nullptr; 181 const base::DictionaryValue* dict = nullptr;
182 return value->GetAsDictionary(&dict) && 182 return value->GetAsDictionary(&dict) &&
183 dict->GetString(kEntry, &entry) && 183 dict->GetString(kEntry, &entry) &&
184 entry == override_url; 184 entry == override_url;
185 }); 185 });
186 if (iter != overrides_list->end()) { 186 if (iter != overrides_list->end()) {
187 switch (behavior) { 187 switch (behavior) {
188 case UPDATE_DEACTIVATE: { 188 case UPDATE_DEACTIVATE: {
189 base::DictionaryValue* dict = nullptr; 189 base::DictionaryValue* dict = nullptr;
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 extensions::ImageLoader::ImageRepresentation::ALWAYS_RESIZE, 558 extensions::ImageLoader::ImageRepresentation::ALWAYS_RESIZE,
559 gfx::Size(pixel_size, pixel_size), 559 gfx::Size(pixel_size, pixel_size),
560 resource_scale_factor)); 560 resource_scale_factor));
561 } 561 }
562 562
563 // LoadImagesAsync actually can run callback synchronously. We want to force 563 // LoadImagesAsync actually can run callback synchronously. We want to force
564 // async. 564 // async.
565 extensions::ImageLoader::Get(profile)->LoadImagesAsync( 565 extensions::ImageLoader::Get(profile)->LoadImagesAsync(
566 extension, info_list, base::Bind(&RunFaviconCallbackAsync, callback)); 566 extension, info_list, base::Bind(&RunFaviconCallbackAsync, callback));
567 } 567 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698