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