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" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/infobars/core/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 { 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch protected: 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) explicit PluginInfoBarDelegate(const std::string& identifier); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInfoBarDelegate(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const = 0; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void LoadBlockedPlugins(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetLinkText() const OVERRIDE; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string identifier_; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInfoBarDelegate); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in requires user authorization to run. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UnauthorizedPluginInfoBarDelegate : public PluginInfoBarDelegate { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Creates an unauthorized plugin infobar and delegate and adds the infobar to 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // |infobar_service|. 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HostContentSettingsMap* content_settings, 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& name, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& identifier); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) UnauthorizedPluginInfoBarDelegate(HostContentSettingsMap* content_settings, 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& name, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& identifier); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~UnauthorizedPluginInfoBarDelegate(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetMessageText() const OVERRIDE; 65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HostContentSettingsMap* content_settings_; 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 name_; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UnauthorizedPluginInfoBarDelegate); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(ENABLE_PLUGIN_INSTALLATION) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infobar that's shown when a plug-in is out of date. 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class OutdatedPluginInfoBarDelegate : public PluginInfoBarDelegate, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 83a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Creates an outdated plugin infobar and delegate and adds the infobar to 84ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // |infobar_service|. 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> metadata); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) OutdatedPluginInfoBarDelegate(PluginInstaller* installer, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 92a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~OutdatedPluginInfoBarDelegate(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInfoBarDelegate: 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetMessageText() const OVERRIDE; 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Cancel() OVERRIDE; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InfoBarDismissed() OVERRIDE; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetLearnMoreURL() const OVERRIDE; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void ReplaceWithInfoBar(const base::string16& message); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 message_; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(OutdatedPluginInfoBarDelegate); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The main purpose for this class is to popup/close the infobar when there is 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a missing plugin. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginInstallerInfoBarDelegate : public ConfirmInfoBarDelegate, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public WeakPluginInstallerObserver { 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(const PluginMetadata*)> InstallCallback; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shows an infobar asking whether to install the plugin represented by 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // |installer|. When the user accepts, |callback| is called. 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // During installation of the plug-in, the infobar will change to reflect the 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // installation state. 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata, 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const InstallCallback& callback); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Replaces |infobar|, which must currently be owned, with an infobar asking 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the user to install or update a particular plugin. 1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch static void Replace(infobars::InfoBar* infobar, 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PluginInstaller* installer, 144ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch scoped_ptr<PluginMetadata> plugin_metadata, 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool new_install, 146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 149a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PluginInstallerInfoBarDelegate(PluginInstaller* installer, 150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<PluginMetadata> metadata, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const InstallCallback& callback, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install, 153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& message); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginInstallerInfoBarDelegate(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 15790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 158a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetMessageText() const OVERRIDE; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 160a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetLinkText() const OVERRIDE; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // PluginInstallerObserver: 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadStarted() OVERRIDE; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadError(const std::string& message) OVERRIDE; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadCancelled() OVERRIDE; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DownloadFinished() OVERRIDE; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // WeakPluginInstallerObserver: 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnlyWeakObserversLeft() OVERRIDE; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replaces this infobar with one showing |message|. The new infobar will 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // not have any buttons (and not call the callback). 176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void ReplaceWithInfoBar(const base::string16& message); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PluginMetadata> plugin_metadata_; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstallCallback callback_; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True iff the plug-in isn't installed yet. 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool new_install_; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 message_; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginInstallerInfoBarDelegate); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(ENABLE_PLUGIN_INSTALLATION) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginMetroModeInfoBarDelegate : public ConfirmInfoBarDelegate { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The infobar can be used for two purposes: to inform the user about a 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // missing plugin or to note that a plugin only works in desktop mode. These 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // purposes require different messages, buttons, etc. 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) enum Mode { 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MISSING_PLUGIN, 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DESKTOP_MODE_REQUIRED, 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a metro mode infobar and delegate and adds the infobar to 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |infobar_service|. 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void Create(InfoBarService* infobar_service, 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Mode mode, 206a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& name); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PluginMetroModeInfoBarDelegate(Mode mode, const base::string16& name); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~PluginMetroModeInfoBarDelegate(); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ConfirmInfoBarDelegate: 21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual int GetIconID() const OVERRIDE; 214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetMessageText() const OVERRIDE; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetButtons() const OVERRIDE; 216a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool Accept() OVERRIDE; 218a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetLinkText() const OVERRIDE; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const Mode mode_; 222a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 name_; 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PluginMetroModeInfoBarDelegate); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_WIN) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_PLUGINS_PLUGIN_INFOBAR_DELEGATES_H_ 229