extension_uninstaller.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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(ExtensionUninstallDialog::Create(profile_, NULL, this));
35  dialog_->ConfirmUninstall(extension);
36}
37
38void ExtensionUninstaller::ExtensionUninstallAccepted() {
39  ExtensionService* service =
40      extensions::ExtensionSystem::Get(profile_)->extension_service();
41  const extensions::Extension* extension =
42      service->GetInstalledExtension(app_id_);
43  if (extension) {
44    service->UninstallExtension(app_id_,
45                                false, /* external_uninstall*/
46                                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