plugin_infobar_delegates.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/confirm_infobar_delegate.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/plugins/plugin_installer_observer.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InfoBarService; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostContentSettingsMap; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginMetadata; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Base class for blocked plug-in infobars. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginInfoBarDelegate : public ConfirmInfoBarDelegate { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInfoBarDelegate(InfoBarService* infobar_service, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& identifier); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInfoBarDelegate(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const = 0; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadBlockedPlugins(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string identifier_; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInfoBarDelegate); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in requires user authorization to run. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UnauthorizedPluginInfoBarDelegate : public PluginInfoBarDelegate { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates an unauthorized plugin delegate and adds it to |infobar_service|. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HostContentSettingsMap* content_settings, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& identifier); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UnauthorizedPluginInfoBarDelegate(InfoBarService* infobar_service, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* content_settings, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& name, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& identifier); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~UnauthorizedPluginInfoBarDelegate(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* content_settings_; 767dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch string16 name_; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UnauthorizedPluginInfoBarDelegate); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in is out of date. 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates an outdated plugin delegate and adds it to |infobar_service|. 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> metadata); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OutdatedPluginInfoBarDelegate(InfoBarService* infobar_service, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstaller* installer, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OutdatedPluginInfoBarDelegate(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ReplaceWithInfoBar(const string16& message); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 message_; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The main purpose for this class is to popup/close the infobar when there is 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a missing plugin. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginInstallerInfoBarDelegate : public ConfirmInfoBarDelegate, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(const PluginMetadata*)> InstallCallback; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows an infobar asking whether to install the plugin represented by 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |installer|. When the user accepts, |callback| is called. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // During installation of the plug-in, the infobar will change to reflect the 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // installation state. 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata, 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const InstallCallback& callback); 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Replaces |infobar|, which must currently be owned, with an infobar asking 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the user to install or update a particular plugin. 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Replace(InfoBarDelegate* infobar, 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool new_install, 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& message); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstallerInfoBarDelegate(InfoBarService* infobar_service, 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstaller* installer, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const InstallCallback& callback, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInstallerInfoBarDelegate(); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 16190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ReplaceWithInfoBar(const string16& message); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallCallback callback_; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True iff the plug-in isn't installed yet. 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install_; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 message_; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInstallerInfoBarDelegate); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(ENABLE_PLUGIN_INSTALLATION) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The infobar can be used for two purposes: to inform the user about a 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // missing plugin or to note that a plugin only works in desktop mode. These 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // purposes require different messages, buttons, etc. 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum Mode { 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MISSING_PLUGIN, 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DESKTOP_MODE_REQUIRED, 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a metro mode infobar and delegate and adds the infobar to 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |infobar_service|. 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mode mode, 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name); 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginMetroModeInfoBarDelegate(InfoBarService* infobar_service, 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mode mode, 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginMetroModeInfoBarDelegate(); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 21990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool Cancel() OVERRIDE; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Mode mode_; 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16 name_; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ 236