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

Side by Side Diff: chrome/browser/prefs/pref_model_associator.cc

Issue 10035042: Rewrite base::JSONReader to be 35-40% faster, depending on the input string. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 8 years, 8 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 | Annotate | Revision Log
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/prefs/pref_model_associator.h" 5 #include "chrome/browser/prefs/pref_model_associator.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/json/json_string_value_serializer.h" 9 #include "base/json/json_string_value_serializer.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 30 matching lines...) Expand all
41 VLOG(1) << "Associating preference " << pref_name; 41 VLOG(1) << "Associating preference " << pref_name;
42 42
43 base::JSONReader reader; 43 base::JSONReader reader;
44 if (sync_pref.IsValid()) { 44 if (sync_pref.IsValid()) {
45 // The server has a value for the preference, we have to reconcile it with 45 // The server has a value for the preference, we have to reconcile it with
46 // ours. 46 // ours.
47 const sync_pb::PreferenceSpecifics& preference = 47 const sync_pb::PreferenceSpecifics& preference =
48 sync_pref.GetSpecifics().preference(); 48 sync_pref.GetSpecifics().preference();
49 DCHECK_EQ(pref->name(), preference.name()); 49 DCHECK_EQ(pref->name(), preference.name());
50 50
51 scoped_ptr<Value> value( 51 scoped_ptr<Value> value(reader.ReadToValue(preference.value()));
52 reader.JsonToValue(preference.value(), false, false));
53 if (!value.get()) { 52 if (!value.get()) {
54 LOG(ERROR) << "Failed to deserialize preference value: " 53 LOG(ERROR) << "Failed to deserialize preference value: "
55 << reader.GetErrorMessage(); 54 << reader.GetErrorMessage();
56 return; 55 return;
57 } 56 }
58 57
59 // Merge the server value of this preference with the local value. 58 // Merge the server value of this preference with the local value.
60 scoped_ptr<Value> new_value(MergePreference(*pref, *value)); 59 scoped_ptr<Value> new_value(MergePreference(*pref, *value));
61 60
62 // Update the local preference based on what we got from the 61 // Update the local preference based on what we got from the
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 synced_preferences_.insert(name); 342 synced_preferences_.insert(name);
344 } 343 }
345 } 344 }
346 return SyncError(); 345 return SyncError();
347 } 346 }
348 347
349 Value* PrefModelAssociator::ReadPreferenceSpecifics( 348 Value* PrefModelAssociator::ReadPreferenceSpecifics(
350 const sync_pb::PreferenceSpecifics& preference, 349 const sync_pb::PreferenceSpecifics& preference,
351 std::string* name) { 350 std::string* name) {
352 base::JSONReader reader; 351 base::JSONReader reader;
353 scoped_ptr<Value> value(reader.JsonToValue(preference.value(), false, false)); 352 scoped_ptr<Value> value(reader.ReadToValue(preference.value()));
354 if (!value.get()) { 353 if (!value.get()) {
355 std::string err = "Failed to deserialize preference value: " + 354 std::string err = "Failed to deserialize preference value: " +
356 reader.GetErrorMessage(); 355 reader.GetErrorMessage();
357 LOG(ERROR) << err; 356 LOG(ERROR) << err;
358 return NULL; 357 return NULL;
359 } 358 }
360 *name = preference.name(); 359 *name = preference.name();
361 return value.release(); 360 return value.release();
362 } 361 }
363 362
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 } 422 }
424 423
425 SyncError error = 424 SyncError error =
426 sync_processor_->ProcessSyncChanges(FROM_HERE, changes); 425 sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
427 } 426 }
428 427
429 void PrefModelAssociator::SetPrefService(PrefService* pref_service) { 428 void PrefModelAssociator::SetPrefService(PrefService* pref_service) {
430 DCHECK(pref_service_ == NULL); 429 DCHECK(pref_service_ == NULL);
431 pref_service_ = pref_service; 430 pref_service_ = pref_service;
432 } 431 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698