Index: chrome/browser/pepper_broker_observer.cc |
diff --git a/chrome/browser/pepper_broker_observer.cc b/chrome/browser/pepper_broker_observer.cc |
deleted file mode 100644 |
index 77d66ff375e1382edf10ce13265407d1d3d4e95e..0000000000000000000000000000000000000000 |
--- a/chrome/browser/pepper_broker_observer.cc |
+++ /dev/null |
@@ -1,232 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// 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 "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" |
-#include "chrome/browser/plugins/plugin_metadata.h" |
-#include "chrome/browser/prefs/pref_service.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/common/pref_names.h" |
-#include "content/public/browser/page_navigator.h" |
-#include "content/public/browser/plugin_service.h" |
-#include "content/public/browser/user_metrics.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/common/referrer.h" |
-#include "grit/generated_resources.h" |
-#include "grit/theme_resources.h" |
-#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" |
- |
-using content::OpenURLParams; |
-using content::Referrer; |
-using content::WebContents; |
- |
-DEFINE_WEB_CONTENTS_USER_DATA_KEY(PepperBrokerObserver) |
- |
-namespace { |
- |
-// The URL for the "learn more" article about the PPAPI broker. |
-const char kPpapiBrokerLearnMoreUrl[] = |
- "https://support.google.com/chrome/?p=ib_pepper_broker"; |
- |
-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); |
-}; |
- |
-PepperBrokerInfoBarDelegate::PepperBrokerInfoBarDelegate( |
- InfoBarTabHelper* helper, |
- const GURL& url, |
- const FilePath& plugin_path, |
- const std::string& languages, |
- HostContentSettingsMap* content_settings, |
- const base::Callback<void(bool)>& callback) |
- : ConfirmInfoBarDelegate(helper), |
- url_(url), |
- plugin_path_(plugin_path), |
- languages_(languages), |
- content_settings_(content_settings), |
- callback_(callback) { |
-} |
- |
-PepperBrokerInfoBarDelegate::~PepperBrokerInfoBarDelegate() { |
- if (!callback_.is_null()) |
- callback_.Run(false); |
-} |
- |
-string16 PepperBrokerInfoBarDelegate::GetMessageText() const { |
- content::PluginService* plugin_service = |
- content::PluginService::GetInstance(); |
- webkit::WebPluginInfo plugin; |
- bool success = plugin_service->GetPluginInfoByPath(plugin_path_, &plugin); |
- DCHECK(success); |
- scoped_ptr<PluginMetadata> plugin_metadata( |
- PluginFinder::GetInstance()->GetPluginMetadata(plugin)); |
- return l10n_util::GetStringFUTF16(IDS_PEPPER_BROKER_MESSAGE, |
- plugin_metadata->name(), |
- net::FormatUrl(url_.GetOrigin(), |
- languages_)); |
-} |
- |
-int PepperBrokerInfoBarDelegate::GetButtons() const { |
- return BUTTON_OK | BUTTON_CANCEL; |
-} |
- |
-string16 PepperBrokerInfoBarDelegate::GetButtonLabel( |
- InfoBarButton button) const { |
- switch (button) { |
- case BUTTON_OK: |
- return l10n_util::GetStringUTF16(IDS_PEPPER_BROKER_ALLOW_BUTTON); |
- case BUTTON_CANCEL: |
- return l10n_util::GetStringUTF16(IDS_PEPPER_BROKER_DENY_BUTTON); |
- default: |
- NOTREACHED(); |
- return string16(); |
- } |
-} |
- |
-bool PepperBrokerInfoBarDelegate::Accept() { |
- DispatchCallback(true); |
- return true; |
-} |
- |
-bool PepperBrokerInfoBarDelegate::Cancel() { |
- DispatchCallback(false); |
- return true; |
-} |
- |
-string16 PepperBrokerInfoBarDelegate::GetLinkText() const { |
- return l10n_util::GetStringUTF16(IDS_LEARN_MORE); |
-} |
- |
-bool PepperBrokerInfoBarDelegate::LinkClicked( |
- WindowOpenDisposition disposition) { |
- OpenURLParams params( |
- GURL(kPpapiBrokerLearnMoreUrl), Referrer(), |
- (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition, |
- content::PAGE_TRANSITION_LINK, |
- false); |
- owner()->GetWebContents()->OpenURL(params); |
- return false; |
-} |
- |
-gfx::Image* PepperBrokerInfoBarDelegate::GetIcon() const { |
- return &ResourceBundle::GetSharedInstance().GetNativeImageNamed( |
- IDR_INFOBAR_PLUGIN_INSTALL); |
-} |
- |
-void PepperBrokerInfoBarDelegate::DispatchCallback(bool result) { |
- content::RecordAction(result ? |
- content::UserMetricsAction("PPAPI.BrokerInfobarClickedAllow") : |
- content::UserMetricsAction("PPAPI.BrokerInfobarClickedDeny")); |
- callback_.Run(result); |
- callback_ = base::Callback<void(bool)>(); |
- content_settings_->SetContentSetting( |
- ContentSettingsPattern::FromURLNoWildcard(url_), |
- ContentSettingsPattern::Wildcard(), |
- 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; |
-} |