| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_UNINSTALL_DIALOG_H_ |
| #define CHROME_BROWSER_EXTENSIONS_EXTENSION_UNINSTALL_DIALOG_H_ |
| #pragma once |
| |
| #include "base/basictypes.h" |
| #include "base/compiler_specific.h" |
| #include "chrome/browser/extensions/image_loading_tracker.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| |
| class MessageLoop; |
| class Profile; |
| |
| class ExtensionUninstallDialog : public ImageLoadingTracker::Observer { |
| public: |
| class Delegate { |
| public: |
| // We call this method to signal that the uninstallation should continue. |
| virtual void ExtensionDialogAccepted() = 0; |
| |
| // We call this method to signal that the uninstallation should stop. |
| virtual void ExtensionDialogCanceled() = 0; |
| |
| protected: |
| virtual ~Delegate() {} |
| }; |
| |
| explicit ExtensionUninstallDialog(Profile* profile); |
| virtual ~ExtensionUninstallDialog(); |
| |
| // This is called by the extensions management page to verify whether the |
| // uninstallation should proceed. |
| // Starts the process of showing a confirmation UI, which is split into two. |
| // 1) Set off a 'load icon' task. |
| // 2) Handle the load icon response and show the UI (OnImageLoaded). |
| void ConfirmUninstall(Delegate* delegate, const Extension* extension); |
| |
| private: |
| // Creates an appropriate ExtensionUninstallDialog for the platform. |
| static void Show(Profile* profile, |
| Delegate* delegate, |
| const Extension* extension, |
| SkBitmap* icon); |
| |
| // Sets the icon that will be used in any UI. If |icon| is NULL, or contains |
| // an empty bitmap, then a default icon will be used instead. |
| void SetIcon(SkBitmap* icon); |
| |
| // ImageLoadingTracker::Observer: |
| virtual void OnImageLoaded(SkBitmap* image, |
| const ExtensionResource& resource, |
| int index) OVERRIDE; |
| |
| Profile* profile_; |
| MessageLoop* ui_loop_; |
| |
| // The delegate we will call Accepted/Canceled on after confirmation UI. |
| Delegate* delegate_; |
| |
| // The extension we are showing the UI for. |
| const Extension* extension_; |
| |
| // Keeps track of extension images being loaded on the File thread for the |
| // purpose of showing the install UI. |
| ImageLoadingTracker tracker_; |
| |
| // The extensions icon. |
| SkBitmap icon_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ExtensionUninstallDialog); |
| }; |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_UNINSTALL_DIALOG_H_ |