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