automation_extension_tracker.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
1// Copyright (c) 2010 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#ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_EXTENSION_TRACKER_H_
6#define CHROME_BROWSER_AUTOMATION_AUTOMATION_EXTENSION_TRACKER_H_
7#pragma once
8
9#include "chrome/browser/automation/automation_resource_tracker.h"
10
11class Extension;
12
13// Tracks an Extension. An Extension is removed on uninstall, not on disable.
14class AutomationExtensionTracker
15    : public AutomationResourceTracker<Extension*> {
16 public:
17  explicit AutomationExtensionTracker(IPC::Message::Sender* automation);
18
19  virtual ~AutomationExtensionTracker();
20
21  // This is empty because we do not want to add an observer for every
22  // extension added to the tracker. This is because the profile, not the
23  // extension, is the one who sends the notification about extension
24  // uninstalls. Instead of using this method, one observer is added for all
25  // extensions in the constructor.
26  virtual void AddObserver(Extension* resource);
27
28  // See related comment above as to why this method is empty.
29  virtual void RemoveObserver(Extension* resource);
30
31  // Overriding AutomationResourceTracker Observe. AutomationResourceTracker's
32  // Observe expects the NotificationSource to be the object that is closing.
33  // This is not true for the relevant extension notifications, so we have to
34  // the observation ourselves.
35  virtual void Observe(NotificationType type,
36                       const NotificationSource& source,
37                       const NotificationDetails& details);
38};
39
40#endif  // CHROME_BROWSER_AUTOMATION_AUTOMATION_EXTENSION_TRACKER_H_
41