1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/webdata/web_data_service.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/task.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/password_manager/ie7_password.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/webdata/web_database.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WebDataService::AddIE7Login(const IE7PasswordInfo& info) { 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericRequest<IE7PasswordInfo>* request = 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(), NULL, 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch info); 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RegisterRequest(request); 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScheduleTask(NewRunnableMethod(this, &WebDataService::AddIE7LoginImpl, 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request)); 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WebDataService::RemoveIE7Login(const IE7PasswordInfo& info) { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericRequest<IE7PasswordInfo>* request = 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(), NULL, 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch info); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RegisterRequest(request); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScheduleTask(NewRunnableMethod(this, &WebDataService::RemoveIE7LoginImpl, 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request)); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochWebDataService::Handle WebDataService::GetIE7Login( 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const IE7PasswordInfo& info, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch WebDataServiceConsumer* consumer) { 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericRequest<IE7PasswordInfo>* request = 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(), 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch consumer, info); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RegisterRequest(request); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScheduleTask(NewRunnableMethod(this, &WebDataService::GetIE7LoginImpl, 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request)); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return request->GetHandle(); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WebDataService::AddIE7LoginImpl(GenericRequest<IE7PasswordInfo>* request) { 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (db_ && !request->IsCancelled()) { 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (db_->GetLoginsTable()->AddIE7Login(request->GetArgument())) 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScheduleCommit(); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request->RequestComplete(); 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WebDataService::RemoveIE7LoginImpl( 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericRequest<IE7PasswordInfo>* request) { 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (db_ && !request->IsCancelled()) { 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (db_->GetLoginsTable()->RemoveIE7Login(request->GetArgument())) 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScheduleCommit(); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request->RequestComplete(); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid WebDataService::GetIE7LoginImpl( 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GenericRequest<IE7PasswordInfo>* request) { 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (db_ && !request->IsCancelled()) { 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch IE7PasswordInfo result; 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen db_->GetLoginsTable()->GetIE7Login(request->GetArgument(), &result); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request->SetResult( 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new WDResult<IE7PasswordInfo>(PASSWORD_IE7_RESULT, result)); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch request->RequestComplete(); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 68