| OLD | NEW | 
|---|
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/webdata/web_data_service.h" | 5 #include "chrome/browser/webdata/web_data_service.h" | 
| 6 | 6 | 
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" | 
| 8 #include "base/task.h" | 8 #include "base/task.h" | 
| 9 #include "base/thread.h" | 9 #include "base/thread.h" | 
| 10 #include "chrome/browser/autofill/autofill_profile.h" | 10 #include "chrome/browser/autofill/autofill_profile.h" | 
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 153 void WebDataService::UpdateAutoFillProfile(const AutoFillProfile& profile) { | 153 void WebDataService::UpdateAutoFillProfile(const AutoFillProfile& profile) { | 
| 154   GenericRequest<AutoFillProfile>* request = | 154   GenericRequest<AutoFillProfile>* request = | 
| 155       new GenericRequest<AutoFillProfile>( | 155       new GenericRequest<AutoFillProfile>( | 
| 156           this, GetNextRequestHandle(), NULL, profile); | 156           this, GetNextRequestHandle(), NULL, profile); | 
| 157   RegisterRequest(request); | 157   RegisterRequest(request); | 
| 158   ScheduleTask(NewRunnableMethod(this, | 158   ScheduleTask(NewRunnableMethod(this, | 
| 159                                  &WebDataService::UpdateAutoFillProfileImpl, | 159                                  &WebDataService::UpdateAutoFillProfileImpl, | 
| 160                                  request)); | 160                                  request)); | 
| 161 } | 161 } | 
| 162 | 162 | 
| 163 void WebDataService::RemoveAutoFillProfile(const AutoFillProfile& profile) { | 163 void WebDataService::RemoveAutoFillProfile(int profile_id) { | 
| 164   GenericRequest<AutoFillProfile>* request = | 164   GenericRequest<int>* request = | 
| 165       new GenericRequest<AutoFillProfile>( | 165       new GenericRequest<int>( | 
| 166           this, GetNextRequestHandle(), NULL, profile); | 166           this, GetNextRequestHandle(), NULL, profile_id); | 
| 167   RegisterRequest(request); | 167   RegisterRequest(request); | 
| 168   ScheduleTask(NewRunnableMethod(this, | 168   ScheduleTask(NewRunnableMethod(this, | 
| 169                                  &WebDataService::RemoveAutoFillProfileImpl, | 169                                  &WebDataService::RemoveAutoFillProfileImpl, | 
| 170                                  request)); | 170                                  request)); | 
| 171 } | 171 } | 
| 172 | 172 | 
| 173 WebDataService::Handle WebDataService::GetAutoFillProfileForLabel( | 173 WebDataService::Handle WebDataService::GetAutoFillProfileForLabel( | 
| 174     const string16& label, WebDataServiceConsumer* consumer) { | 174     const string16& label, WebDataServiceConsumer* consumer) { | 
| 175   WebDataRequest* request = | 175   WebDataRequest* request = | 
| 176       new WebDataRequest(this, GetNextRequestHandle(), consumer); | 176       new WebDataRequest(this, GetNextRequestHandle(), consumer); | 
| 177   RegisterRequest(request); | 177   RegisterRequest(request); | 
| 178   ScheduleTask( | 178   ScheduleTask( | 
| 179       NewRunnableMethod(this, | 179       NewRunnableMethod(this, | 
| 180                         &WebDataService::GetAutoFillProfileForLabelImpl, | 180                         &WebDataService::GetAutoFillProfileForLabelImpl, | 
| 181                         request, | 181                         request, | 
| 182                         label)); | 182                         label)); | 
| 183   return request->GetHandle(); | 183   return request->GetHandle(); | 
| 184 } | 184 } | 
| 185 | 185 | 
|  | 186 WebDataService::Handle WebDataService::GetAutoFillProfiles( | 
|  | 187     WebDataServiceConsumer* consumer) { | 
|  | 188   WebDataRequest* request = | 
|  | 189       new WebDataRequest(this, GetNextRequestHandle(), consumer); | 
|  | 190   RegisterRequest(request); | 
|  | 191   ScheduleTask( | 
|  | 192       NewRunnableMethod(this, | 
|  | 193                         &WebDataService::GetAutoFillProfilesImpl, | 
|  | 194                         request)); | 
|  | 195   return request->GetHandle(); | 
|  | 196 } | 
|  | 197 | 
| 186 void WebDataService::RequestCompleted(Handle h) { | 198 void WebDataService::RequestCompleted(Handle h) { | 
| 187   pending_lock_.Acquire(); | 199   pending_lock_.Acquire(); | 
| 188   RequestMap::iterator i = pending_requests_.find(h); | 200   RequestMap::iterator i = pending_requests_.find(h); | 
| 189   if (i == pending_requests_.end()) { | 201   if (i == pending_requests_.end()) { | 
| 190     NOTREACHED() << "Request completed called for an unknown request"; | 202     NOTREACHED() << "Request completed called for an unknown request"; | 
| 191     pending_lock_.Release(); | 203     pending_lock_.Release(); | 
| 192     return; | 204     return; | 
| 193   } | 205   } | 
| 194 | 206 | 
| 195   // Take ownership of the request object and remove it from the map. | 207   // Take ownership of the request object and remove it from the map. | 
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 465     NOTREACHED() << "Cannot initialize the web database"; | 477     NOTREACHED() << "Cannot initialize the web database"; | 
| 466     failed_init_ = true; | 478     failed_init_ = true; | 
| 467     delete db; | 479     delete db; | 
| 468     if (main_loop_) { | 480     if (main_loop_) { | 
| 469       main_loop_->PostTask(FROM_HERE, | 481       main_loop_->PostTask(FROM_HERE, | 
| 470           NewRunnableMethod(this, &WebDataService::DBInitFailed, init_status)); | 482           NewRunnableMethod(this, &WebDataService::DBInitFailed, init_status)); | 
| 471     } | 483     } | 
| 472     return; | 484     return; | 
| 473   } | 485   } | 
| 474 | 486 | 
|  | 487   ChromeThread::PostTask( | 
|  | 488       ChromeThread::UI, FROM_HERE, | 
|  | 489       NewRunnableMethod(this, &WebDataService::NotifyDatabaseLoadedOnUIThread)); | 
|  | 490 | 
| 475   db_ = db; | 491   db_ = db; | 
| 476   db_->BeginTransaction(); | 492   db_->BeginTransaction(); | 
| 477 } | 493 } | 
| 478 | 494 | 
|  | 495 void WebDataService::NotifyDatabaseLoadedOnUIThread() { | 
|  | 496   // Notify that the database has been initialized. | 
|  | 497   NotificationService::current()->Notify(NotificationType::WEB_DATABASE_LOADED, | 
|  | 498                                          NotificationService::AllSources(), | 
|  | 499                                          NotificationService::NoDetails()); | 
|  | 500 } | 
|  | 501 | 
| 479 void WebDataService::ShutdownDatabase() { | 502 void WebDataService::ShutdownDatabase() { | 
| 480   should_commit_ = false; | 503   should_commit_ = false; | 
| 481 | 504 | 
| 482   if (db_) { | 505   if (db_) { | 
| 483     db_->CommitTransaction(); | 506     db_->CommitTransaction(); | 
| 484     delete db_; | 507     delete db_; | 
| 485     db_ = NULL; | 508     db_ = NULL; | 
| 486   } | 509   } | 
| 487 } | 510 } | 
| 488 | 511 | 
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 727   if (db_ && !request->IsCancelled()) { | 750   if (db_ && !request->IsCancelled()) { | 
| 728     const AutoFillProfile& profile = request->GetArgument(); | 751     const AutoFillProfile& profile = request->GetArgument(); | 
| 729     if (!db_->UpdateAutoFillProfile(profile)) | 752     if (!db_->UpdateAutoFillProfile(profile)) | 
| 730       NOTREACHED(); | 753       NOTREACHED(); | 
| 731     ScheduleCommit(); | 754     ScheduleCommit(); | 
| 732   } | 755   } | 
| 733   request->RequestComplete(); | 756   request->RequestComplete(); | 
| 734 } | 757 } | 
| 735 | 758 | 
| 736 void WebDataService::RemoveAutoFillProfileImpl( | 759 void WebDataService::RemoveAutoFillProfileImpl( | 
| 737     GenericRequest<AutoFillProfile>* request) { | 760     GenericRequest<int>* request) { | 
| 738   InitializeDatabaseIfNecessary(); | 761   InitializeDatabaseIfNecessary(); | 
| 739   if (db_ && !request->IsCancelled()) { | 762   if (db_ && !request->IsCancelled()) { | 
| 740     const AutoFillProfile& profile = request->GetArgument(); | 763     int profile_id = request->GetArgument(); | 
| 741     if (!db_->RemoveAutoFillProfile(profile)) | 764     if (!db_->RemoveAutoFillProfile(profile_id)) | 
| 742       NOTREACHED(); | 765       NOTREACHED(); | 
| 743     ScheduleCommit(); | 766     ScheduleCommit(); | 
| 744   } | 767   } | 
| 745   request->RequestComplete(); | 768   request->RequestComplete(); | 
| 746 } | 769 } | 
| 747 | 770 | 
| 748 void WebDataService::GetAutoFillProfileForLabelImpl(WebDataRequest* request, | 771 void WebDataService::GetAutoFillProfileForLabelImpl(WebDataRequest* request, | 
| 749                                                     const string16& label) { | 772                                                     const string16& label) { | 
| 750   InitializeDatabaseIfNecessary(); | 773   InitializeDatabaseIfNecessary(); | 
| 751   if (db_ && !request->IsCancelled()) { | 774   if (db_ && !request->IsCancelled()) { | 
| 752     AutoFillProfile* profile; | 775     AutoFillProfile* profile; | 
| 753     db_->GetAutoFillProfileForLabel(label, &profile); | 776     db_->GetAutoFillProfileForLabel(label, &profile); | 
| 754     request->SetResult( | 777     request->SetResult( | 
| 755         new WDResult<AutoFillProfile>(AUTOFILL_PROFILE_RESULT, *profile)); | 778         new WDResult<AutoFillProfile>(AUTOFILL_PROFILE_RESULT, *profile)); | 
| 756     delete profile; | 779     delete profile; | 
| 757   } | 780   } | 
| 758   request->RequestComplete(); | 781   request->RequestComplete(); | 
| 759 } | 782 } | 
| 760 | 783 | 
|  | 784 void WebDataService::GetAutoFillProfilesImpl(WebDataRequest* request) { | 
|  | 785   InitializeDatabaseIfNecessary(); | 
|  | 786   if (db_ && !request->IsCancelled()) { | 
|  | 787     std::vector<AutoFillProfile*> profiles; | 
|  | 788     db_->GetAutoFillProfiles(&profiles); | 
|  | 789     request->SetResult( | 
|  | 790         new WDResult<std::vector<AutoFillProfile*> >(AUTOFILL_PROFILES_RESULT, | 
|  | 791                                                      profiles)); | 
|  | 792   } | 
|  | 793   request->RequestComplete(); | 
|  | 794 } | 
|  | 795 | 
| 761 //////////////////////////////////////////////////////////////////////////////// | 796 //////////////////////////////////////////////////////////////////////////////// | 
| 762 // | 797 // | 
| 763 // Web Apps implementation. | 798 // Web Apps implementation. | 
| 764 // | 799 // | 
| 765 //////////////////////////////////////////////////////////////////////////////// | 800 //////////////////////////////////////////////////////////////////////////////// | 
| 766 | 801 | 
| 767 void WebDataService::SetWebAppImageImpl( | 802 void WebDataService::SetWebAppImageImpl( | 
| 768     GenericRequest2<GURL, SkBitmap>* request) { | 803     GenericRequest2<GURL, SkBitmap>* request) { | 
| 769   InitializeDatabaseIfNecessary(); | 804   InitializeDatabaseIfNecessary(); | 
| 770   if (db_ && !request->IsCancelled()) { | 805   if (db_ && !request->IsCancelled()) { | 
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 857   Task* t = NewRunnableMethod(s, | 892   Task* t = NewRunnableMethod(s, | 
| 858                               &WebDataService::RequestCompleted, | 893                               &WebDataService::RequestCompleted, | 
| 859                               handle_); | 894                               handle_); | 
| 860   message_loop_->PostTask(FROM_HERE, t); | 895   message_loop_->PostTask(FROM_HERE, t); | 
| 861 } | 896 } | 
| 862 | 897 | 
| 863 int WebDataService::GetNextRequestHandle() { | 898 int WebDataService::GetNextRequestHandle() { | 
| 864   AutoLock l(pending_lock_); | 899   AutoLock l(pending_lock_); | 
| 865   return ++next_request_handle_; | 900   return ++next_request_handle_; | 
| 866 } | 901 } | 
| OLD | NEW | 
|---|