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

Side by Side Diff: extensions/browser/extension_prefs.cc

Issue 2843813002: Remove SetWithoutPathExpansion (Closed)
Patch Set: Fix CrOS Error Created 3 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
« no previous file with comments | « extensions/browser/event_router.cc ('k') | ios/chrome/browser/autofill/autofill_agent.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/browser/extension_prefs.h" 5 #include "extensions/browser/extension_prefs.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <iterator> 10 #include <iterator>
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 extension_id_(extension_id) {} 192 extension_id_(extension_id) {}
193 193
194 ~ScopedExtensionPrefUpdate() override {} 194 ~ScopedExtensionPrefUpdate() override {}
195 195
196 // DictionaryPrefUpdate overrides: 196 // DictionaryPrefUpdate overrides:
197 base::DictionaryValue* Get() override { 197 base::DictionaryValue* Get() override {
198 base::DictionaryValue* dict = DictionaryPrefUpdate::Get(); 198 base::DictionaryValue* dict = DictionaryPrefUpdate::Get();
199 base::DictionaryValue* extension = NULL; 199 base::DictionaryValue* extension = NULL;
200 if (!dict->GetDictionary(extension_id_, &extension)) { 200 if (!dict->GetDictionary(extension_id_, &extension)) {
201 // Extension pref does not exist, create it. 201 // Extension pref does not exist, create it.
202 extension = new base::DictionaryValue(); 202 dict->SetWithoutPathExpansion(extension_id_,
203 dict->SetWithoutPathExpansion(extension_id_, base::WrapUnique(extension)); 203 base::MakeUnique<base::DictionaryValue>());
204 dict->GetDictionaryWithoutPathExpansion(extension_id_, &extension);
204 } 205 }
205 return extension; 206 return extension;
206 } 207 }
207 208
208 private: 209 private:
209 const std::string extension_id_; 210 const std::string extension_id_;
210 211
211 DISALLOW_COPY_AND_ASSIGN(ScopedExtensionPrefUpdate); 212 DISALLOW_COPY_AND_ASSIGN(ScopedExtensionPrefUpdate);
212 }; 213 };
213 214
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return key_value->GetType() == type_enum_value ? 292 return key_value->GetType() == type_enum_value ?
292 static_cast<T*>(key_value) : 293 static_cast<T*>(key_value) :
293 NULL; 294 NULL;
294 } 295 }
295 296
296 template <typename T, base::Value::Type type_enum_value> 297 template <typename T, base::Value::Type type_enum_value>
297 T* ExtensionPrefs::ScopedUpdate<T, type_enum_value>::Create() { 298 T* ExtensionPrefs::ScopedUpdate<T, type_enum_value>::Create() {
298 base::DictionaryValue* dict = update_.Get(); 299 base::DictionaryValue* dict = update_.Get();
299 base::DictionaryValue* extension = nullptr; 300 base::DictionaryValue* extension = nullptr;
300 base::Value* key_value = nullptr; 301 base::Value* key_value = nullptr;
301 T* value_as_t = nullptr;
302 if (!dict->GetDictionary(extension_id_, &extension)) { 302 if (!dict->GetDictionary(extension_id_, &extension)) {
303 extension = new base::DictionaryValue; 303 dict->SetWithoutPathExpansion(extension_id_,
304 dict->SetWithoutPathExpansion(extension_id_, base::WrapUnique(extension)); 304 base::MakeUnique<base::DictionaryValue>());
305 dict->GetDictionaryWithoutPathExpansion(extension_id_, &extension);
305 } 306 }
306 if (!extension->Get(key_, &key_value)) { 307 if (!extension->Get(key_, &key_value)) {
307 value_as_t = new T; 308 extension->SetWithoutPathExpansion(key_, base::MakeUnique<T>());
308 extension->SetWithoutPathExpansion(key_, base::WrapUnique(value_as_t)); 309 extension->GetWithoutPathExpansion(key_, &key_value);
309 } else { 310 } else {
310 // It would be nice to CHECK that this doesn't happen, but since prefs can 311 // It would be nice to CHECK that this doesn't happen, but since prefs can
311 // get into a mangled state, we can't really do that. Instead, handle it 312 // get into a mangled state, we can't really do that. Instead, handle it
312 // gracefully (by overwriting whatever was previously there). 313 // gracefully (by overwriting whatever was previously there).
313 // TODO(devlin): It's unclear if there's anything we'll ever be able to do 314 // TODO(devlin): It's unclear if there's anything we'll ever be able to do
314 // here (corrupted prefs are sometimes a fact of life), but the debug info 315 // here (corrupted prefs are sometimes a fact of life), but the debug info
315 // might be useful. Remove the dumps after we analyze them. 316 // might be useful. Remove the dumps after we analyze them.
316 if (key_value->GetType() != type_enum_value) { 317 if (key_value->GetType() != type_enum_value) {
317 NOTREACHED(); 318 NOTREACHED();
318 value_as_t = new T(); 319 extension->SetWithoutPathExpansion(key_, base::MakeUnique<T>());
319 extension->SetWithoutPathExpansion(key_, base::WrapUnique(value_as_t)); 320 extension->GetWithoutPathExpansion(key_, &key_value);
320 } else {
321 value_as_t = static_cast<T*>(key_value);
322 } 321 }
323 } 322 }
324 return value_as_t; 323 return static_cast<T*>(key_value);
325 } 324 }
326 325
327 // Explicit instantiations for Dictionary and List value types. 326 // Explicit instantiations for Dictionary and List value types.
328 template class ExtensionPrefs::ScopedUpdate<base::DictionaryValue, 327 template class ExtensionPrefs::ScopedUpdate<base::DictionaryValue,
329 base::Value::Type::DICTIONARY>; 328 base::Value::Type::DICTIONARY>;
330 template class ExtensionPrefs::ScopedUpdate<base::ListValue, 329 template class ExtensionPrefs::ScopedUpdate<base::ListValue,
331 base::Value::Type::LIST>; 330 base::Value::Type::LIST>;
332 331
333 // 332 //
334 // ExtensionPrefs 333 // ExtensionPrefs
(...skipping 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1960 bool is_incognito_enabled = IsIncognitoEnabled(extension_id); 1959 bool is_incognito_enabled = IsIncognitoEnabled(extension_id);
1961 1960
1962 extension_pref_value_map_->RegisterExtension( 1961 extension_pref_value_map_->RegisterExtension(
1963 extension_id, install_time, is_enabled, is_incognito_enabled); 1962 extension_id, install_time, is_enabled, is_incognito_enabled);
1964 1963
1965 for (auto& observer : observer_list_) 1964 for (auto& observer : observer_list_)
1966 observer.OnExtensionRegistered(extension_id, install_time, is_enabled); 1965 observer.OnExtensionRegistered(extension_id, install_time, is_enabled);
1967 } 1966 }
1968 1967
1969 } // namespace extensions 1968 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/event_router.cc ('k') | ios/chrome/browser/autofill/autofill_agent.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698