| Index: chrome/browser/three_d_api_observer.cc
|
| diff --git a/chrome/browser/three_d_api_observer.cc b/chrome/browser/three_d_api_observer.cc
|
| deleted file mode 100644
|
| index 248f5f96af572c46dd13e5e33264149c6a4a67c0..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/three_d_api_observer.cc
|
| +++ /dev/null
|
| @@ -1,177 +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/three_d_api_observer.h"
|
| -
|
| -#include "base/metrics/histogram.h"
|
| -#include "chrome/browser/infobars/confirm_infobar_delegate.h"
|
| -#include "chrome/browser/infobars/infobar_service.h"
|
| -#include "chrome/browser/tab_contents/tab_util.h"
|
| -#include "components/infobars/core/infobar.h"
|
| -#include "content/public/browser/gpu_data_manager.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -
|
| -
|
| -// ThreeDAPIInfoBarDelegate ---------------------------------------------------
|
| -
|
| -class ThreeDAPIInfoBarDelegate : public ConfirmInfoBarDelegate {
|
| - public:
|
| - // Creates a 3D API infobar and delegate and adds the infobar to
|
| - // |infobar_service|.
|
| - static void Create(InfoBarService* infobar_service,
|
| - const GURL& url,
|
| - content::ThreeDAPIType requester);
|
| -
|
| - private:
|
| - enum DismissalHistogram {
|
| - IGNORED,
|
| - RELOADED,
|
| - CLOSED_WITHOUT_ACTION,
|
| - DISMISSAL_MAX
|
| - };
|
| -
|
| - ThreeDAPIInfoBarDelegate(const GURL& url, content::ThreeDAPIType requester);
|
| - virtual ~ThreeDAPIInfoBarDelegate();
|
| -
|
| - // ConfirmInfoBarDelegate:
|
| - virtual bool EqualsDelegate(
|
| - infobars::InfoBarDelegate* delegate) const OVERRIDE;
|
| - virtual int GetIconID() const OVERRIDE;
|
| - virtual base::string16 GetMessageText() const OVERRIDE;
|
| - virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
|
| - virtual bool Accept() OVERRIDE;
|
| - virtual bool Cancel() OVERRIDE;
|
| - virtual base::string16 GetLinkText() const OVERRIDE;
|
| - virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
|
| -
|
| - GURL url_;
|
| - content::ThreeDAPIType requester_;
|
| - // Basically indicates whether the infobar was displayed at all, or
|
| - // was a temporary instance thrown away by the InfobarService.
|
| - mutable bool message_text_queried_;
|
| - bool action_taken_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ThreeDAPIInfoBarDelegate);
|
| -};
|
| -
|
| -// static
|
| -void ThreeDAPIInfoBarDelegate::Create(InfoBarService* infobar_service,
|
| - const GURL& url,
|
| - content::ThreeDAPIType requester) {
|
| - if (!infobar_service)
|
| - return; // NULL for apps.
|
| - infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar(
|
| - scoped_ptr<ConfirmInfoBarDelegate>(
|
| - new ThreeDAPIInfoBarDelegate(url, requester))));
|
| -}
|
| -
|
| -ThreeDAPIInfoBarDelegate::ThreeDAPIInfoBarDelegate(
|
| - const GURL& url,
|
| - content::ThreeDAPIType requester)
|
| - : ConfirmInfoBarDelegate(),
|
| - url_(url),
|
| - requester_(requester),
|
| - message_text_queried_(false),
|
| - action_taken_(false) {
|
| -}
|
| -
|
| -ThreeDAPIInfoBarDelegate::~ThreeDAPIInfoBarDelegate() {
|
| - if (message_text_queried_ && !action_taken_) {
|
| - UMA_HISTOGRAM_ENUMERATION("GPU.ThreeDAPIInfoBarDismissal",
|
| - CLOSED_WITHOUT_ACTION, DISMISSAL_MAX);
|
| - }
|
| -}
|
| -
|
| -bool ThreeDAPIInfoBarDelegate::EqualsDelegate(
|
| - infobars::InfoBarDelegate* delegate) const {
|
| - // For the time being, if a given web page is actually using both
|
| - // WebGL and Pepper 3D and both APIs are blocked, just leave the
|
| - // first infobar up. If the user selects "try again", both APIs will
|
| - // be unblocked and the web page reload will succeed.
|
| - return delegate->GetIconID() == GetIconID();
|
| -}
|
| -
|
| -int ThreeDAPIInfoBarDelegate::GetIconID() const {
|
| - return IDR_INFOBAR_3D_BLOCKED;
|
| -}
|
| -
|
| -base::string16 ThreeDAPIInfoBarDelegate::GetMessageText() const {
|
| - message_text_queried_ = true;
|
| -
|
| - base::string16 api_name;
|
| - switch (requester_) {
|
| - case content::THREE_D_API_TYPE_WEBGL:
|
| - api_name = l10n_util::GetStringUTF16(IDS_3D_APIS_WEBGL_NAME);
|
| - break;
|
| - case content::THREE_D_API_TYPE_PEPPER_3D:
|
| - api_name = l10n_util::GetStringUTF16(IDS_3D_APIS_PEPPER_3D_NAME);
|
| - break;
|
| - }
|
| -
|
| - return l10n_util::GetStringFUTF16(IDS_3D_APIS_BLOCKED_TEXT,
|
| - api_name);
|
| -}
|
| -
|
| -base::string16 ThreeDAPIInfoBarDelegate::GetButtonLabel(
|
| - InfoBarButton button) const {
|
| - return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
|
| - IDS_3D_APIS_BLOCKED_OK_BUTTON_LABEL :
|
| - IDS_3D_APIS_BLOCKED_TRY_AGAIN_BUTTON_LABEL);
|
| -}
|
| -
|
| -bool ThreeDAPIInfoBarDelegate::Accept() {
|
| - action_taken_ = true;
|
| - UMA_HISTOGRAM_ENUMERATION("GPU.ThreeDAPIInfoBarDismissal", IGNORED,
|
| - DISMISSAL_MAX);
|
| - return true;
|
| -}
|
| -
|
| -bool ThreeDAPIInfoBarDelegate::Cancel() {
|
| - action_taken_ = true;
|
| - UMA_HISTOGRAM_ENUMERATION("GPU.ThreeDAPIInfoBarDismissal", RELOADED,
|
| - DISMISSAL_MAX);
|
| - content::GpuDataManager::GetInstance()->UnblockDomainFrom3DAPIs(url_);
|
| - InfoBarService::WebContentsFromInfoBar(infobar())->GetController().Reload(
|
| - true);
|
| - return true;
|
| -}
|
| -
|
| -base::string16 ThreeDAPIInfoBarDelegate::GetLinkText() const {
|
| - return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
|
| -}
|
| -
|
| -bool ThreeDAPIInfoBarDelegate::LinkClicked(WindowOpenDisposition disposition) {
|
| - InfoBarService::WebContentsFromInfoBar(infobar())->OpenURL(
|
| - content::OpenURLParams(
|
| - GURL("https://support.google.com/chrome/?p=ib_webgl"),
|
| - content::Referrer(),
|
| - (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition,
|
| - content::PAGE_TRANSITION_LINK, false));
|
| - return false;
|
| -}
|
| -
|
| -
|
| -// ThreeDAPIObserver ----------------------------------------------------------
|
| -
|
| -ThreeDAPIObserver::ThreeDAPIObserver() {
|
| - content::GpuDataManager::GetInstance()->AddObserver(this);
|
| -}
|
| -
|
| -ThreeDAPIObserver::~ThreeDAPIObserver() {
|
| - content::GpuDataManager::GetInstance()->RemoveObserver(this);
|
| -}
|
| -
|
| -void ThreeDAPIObserver::DidBlock3DAPIs(const GURL& url,
|
| - int render_process_id,
|
| - int render_view_id,
|
| - content::ThreeDAPIType requester) {
|
| - content::WebContents* web_contents = tab_util::GetWebContentsByID(
|
| - render_process_id, render_view_id);
|
| - if (!web_contents)
|
| - return;
|
| - ThreeDAPIInfoBarDelegate::Create(
|
| - InfoBarService::FromWebContents(web_contents), url, requester);
|
| -}
|
|
|