Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2006)

Unified Diff: chrome/browser/pepper_broker_infobar_delegate.cc

Issue 11416013: Move RequestPpapiBrokerPermission from WebContentsObserver to WebContentsDelegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/pepper_broker_infobar_delegate.h ('k') | chrome/browser/pepper_broker_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
-}
« no previous file with comments | « chrome/browser/pepper_broker_infobar_delegate.h ('k') | chrome/browser/pepper_broker_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698