Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / app_list / extension_uninstaller.cc
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
13 ExtensionUninstaller::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
22 ExtensionUninstaller::~ExtensionUninstaller() {
23 }
24
25 void 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_->OnShowExtensionPrompt();
34   dialog_.reset(ExtensionUninstallDialog::Create(profile_, NULL, this));
35   dialog_->ConfirmUninstall(extension);
36 }
37
38 void 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_->OnCloseExtensionPrompt();
49   CleanUp();
50 }
51
52 void ExtensionUninstaller::ExtensionUninstallCanceled() {
53   controller_->OnCloseExtensionPrompt();
54   CleanUp();
55 }
56
57 void ExtensionUninstaller::CleanUp() {
58   delete this;
59 }