// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/webdata/web_data_service.h"
#include "base/task.h"
#include "chrome/browser/password_manager/ie7_password.h"
#include "chrome/browser/webdata/web_database.h"
void WebDataService::AddIE7Login(const IE7PasswordInfo& info) {
GenericRequest<IE7PasswordInfo>* request =
new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(), NULL,
info);
RegisterRequest(request);
ScheduleTask(NewRunnableMethod(this, &WebDataService::AddIE7LoginImpl,
request));
}
void WebDataService::RemoveIE7Login(const IE7PasswordInfo& info) {
GenericRequest<IE7PasswordInfo>* request =
new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(), NULL,
info);
RegisterRequest(request);
ScheduleTask(NewRunnableMethod(this, &WebDataService::RemoveIE7LoginImpl,
request));
}
WebDataService::Handle WebDataService::GetIE7Login(
const IE7PasswordInfo& info,
WebDataServiceConsumer* consumer) {
GenericRequest<IE7PasswordInfo>* request =
new GenericRequest<IE7PasswordInfo>(this, GetNextRequestHandle(),
consumer, info);
RegisterRequest(request);
ScheduleTask(NewRunnableMethod(this, &WebDataService::GetIE7LoginImpl,
request));
return request->GetHandle();
}
void WebDataService::AddIE7LoginImpl(GenericRequest<IE7PasswordInfo>* request) {
if (db_ && !request->IsCancelled()) {
if (db_->GetLoginsTable()->AddIE7Login(request->GetArgument()))
ScheduleCommit();
}
request->RequestComplete();
}
void WebDataService::RemoveIE7LoginImpl(
GenericRequest<IE7PasswordInfo>* request) {
if (db_ && !request->IsCancelled()) {
if (db_->GetLoginsTable()->RemoveIE7Login(request->GetArgument()))
ScheduleCommit();
}
request->RequestComplete();
}
void WebDataService::GetIE7LoginImpl(
GenericRequest<IE7PasswordInfo>* request) {
if (db_ && !request->IsCancelled()) {
IE7PasswordInfo result;
db_->GetLoginsTable()->GetIE7Login(request->GetArgument(), &result);
request->SetResult(
new WDResult<IE7PasswordInfo>(PASSWORD_IE7_RESULT, result));
}
request->RequestComplete();
}