| Index: chrome/browser/pepper_broker_infobar_delegate.cc
|
| diff --git a/chrome/browser/pepper_broker_observer.cc b/chrome/browser/pepper_broker_infobar_delegate.cc
|
| similarity index 76%
|
| rename from chrome/browser/pepper_broker_observer.cc
|
| rename to chrome/browser/pepper_broker_infobar_delegate.cc
|
| index 77d66ff375e1382edf10ce13265407d1d3d4e95e..3ef8edf877ee9d5f03b9956a652004ff664c78d2 100644
|
| --- a/chrome/browser/pepper_broker_observer.cc
|
| +++ b/chrome/browser/pepper_broker_infobar_delegate.cc
|
| @@ -2,10 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/pepper_broker_observer.h"
|
| +#include "chrome/browser/pepper_broker_infobar_delegate.h"
|
|
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "chrome/browser/api/infobars/confirm_infobar_delegate.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map.h"
|
| #include "chrome/browser/infobars/infobar_tab_helper.h"
|
| #include "chrome/browser/plugins/plugin_finder.h"
|
| @@ -23,59 +21,67 @@
|
| #include "net/base/net_util.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| -#include "webkit/plugins/npapi/plugin_list.h"
|
| #include "webkit/plugins/webplugininfo.h"
|
|
|
| +// The URL for the "learn more" article about the PPAPI broker.
|
| +const char kPpapiBrokerLearnMoreUrl[] =
|
| + "https://support.google.com/chrome/?p=ib_pepper_broker";
|
| +
|
| using content::OpenURLParams;
|
| using content::Referrer;
|
| using content::WebContents;
|
|
|
| -DEFINE_WEB_CONTENTS_USER_DATA_KEY(PepperBrokerObserver)
|
| -
|
| -namespace {
|
| +// static
|
| +void PepperBrokerInfoBarDelegate::Show(
|
| + WebContents* web_contents,
|
| + const GURL& url,
|
| + const FilePath& plugin_path,
|
| + const base::Callback<void(bool)>& callback) {
|
| + // TODO(wad): Add ephemeral device ID support for broker in guest mode.
|
| + if (Profile::IsGuestSession()) {
|
| + callback.Run(false);
|
| + return;
|
| + }
|
|
|
| -// The URL for the "learn more" article about the PPAPI broker.
|
| -const char kPpapiBrokerLearnMoreUrl[] =
|
| - "https://support.google.com/chrome/?p=ib_pepper_broker";
|
| + Profile* profile =
|
| + Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| + HostContentSettingsMap* content_settings =
|
| + profile->GetHostContentSettingsMap();
|
| + ContentSetting setting =
|
| + content_settings->GetContentSetting(url, url,
|
| + CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
|
| + std::string());
|
| + switch (setting) {
|
| + case CONTENT_SETTING_ALLOW: {
|
| + content::RecordAction(
|
| + content::UserMetricsAction("PPAPI.BrokerSettingAllow"));
|
| + callback.Run(true);
|
| + break;
|
| + }
|
| + case CONTENT_SETTING_BLOCK: {
|
| + content::RecordAction(
|
| + content::UserMetricsAction("PPAPI.BrokerSettingDeny"));
|
| + callback.Run(false);
|
| + break;
|
| + }
|
| + case CONTENT_SETTING_ASK: {
|
| + content::RecordAction(
|
| + content::UserMetricsAction("PPAPI.BrokerInfobarDisplayed"));
|
|
|
| -class PepperBrokerInfoBarDelegate : public ConfirmInfoBarDelegate {
|
| - public:
|
| - static void Show(
|
| - content::WebContents* web_contents,
|
| - const GURL& url,
|
| - const FilePath& plugin_path,
|
| - const base::Callback<void(bool)>& callback);
|
| -
|
| - PepperBrokerInfoBarDelegate(
|
| - InfoBarTabHelper* helper,
|
| - const GURL& url,
|
| - const FilePath& plugin_path,
|
| - const std::string& languages,
|
| - HostContentSettingsMap* content_settings,
|
| - const base::Callback<void(bool)>& callback);
|
| - virtual ~PepperBrokerInfoBarDelegate();
|
| -
|
| - // ConfirmInfoBarDelegate:
|
| - virtual string16 GetMessageText() const OVERRIDE;
|
| - virtual int GetButtons() const OVERRIDE;
|
| - virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
|
| - virtual bool Accept() OVERRIDE;
|
| - virtual bool Cancel() OVERRIDE;
|
| - virtual string16 GetLinkText() const OVERRIDE;
|
| - virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
|
| - virtual gfx::Image* GetIcon() const OVERRIDE;
|
| -
|
| - private:
|
| - void DispatchCallback(bool result);
|
| -
|
| - const GURL url_;
|
| - const FilePath plugin_path_;
|
| - const std::string languages_;
|
| - HostContentSettingsMap* content_settings_;
|
| - base::Callback<void(bool)> callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PepperBrokerInfoBarDelegate);
|
| -};
|
| + InfoBarTabHelper* infobar_helper =
|
| + InfoBarTabHelper::FromWebContents(web_contents);
|
| + std::string languages =
|
| + profile->GetPrefs()->GetString(prefs::kAcceptLanguages);
|
| + infobar_helper->AddInfoBar(
|
| + new PepperBrokerInfoBarDelegate(
|
| + infobar_helper, url, plugin_path, languages, content_settings,
|
| + callback));
|
| + break;
|
| + }
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +}
|
|
|
| PepperBrokerInfoBarDelegate::PepperBrokerInfoBarDelegate(
|
| InfoBarTabHelper* helper,
|
| @@ -170,63 +176,3 @@ void PepperBrokerInfoBarDelegate::DispatchCallback(bool result) {
|
| CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
|
| std::string(), result ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK);
|
| }
|
| -
|
| -} // namespace
|
| -
|
| -PepperBrokerObserver::PepperBrokerObserver(WebContents* web_contents)
|
| - : WebContentsObserver(web_contents) {}
|
| -
|
| -PepperBrokerObserver::~PepperBrokerObserver() {}
|
| -
|
| -bool PepperBrokerObserver::RequestPpapiBrokerPermission(
|
| - WebContents* web_contents,
|
| - const GURL& url,
|
| - const FilePath& plugin_path,
|
| - const base::Callback<void(bool)>& callback) {
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
| - // TODO(wad): Add ephemeral device ID support for broker in guest mode.
|
| - if (Profile::IsGuestSession()) {
|
| - callback.Run(false);
|
| - return true;
|
| - }
|
| -
|
| - HostContentSettingsMap* content_settings =
|
| - profile->GetHostContentSettingsMap();
|
| - ContentSetting setting =
|
| - content_settings->GetContentSetting(url, url,
|
| - CONTENT_SETTINGS_TYPE_PPAPI_BROKER,
|
| - std::string());
|
| - switch (setting) {
|
| - case CONTENT_SETTING_ALLOW: {
|
| - content::RecordAction(
|
| - content::UserMetricsAction("PPAPI.BrokerSettingAllow"));
|
| - callback.Run(true);
|
| - break;
|
| - }
|
| - case CONTENT_SETTING_BLOCK: {
|
| - content::RecordAction(
|
| - content::UserMetricsAction("PPAPI.BrokerSettingDeny"));
|
| - callback.Run(false);
|
| - break;
|
| - }
|
| - case CONTENT_SETTING_ASK: {
|
| - content::RecordAction(
|
| - content::UserMetricsAction("PPAPI.BrokerInfobarDisplayed"));
|
| -
|
| - InfoBarTabHelper* infobar_helper =
|
| - InfoBarTabHelper::FromWebContents(web_contents);
|
| - std::string languages =
|
| - profile->GetPrefs()->GetString(prefs::kAcceptLanguages);
|
| - infobar_helper->AddInfoBar(
|
| - new PepperBrokerInfoBarDelegate(
|
| - infobar_helper, url, plugin_path, languages, content_settings,
|
| - callback));
|
| - break;
|
| - }
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - return true;
|
| -}
|
|
|