| Index: chrome/browser/ui/extensions/extension_installed_bubble.cc
|
| diff --git a/chrome/browser/ui/extensions/extension_installed_bubble.cc b/chrome/browser/ui/extensions/extension_installed_bubble.cc
|
| index 267af8b6307c534d9603679797383dc6784b7dd6..def034c126d63447d26cdc30a720f4dbbad49c2a 100644
|
| --- a/chrome/browser/ui/extensions/extension_installed_bubble.cc
|
| +++ b/chrome/browser/ui/extensions/extension_installed_bubble.cc
|
| @@ -15,19 +15,17 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "base/time/time.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/extensions/api/commands/command_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_list.h"
|
| +#include "chrome/browser/ui/browser_list_observer.h"
|
| #include "chrome/browser/ui/sync/sync_promo_ui.h"
|
| #include "chrome/common/extensions/api/extension_action/action_info.h"
|
| #include "chrome/common/extensions/api/omnibox/omnibox_handler.h"
|
| #include "chrome/common/extensions/command.h"
|
| #include "chrome/common/extensions/sync_helper.h"
|
| #include "chrome/grit/generated_resources.h"
|
| -#include "content/public/browser/notification_observer.h"
|
| -#include "content/public/browser/notification_registrar.h"
|
| -#include "content/public/browser/notification_source.h"
|
| #include "extensions/browser/extension_registry.h"
|
| #include "extensions/browser/extension_registry_observer.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| @@ -43,22 +41,21 @@ const int kAnimationWaitRetries = 10;
|
|
|
| // Class responsible for showing the bubble after it's installed. Owns itself.
|
| class ExtensionInstalledBubbleObserver
|
| - : public content::NotificationObserver,
|
| + : public chrome::BrowserListObserver,
|
| public extensions::ExtensionRegistryObserver {
|
| public:
|
| explicit ExtensionInstalledBubbleObserver(
|
| std::unique_ptr<ExtensionInstalledBubble> bubble)
|
| : bubble_(std::move(bubble)),
|
| extension_registry_observer_(this),
|
| + browser_list_observer_(this),
|
| animation_wait_retries_(0),
|
| weak_factory_(this) {
|
| // |extension| has been initialized but not loaded at this point. We need to
|
| // wait on showing the Bubble until the EXTENSION_LOADED gets fired.
|
| extension_registry_observer_.Add(
|
| extensions::ExtensionRegistry::Get(bubble_->browser()->profile()));
|
| -
|
| - registrar_.Add(this, chrome::NOTIFICATION_BROWSER_CLOSING,
|
| - content::Source<Browser>(bubble_->browser()));
|
| + browser_list_observer_.Add(BrowserList::GetInstance());
|
| }
|
|
|
| void Run() { OnExtensionLoaded(nullptr, bubble_->extension()); }
|
| @@ -66,15 +63,13 @@ class ExtensionInstalledBubbleObserver
|
| private:
|
| ~ExtensionInstalledBubbleObserver() override {}
|
|
|
| - // content::NotificationObserver:
|
| - void Observe(int type,
|
| - const content::NotificationSource& source,
|
| - const content::NotificationDetails& details) override {
|
| - DCHECK_EQ(type, chrome::NOTIFICATION_BROWSER_CLOSING)
|
| - << "Received unexpected notification";
|
| - // Browser is closing before the bubble was shown.
|
| - // TODO(hcarmona): Look into logging this with the BubbleManager.
|
| - delete this;
|
| + // chrome::BrowserListObserver:
|
| + void OnBrowserClosing(Browser* browser) override {
|
| + if (bubble_->browser() == browser) {
|
| + // Browser is closing before the bubble was shown.
|
| + // TODO(hcarmona): Look into logging this with the BubbleManager.
|
| + delete this;
|
| + }
|
| }
|
|
|
| // extensions::ExtensionRegistryObserver:
|
| @@ -141,7 +136,7 @@ class ExtensionInstalledBubbleObserver
|
| extensions::ExtensionRegistryObserver>
|
| extension_registry_observer_;
|
|
|
| - content::NotificationRegistrar registrar_;
|
| + ScopedObserver<BrowserList, BrowserListObserver> browser_list_observer_;
|
|
|
| // The number of times to retry showing the bubble if the bubble_->browser()
|
| // action toolbar is animating.
|
|
|