extension_uninstaller.cc revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/ui/app_list/extension_uninstaller.h"
6
7#include "chrome/browser/extensions/extension_service.h"
8#include "chrome/browser/profiles/profile.h"
9#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
10#include "extensions/browser/extension_system.h"
11#include "extensions/common/extension.h"
12
13ExtensionUninstaller::ExtensionUninstaller(
14    Profile* profile,
15    const std::string& extension_id,
16    AppListControllerDelegate* controller)
17    : profile_(profile),
18      app_id_(extension_id),
19      controller_(controller) {
20}
21
22ExtensionUninstaller::~ExtensionUninstaller() {
23}
24
25void ExtensionUninstaller::Run() {
26  const extensions::Extension* extension =
27      extensions::ExtensionSystem::Get(profile_)->extension_service()->
28          GetInstalledExtension(app_id_);
29  if (!extension) {
30    CleanUp();
31    return;
32  }
33  controller_->OnShowChildDialog();
34  dialog_.reset(
35      extensions::ExtensionUninstallDialog::Create(profile_, NULL, this));
36  dialog_->ConfirmUninstall(extension);
37}
38
39void ExtensionUninstaller::ExtensionUninstallAccepted() {
40  ExtensionService* service =
41      extensions::ExtensionSystem::Get(profile_)->extension_service();
42  const extensions::Extension* extension =
43      service->GetInstalledExtension(app_id_);
44  if (extension) {
45    service->UninstallExtension(
46        app_id_, ExtensionService::UNINSTALL_REASON_USER_INITIATED, NULL);
47  }
48  controller_->OnCloseChildDialog();
49  CleanUp();
50}
51
52void ExtensionUninstaller::ExtensionUninstallCanceled() {
53  controller_->OnCloseChildDialog();
54  CleanUp();
55}
56
57void ExtensionUninstaller::CleanUp() {
58  delete this;
59}
60