1// Copyright (c) 2012 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_PLUGINS_PLUGIN_INSTALLER_OBSERVER_H_
6#define CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_OBSERVER_H_
7
8#include <string>
9
10class PluginInstaller;
11
12class PluginInstallerObserver {
13 public:
14  explicit PluginInstallerObserver(PluginInstaller* installer);
15  virtual ~PluginInstallerObserver();
16
17 protected:
18  PluginInstaller* installer() const { return installer_; }
19
20 private:
21  friend class PluginInstaller;
22
23  virtual void DownloadStarted();
24  virtual void DownloadFinished();
25  virtual void DownloadError(const std::string& message);
26  virtual void DownloadCancelled();
27
28  // Weak pointer; Owned by PluginFinder, which is a singleton.
29  PluginInstaller* installer_;
30};
31
32// A WeakPluginInstallerObserver is like a weak pointer to the installer, in the
33// sense that if only weak observers are left, we don't need to show
34// installation UI anymore.
35class WeakPluginInstallerObserver : public PluginInstallerObserver {
36 public:
37  explicit WeakPluginInstallerObserver(PluginInstaller* installer);
38  virtual ~WeakPluginInstallerObserver();
39
40 private:
41  friend class PluginInstaller;
42
43  virtual void OnlyWeakObserversLeft();
44};
45
46#endif  // CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_OBSERVER_H_
47