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.
5 #ifndef CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_H_
6 #define CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_H_
8 #include "base/gtest_prod_util.h"
9 #include "base/observer_list.h"
10 #include "base/strings/string16.h"
11 #include "base/version.h"
12 #include "chrome/browser/plugins/plugin_metadata.h"
13 #include "content/public/browser/download_interrupt_reasons.h"
14 #include "content/public/browser/download_item.h"
17 class PluginInstallerObserver
;
18 class WeakPluginInstallerObserver
;
21 class DownloadManager
;
26 class PluginInstaller
: public content::DownloadItem::Observer
{
30 INSTALLER_STATE_DOWNLOADING
,
34 ~PluginInstaller() override
;
36 void OnDownloadUpdated(content::DownloadItem
* download
) override
;
37 void OnDownloadDestroyed(content::DownloadItem
* download
) override
;
39 void AddObserver(PluginInstallerObserver
* observer
);
40 void RemoveObserver(PluginInstallerObserver
* observer
);
42 void AddWeakObserver(WeakPluginInstallerObserver
* observer
);
43 void RemoveWeakObserver(WeakPluginInstallerObserver
* observer
);
45 InstallerState
state() const { return state_
; }
47 // Opens the download URL in a new tab.
48 void OpenDownloadURL(const GURL
& plugin_url
,
49 content::WebContents
* web_contents
);
51 // Starts downloading the download URL and opens the downloaded file
53 void StartInstalling(const GURL
& plugin_url
,
54 content::WebContents
* web_contents
);
57 void StartInstallingWithDownloadManager(
58 const GURL
& plugin_url
,
59 content::WebContents
* web_contents
,
60 content::DownloadManager
* download_manager
);
61 void DownloadStarted(content::DownloadItem
* item
,
62 content::DownloadInterruptReason interrupt_reason
);
63 void DownloadError(const std::string
& msg
);
64 void DownloadCancelled();
66 InstallerState state_
;
67 base::ObserverList
<PluginInstallerObserver
> observers_
;
68 int strong_observer_count_
;
69 base::ObserverList
<WeakPluginInstallerObserver
> weak_observers_
;
71 FRIEND_TEST_ALL_PREFIXES(PluginInstallerTest
,
72 StartInstalling_SuccessfulDownload
);
73 FRIEND_TEST_ALL_PREFIXES(PluginInstallerTest
, StartInstalling_FailedStart
);
74 FRIEND_TEST_ALL_PREFIXES(PluginInstallerTest
, StartInstalling_Interrupted
);
75 DISALLOW_COPY_AND_ASSIGN(PluginInstaller
);
78 #endif // CHROME_BROWSER_PLUGINS_PLUGIN_INSTALLER_H_