OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ | 5 #ifndef CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ |
6 #define CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ | 6 #define CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ |
7 | 7 |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "components/infobars/core/confirm_infobar_delegate.h" | 9 #include "components/infobars/core/confirm_infobar_delegate.h" |
10 #include "url/gurl.h" | 10 #include "url/gurl.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 // Infobar that's shown when a plugin is out of date. | 48 // Infobar that's shown when a plugin is out of date. |
49 class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, | 49 class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, |
50 public WeakPluginInstallerObserver { | 50 public WeakPluginInstallerObserver { |
51 public: | 51 public: |
52 // Creates an outdated plugin infobar and delegate and adds the infobar to | 52 // Creates an outdated plugin infobar and delegate and adds the infobar to |
53 // |infobar_service|. | 53 // |infobar_service|. |
54 static void Create(InfoBarService* infobar_service, | 54 static void Create(InfoBarService* infobar_service, |
55 PluginInstaller* installer, | 55 PluginInstaller* installer, |
56 scoped_ptr<PluginMetadata> metadata); | 56 scoped_ptr<PluginMetadata> metadata); |
57 | 57 |
| 58 // Replaces |infobar|, which must currently be owned, with an infobar asking |
| 59 // the user to update a particular plugin. |
| 60 static void Replace(infobars::InfoBar* infobar, |
| 61 PluginInstaller* installer, |
| 62 scoped_ptr<PluginMetadata> plugin_metadata, |
| 63 const base::string16& message); |
| 64 |
58 private: | 65 private: |
59 OutdatedPluginInfoBarDelegate(PluginInstaller* installer, | 66 OutdatedPluginInfoBarDelegate(PluginInstaller* installer, |
60 scoped_ptr<PluginMetadata> metadata, | 67 scoped_ptr<PluginMetadata> metadata, |
61 const base::string16& message); | 68 const base::string16& message); |
62 ~OutdatedPluginInfoBarDelegate() override; | 69 ~OutdatedPluginInfoBarDelegate() override; |
63 | 70 |
64 // PluginInfoBarDelegate: | 71 // PluginInfoBarDelegate: |
65 void InfoBarDismissed() override; | 72 void InfoBarDismissed() override; |
66 base::string16 GetMessageText() const override; | 73 base::string16 GetMessageText() const override; |
67 base::string16 GetButtonLabel(InfoBarButton button) const override; | 74 base::string16 GetButtonLabel(InfoBarButton button) const override; |
(...skipping 14 matching lines...) Expand all Loading... |
82 // Replaces this infobar with one showing |message|. The new infobar will | 89 // Replaces this infobar with one showing |message|. The new infobar will |
83 // not have any buttons (and not call the callback). | 90 // not have any buttons (and not call the callback). |
84 void ReplaceWithInfoBar(const base::string16& message); | 91 void ReplaceWithInfoBar(const base::string16& message); |
85 | 92 |
86 scoped_ptr<PluginMetadata> plugin_metadata_; | 93 scoped_ptr<PluginMetadata> plugin_metadata_; |
87 | 94 |
88 base::string16 message_; | 95 base::string16 message_; |
89 | 96 |
90 DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); | 97 DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); |
91 }; | 98 }; |
92 | |
93 // The main purpose for this class is to popup/close the infobar when there is | |
94 // a missing plugin. | |
95 class PluginInstallerInfoBarDelegate : public ConfirmInfoBarDelegate, | |
96 public WeakPluginInstallerObserver { | |
97 public: | |
98 typedef base::Callback<void(const PluginMetadata*)> InstallCallback; | |
99 | |
100 // Shows an infobar asking whether to install the plugin represented by | |
101 // |installer|. When the user accepts, |callback| is called. | |
102 // During installation of the plugin, the infobar will change to reflect the | |
103 // installation state. | |
104 static void Create(InfoBarService* infobar_service, | |
105 PluginInstaller* installer, | |
106 scoped_ptr<PluginMetadata> plugin_metadata, | |
107 const InstallCallback& callback); | |
108 | |
109 // Replaces |infobar|, which must currently be owned, with an infobar asking | |
110 // the user to install or update a particular plugin. | |
111 static void Replace(infobars::InfoBar* infobar, | |
112 PluginInstaller* installer, | |
113 scoped_ptr<PluginMetadata> plugin_metadata, | |
114 bool new_install, | |
115 const base::string16& message); | |
116 | |
117 private: | |
118 PluginInstallerInfoBarDelegate(PluginInstaller* installer, | |
119 scoped_ptr<PluginMetadata> metadata, | |
120 const InstallCallback& callback, | |
121 bool new_install, | |
122 const base::string16& message); | |
123 ~PluginInstallerInfoBarDelegate() override; | |
124 | |
125 // ConfirmInfoBarDelegate: | |
126 int GetIconID() const override; | |
127 base::string16 GetMessageText() const override; | |
128 int GetButtons() const override; | |
129 base::string16 GetButtonLabel(InfoBarButton button) const override; | |
130 bool Accept() override; | |
131 base::string16 GetLinkText() const override; | |
132 bool LinkClicked(WindowOpenDisposition disposition) override; | |
133 | |
134 // PluginInstallerObserver: | |
135 void DownloadStarted() override; | |
136 void DownloadError(const std::string& message) override; | |
137 void DownloadCancelled() override; | |
138 void DownloadFinished() override; | |
139 | |
140 // WeakPluginInstallerObserver: | |
141 void OnlyWeakObserversLeft() override; | |
142 | |
143 // Replaces this infobar with one showing |message|. The new infobar will | |
144 // not have any buttons (and not call the callback). | |
145 void ReplaceWithInfoBar(const base::string16& message); | |
146 | |
147 scoped_ptr<PluginMetadata> plugin_metadata_; | |
148 | |
149 InstallCallback callback_; | |
150 | |
151 // True iff the plugin isn't installed yet. | |
152 bool new_install_; | |
153 | |
154 base::string16 message_; | |
155 | |
156 DISALLOW_COPY_AND_ASSIGN(PluginInstallerInfoBarDelegate); | |
157 }; | |
158 #endif // defined(ENABLE_PLUGIN_INSTALLATION) | 99 #endif // defined(ENABLE_PLUGIN_INSTALLATION) |
159 | 100 |
160 #if defined(OS_WIN) | 101 #if defined(OS_WIN) |
161 class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { | 102 class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { |
162 public: | 103 public: |
163 // The infobar can be used for two purposes: to inform the user about a | 104 // The infobar can be used for two purposes: to inform the user about a |
164 // missing plugin or to note that a plugin only works in desktop mode. These | 105 // missing plugin or to note that a plugin only works in desktop mode. These |
165 // purposes require different messages, buttons, etc. | 106 // purposes require different messages, buttons, etc. |
166 enum Mode { | 107 enum Mode { |
167 MISSING_PLUGIN, | 108 MISSING_PLUGIN, |
(...skipping 20 matching lines...) Expand all Loading... |
188 virtual bool LinkClicked(WindowOpenDisposition disposition) override; | 129 virtual bool LinkClicked(WindowOpenDisposition disposition) override; |
189 | 130 |
190 const Mode mode_; | 131 const Mode mode_; |
191 const base::string16 name_; | 132 const base::string16 name_; |
192 | 133 |
193 DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); | 134 DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); |
194 }; | 135 }; |
195 #endif // defined(OS_WIN) | 136 #endif // defined(OS_WIN) |
196 | 137 |
197 #endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ | 138 #endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ |
OLD | NEW |