Home | History | Annotate | Download | only in plugins
      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_H_
      6 #define CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_H_
      7 
      8 #include "base/observer_list.h"
      9 #include "base/strings/string16.h"
     10 #include "base/version.h"
     11 #include "chrome/browser/plugins/plugin_metadata.h"
     12 #include "content/public/browser/download_item.h"
     13 #include "net/base/net_errors.h"
     14 #include "url/gurl.h"
     15 
     16 class PluginInstallerObserver;
     17 class WeakPluginInstallerObserver;
     18 
     19 namespace content {
     20 class WebContents;
     21 struct WebPluginInfo;
     22 }
     23 
     24 class PluginInstaller : public content::DownloadItem::Observer {
     25  public:
     26   enum InstallerState {
     27     INSTALLER_STATE_IDLE,
     28     INSTALLER_STATE_DOWNLOADING,
     29   };
     30 
     31   PluginInstaller();
     32   virtual ~PluginInstaller();
     33 
     34   virtual void OnDownloadUpdated(content::DownloadItem* download) OVERRIDE;
     35   virtual void OnDownloadDestroyed(content::DownloadItem* download) OVERRIDE;
     36 
     37   void AddObserver(PluginInstallerObserver* observer);
     38   void RemoveObserver(PluginInstallerObserver* observer);
     39 
     40   void AddWeakObserver(WeakPluginInstallerObserver* observer);
     41   void RemoveWeakObserver(WeakPluginInstallerObserver* observer);
     42 
     43   InstallerState state() const { return state_; }
     44 
     45   // Opens the download URL in a new tab.
     46   void OpenDownloadURL(const GURL& plugin_url,
     47                        content::WebContents* web_contents);
     48 
     49   // Starts downloading the download URL and opens the downloaded file
     50   // when finished.
     51   void StartInstalling(const GURL& plugin_url,
     52                        content::WebContents* web_contents);
     53 
     54  private:
     55   void DownloadStarted(content::DownloadItem* item, net::Error error);
     56   void DownloadError(const std::string& msg);
     57   void DownloadCancelled();
     58 
     59   InstallerState state_;
     60   ObserverList<PluginInstallerObserver> observers_;
     61   ObserverList<WeakPluginInstallerObserver> weak_observers_;
     62 
     63   DISALLOW_COPY_AND_ASSIGN(PluginInstaller);
     64 };
     65 
     66 #endif  // CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_H_
     67