plugin_infobar_delegates.h revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "googleurl/src/gurl.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/plugins/plugin_installer_observer.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(ENABLE_PLUGIN_INSTALLATION) 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 string16& name, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& identifier); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInfoBarDelegate(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const = 0; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadBlockedPlugins(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name_; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string identifier_; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInfoBarDelegate); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in requires user authorization to run. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UnauthorizedPluginInfoBarDelegate : public PluginInfoBarDelegate { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates an unauthorized plugin delegate and adds it to |infobar_service|. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HostContentSettingsMap* content_settings, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& identifier); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UnauthorizedPluginInfoBarDelegate(InfoBarService* infobar_service, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* content_settings, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& name, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& identifier); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~UnauthorizedPluginInfoBarDelegate(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* content_settings_; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UnauthorizedPluginInfoBarDelegate); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in is out of date. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates an outdated plugin delegate and adds it to |infobar_service|. 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> metadata); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OutdatedPluginInfoBarDelegate(InfoBarService* infobar_service, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstaller* installer, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OutdatedPluginInfoBarDelegate(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ReplaceWithInfoBar(const string16& message); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 message_; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The main purpose for this class is to popup/close the infobar when there is 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a missing plugin. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginInstallerInfoBarDelegate : public ConfirmInfoBarDelegate, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(const PluginMetadata*)> InstallCallback; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows an infobar asking whether to install the plugin represented by 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |installer|. When the user accepts, |callback| is called. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // During installation of the plug-in, the infobar will change to reflect the 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // installation state. 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata, 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const InstallCallback& callback); 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Replaces |infobar|, which must currently be owned, with an infobar asking 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the user to install or update a particular plugin. 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Replace(InfoBarDelegate* infobar, 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool new_install, 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& message); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstallerInfoBarDelegate(InfoBarService* infobar_service, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginInstaller* installer, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const InstallCallback& callback, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& message); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInstallerInfoBarDelegate(); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ReplaceWithInfoBar(const string16& message); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallCallback callback_; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True iff the plug-in isn't installed yet. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install_; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 message_; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInstallerInfoBarDelegate); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(ENABLE_PLUGIN_INSTALLATION) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The infobar can be used for two purposes: to inform the user about a 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // missing plugin or to note that a plugin only works in desktop mode. These 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // purposes require different messages, buttons, etc. 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum Mode { 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MISSING_PLUGIN, 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DESKTOP_MODE_REQUIRED, 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a metro mode infobar and delegate and adds the infobar to 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |infobar_service|. 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mode mode, 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name); 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginMetroModeInfoBarDelegate(InfoBarService* infobar_service, 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mode mode, 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16& name); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginMetroModeInfoBarDelegate(); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 22190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetMessageText() const OVERRIDE; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool Cancel() OVERRIDE; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual string16 GetLinkText() const OVERRIDE; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Mode mode_; 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string16 name_; 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ 238