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