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

Side by Side Diff: chrome/browser/sync/glue/autofill_profile_model_associator.cc

Issue 7461098: Reland 87645 with clang fixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 9 years, 5 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/sync/glue/autofill_profile_model_associator.h" 5 #include "chrome/browser/sync/glue/autofill_profile_model_associator.h"
6 6
7 #include "base/tracked.h" 7 #include "base/tracked.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/sync/api/sync_error.h"
9 #include "chrome/browser/sync/glue/autofill_profile_change_processor.h" 10 #include "chrome/browser/sync/glue/autofill_profile_change_processor.h"
10 #include "chrome/browser/sync/glue/do_optimistic_refresh_task.h" 11 #include "chrome/browser/sync/glue/do_optimistic_refresh_task.h"
11 #include "chrome/browser/sync/profile_sync_service.h" 12 #include "chrome/browser/sync/profile_sync_service.h"
12 #include "chrome/browser/webdata/web_database.h" 13 #include "chrome/browser/webdata/web_database.h"
13 #include "chrome/common/guid.h" 14 #include "chrome/common/guid.h"
14 15
15 using sync_api::ReadNode; 16 using sync_api::ReadNode;
16 namespace browser_sync { 17 namespace browser_sync {
17 18
18 const char kAutofillProfileTag[] = "google_chrome_autofill_profiles"; 19 const char kAutofillProfileTag[] = "google_chrome_autofill_profiles";
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 std::vector<AutofillProfile*>* profiles) { 130 std::vector<AutofillProfile*>* profiles) {
130 if (IsAbortPending()) 131 if (IsAbortPending())
131 return false; 132 return false;
132 133
133 if (!web_database_->GetAutofillTable()->GetAutofillProfiles(profiles)) 134 if (!web_database_->GetAutofillTable()->GetAutofillProfiles(profiles))
134 return false; 135 return false;
135 136
136 return true; 137 return true;
137 } 138 }
138 139
139 bool AutofillProfileModelAssociator::AssociateModels() { 140 bool AutofillProfileModelAssociator::AssociateModels(SyncError* error) {
140 VLOG(1) << "Associating Autofill Models"; 141 VLOG(1) << "Associating Autofill Models";
141 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
142 { 143 {
143 base::AutoLock lock(abort_association_pending_lock_); 144 base::AutoLock lock(abort_association_pending_lock_);
144 abort_association_pending_ = false; 145 abort_association_pending_ = false;
145 } 146 }
146 147
147 ScopedVector<AutofillProfile> profiles; 148 ScopedVector<AutofillProfile> profiles;
148 149
149 if (!LoadAutofillData(&profiles.get())) { 150 if (!LoadAutofillData(&profiles.get())) {
150 LOG(ERROR) << "Could not get the autofill data from WebDatabase."; 151 error->Reset(FROM_HERE,
152 "Could not get the autofill data from WebDatabase.",
153 model_type());
151 return false; 154 return false;
152 } 155 }
153 156
154 VLOG(1) << "[AUTOFILL MIGRATION]" 157 VLOG(1) << "[AUTOFILL MIGRATION]"
155 << " Now associating to the new autofill profile model associator" 158 << " Now associating to the new autofill profile model associator"
156 << " root node"; 159 << " root node";
157 DataBundle bundle; 160 DataBundle bundle;
158 { 161 {
159 // The write transaction lock is held inside this block. 162 // The write transaction lock is held inside this block.
160 // We do all the web db operations outside this block. 163 // We do all the web db operations outside this block.
161 sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); 164 sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare());
162 165
163 sync_api::ReadNode autofill_root(&trans); 166 sync_api::ReadNode autofill_root(&trans);
164 if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) { 167 if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) {
165 LOG(ERROR) << "Server did not create the top-level autofill node. We " 168 error->Reset(FROM_HERE,
166 << "might be running against an out-of-date server."; 169 "Server did not create the top-level autofill node. We "
170 "might be running against an out-of-date server.",
171 model_type());
167 return false; 172 return false;
168 } 173 }
169 174
170 if (!TraverseAndAssociateChromeAutofillProfiles(&trans, autofill_root, 175 if (!TraverseAndAssociateChromeAutofillProfiles(&trans, autofill_root,
171 profiles.get(), &bundle.current_profiles, 176 profiles.get(), &bundle.current_profiles,
172 &bundle.updated_profiles, 177 &bundle.updated_profiles,
173 &bundle.new_profiles, 178 &bundle.new_profiles,
174 &bundle.profiles_to_delete) || 179 &bundle.profiles_to_delete) ||
175 !TraverseAndAssociateAllSyncNodes(&trans, autofill_root, &bundle)) { 180 !TraverseAndAssociateAllSyncNodes(&trans, autofill_root, &bundle)) {
181 error->Reset(FROM_HERE,
182 "Failed to associate all sync nodes.",
183 model_type());
176 return false; 184 return false;
177 } 185 }
178 } 186 }
179 187
180 if (!SaveChangesToWebData(bundle)) { 188 if (!SaveChangesToWebData(bundle)) {
181 LOG(ERROR) << "Failed to update autofill entries."; 189 error->Reset(FROM_HERE, "Failed to update webdata.", model_type());
182 return false; 190 return false;
183 } 191 }
184 192
185 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 193 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
186 new DoOptimisticRefreshForAutofill(personal_data_)); 194 new DoOptimisticRefreshForAutofill(personal_data_));
187 return true; 195 return true;
188 } 196 }
189 197
190 bool AutofillProfileModelAssociator::DisassociateModels() { 198 bool AutofillProfileModelAssociator::DisassociateModels(SyncError* error) {
191 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
192 id_map_.clear(); 200 id_map_.clear();
193 id_map_inverse_.clear(); 201 id_map_inverse_.clear();
194 return true; 202 return true;
195 } 203 }
196 204
197 // Helper to compare the local value and cloud value of a field, merge into 205 // Helper to compare the local value and cloud value of a field, merge into
198 // the local value if they differ, and return whether the merge happened. 206 // the local value if they differ, and return whether the merge happened.
199 bool AutofillProfileModelAssociator::MergeField(FormGroup* f, 207 bool AutofillProfileModelAssociator::MergeField(FormGroup* f,
200 AutofillFieldType t, 208 AutofillFieldType t,
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 bool AutofillProfileModelAssociator::CryptoReadyIfNecessary() { 504 bool AutofillProfileModelAssociator::CryptoReadyIfNecessary() {
497 // We only access the cryptographer while holding a transaction. 505 // We only access the cryptographer while holding a transaction.
498 sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); 506 sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare());
499 syncable::ModelTypeSet encrypted_types; 507 syncable::ModelTypeSet encrypted_types;
500 encrypted_types = sync_api::GetEncryptedTypes(&trans); 508 encrypted_types = sync_api::GetEncryptedTypes(&trans);
501 return encrypted_types.count(syncable::AUTOFILL_PROFILE) == 0 || 509 return encrypted_types.count(syncable::AUTOFILL_PROFILE) == 0 ||
502 sync_service_->IsCryptographerReady(&trans); 510 sync_service_->IsCryptographerReady(&trans);
503 } 511 }
504 512
505 } // namespace browser_sync 513 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698