| Index: chrome/browser/extensions/api/image_writer_private/operation_manager.h
|
| diff --git a/chrome/browser/extensions/api/image_writer_private/operation_manager.h b/chrome/browser/extensions/api/image_writer_private/operation_manager.h
|
| index b255a989e80f919c958c44966c5673129d9286ff..8d9208f0be3533017018d74664bf294fcd7a0aa3 100644
|
| --- a/chrome/browser/extensions/api/image_writer_private/operation_manager.h
|
| +++ b/chrome/browser/extensions/api/image_writer_private/operation_manager.h
|
| @@ -10,6 +10,7 @@
|
| #include "base/bind.h"
|
| #include "base/callback.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/scoped_observer.h"
|
| #include "base/stl_util.h"
|
| #include "base/timer/timer.h"
|
| #include "chrome/browser/extensions/api/image_writer_private/image_writer_private_api.h"
|
| @@ -18,6 +19,7 @@
|
| #include "content/public/browser/notification_observer.h"
|
| #include "content/public/browser/notification_registrar.h"
|
| #include "extensions/browser/browser_context_keyed_api_factory.h"
|
| +#include "extensions/browser/extension_registry_observer.h"
|
| #include "url/gurl.h"
|
|
|
| namespace image_writer_api = extensions::api::image_writer_private;
|
| @@ -29,6 +31,8 @@ class BrowserContext;
|
| }
|
|
|
| namespace extensions {
|
| +class ExtensionRegistry;
|
| +
|
| namespace image_writer {
|
|
|
| class Operation;
|
| @@ -37,6 +41,7 @@ class Operation;
|
| // and message routing.
|
| class OperationManager : public BrowserContextKeyedAPI,
|
| public content::NotificationObserver,
|
| + public extensions::ExtensionRegistryObserver,
|
| public base::SupportsWeakPtr<OperationManager> {
|
| public:
|
| typedef std::string ExtensionId;
|
| @@ -85,29 +90,37 @@ class OperationManager : public BrowserContextKeyedAPI,
|
| static BrowserContextKeyedAPIFactory<OperationManager>* GetFactoryInstance();
|
| static OperationManager* Get(content::BrowserContext* context);
|
|
|
| - Profile* profile() { return profile_; }
|
| -
|
| private:
|
|
|
| static const char* service_name() {
|
| return "OperationManager";
|
| }
|
|
|
| - // NotificationObserver
|
| + // NotificationObserver implementation.
|
| virtual void Observe(int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) OVERRIDE;
|
|
|
| + // ExtensionRegistryObserver implementation.
|
| + virtual void OnExtensionUnloaded(
|
| + content::BrowserContext* browser_context,
|
| + const Extension* extension,
|
| + UnloadedExtensionInfo::Reason reason) OVERRIDE;
|
| +
|
| Operation* GetOperation(const ExtensionId& extension_id);
|
| void DeleteOperation(const ExtensionId& extension_id);
|
|
|
| friend class BrowserContextKeyedAPIFactory<OperationManager>;
|
| typedef std::map<ExtensionId, scoped_refptr<Operation> > OperationMap;
|
|
|
| - Profile* profile_;
|
| + content::BrowserContext* browser_context_;
|
| OperationMap operations_;
|
| content::NotificationRegistrar registrar_;
|
|
|
| + // Listen to extension unloaded notification.
|
| + ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
|
| + extension_registry_observer_;
|
| +
|
| base::WeakPtrFactory<OperationManager> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(OperationManager);
|
|
|