| Index: chrome/browser/managed_mode/managed_mode_interstitial.cc
|
| diff --git a/chrome/browser/managed_mode/managed_mode_interstitial.cc b/chrome/browser/managed_mode/managed_mode_interstitial.cc
|
| deleted file mode 100644
|
| index 0aa1c7035ac4c0eb3f4c9c9bf68e99f03565e060..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/managed_mode/managed_mode_interstitial.cc
|
| +++ /dev/null
|
| @@ -1,234 +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/managed_mode/managed_mode_interstitial.h"
|
| -
|
| -#include "base/i18n/rtl.h"
|
| -#include "base/metrics/histogram.h"
|
| -#include "base/prefs/pref_service.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/infobars/infobar_service.h"
|
| -#include "chrome/browser/managed_mode/managed_user_service.h"
|
| -#include "chrome/browser/managed_mode/managed_user_service_factory.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "components/infobars/core/infobar.h"
|
| -#include "components/infobars/core/infobar_delegate.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/interstitial_page.h"
|
| -#include "content/public/browser/navigation_controller.h"
|
| -#include "content/public/browser/navigation_details.h"
|
| -#include "content/public/browser/navigation_entry.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "content/public/browser/web_ui.h"
|
| -#include "grit/browser_resources.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "net/base/net_util.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/base/webui/jstemplate_builder.h"
|
| -#include "ui/base/webui/web_ui_util.h"
|
| -
|
| -using content::BrowserThread;
|
| -
|
| -// static
|
| -void ManagedModeInterstitial::Show(content::WebContents* web_contents,
|
| - const GURL& url,
|
| - const base::Callback<void(bool)>& callback) {
|
| - ManagedModeInterstitial* interstitial =
|
| - new ManagedModeInterstitial(web_contents, url, callback);
|
| -
|
| - // If Init() does not complete fully, immediately delete the interstitial.
|
| - if (!interstitial->Init())
|
| - delete interstitial;
|
| - // Otherwise |interstitial_page_| is responsible for deleting it.
|
| -}
|
| -
|
| -ManagedModeInterstitial::ManagedModeInterstitial(
|
| - content::WebContents* web_contents,
|
| - const GURL& url,
|
| - const base::Callback<void(bool)>& callback)
|
| - : web_contents_(web_contents),
|
| - interstitial_page_(NULL),
|
| - url_(url),
|
| - callback_(callback) {}
|
| -
|
| -ManagedModeInterstitial::~ManagedModeInterstitial() {}
|
| -
|
| -bool ManagedModeInterstitial::Init() {
|
| - if (ShouldProceed()) {
|
| - // It can happen that the site was only allowed very recently and the URL
|
| - // filter on the IO thread had not been updated yet. Proceed with the
|
| - // request without showing the interstitial.
|
| - DispatchContinueRequest(true);
|
| - return false;
|
| - }
|
| -
|
| - InfoBarService* service = InfoBarService::FromWebContents(web_contents_);
|
| - if (service) {
|
| - // Remove all the infobars which are attached to |web_contents_| and for
|
| - // which ShouldExpire() returns true.
|
| - content::LoadCommittedDetails details;
|
| - // |details.is_in_page| is default false, and |details.is_main_frame| is
|
| - // default true. This results in is_navigation_to_different_page() returning
|
| - // true.
|
| - DCHECK(details.is_navigation_to_different_page());
|
| - const content::NavigationController& controller =
|
| - web_contents_->GetController();
|
| - details.entry = controller.GetActiveEntry();
|
| - if (controller.GetLastCommittedEntry()) {
|
| - details.previous_entry_index = controller.GetLastCommittedEntryIndex();
|
| - details.previous_url = controller.GetLastCommittedEntry()->GetURL();
|
| - }
|
| - details.type = content::NAVIGATION_TYPE_NEW_PAGE;
|
| - for (int i = service->infobar_count() - 1; i >= 0; --i) {
|
| - infobars::InfoBar* infobar = service->infobar_at(i);
|
| - if (infobar->delegate()->ShouldExpire(
|
| - InfoBarService::NavigationDetailsFromLoadCommittedDetails(
|
| - details)))
|
| - service->RemoveInfoBar(infobar);
|
| - }
|
| - }
|
| -
|
| - // TODO(bauerb): Extract an observer callback on ManagedUserService for this.
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents_->GetBrowserContext());
|
| - PrefService* prefs = profile->GetPrefs();
|
| - pref_change_registrar_.Init(prefs);
|
| - pref_change_registrar_.Add(
|
| - prefs::kDefaultSupervisedUserFilteringBehavior,
|
| - base::Bind(&ManagedModeInterstitial::OnFilteringPrefsChanged,
|
| - base::Unretained(this)));
|
| - pref_change_registrar_.Add(
|
| - prefs::kSupervisedUserManualHosts,
|
| - base::Bind(&ManagedModeInterstitial::OnFilteringPrefsChanged,
|
| - base::Unretained(this)));
|
| - pref_change_registrar_.Add(
|
| - prefs::kSupervisedUserManualURLs,
|
| - base::Bind(&ManagedModeInterstitial::OnFilteringPrefsChanged,
|
| - base::Unretained(this)));
|
| -
|
| - languages_ = prefs->GetString(prefs::kAcceptLanguages);
|
| - interstitial_page_ =
|
| - content::InterstitialPage::Create(web_contents_, true, url_, this);
|
| - interstitial_page_->Show();
|
| -
|
| - return true;
|
| -}
|
| -
|
| -std::string ManagedModeInterstitial::GetHTMLContents() {
|
| - base::DictionaryValue strings;
|
| - strings.SetString("blockPageTitle",
|
| - l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_TITLE));
|
| -
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents_->GetBrowserContext());
|
| - ManagedUserService* managed_user_service =
|
| - ManagedUserServiceFactory::GetForProfile(profile);
|
| -
|
| - bool allow_access_requests = managed_user_service->AccessRequestsEnabled();
|
| - strings.SetBoolean("allowAccessRequests", allow_access_requests);
|
| -
|
| - base::string16 custodian =
|
| - base::UTF8ToUTF16(managed_user_service->GetCustodianName());
|
| - strings.SetString(
|
| - "blockPageMessage",
|
| - allow_access_requests
|
| - ? l10n_util::GetStringFUTF16(IDS_BLOCK_INTERSTITIAL_MESSAGE,
|
| - custodian)
|
| - : l10n_util::GetStringUTF16(
|
| - IDS_BLOCK_INTERSTITIAL_MESSAGE_ACCESS_REQUESTS_DISABLED));
|
| -
|
| - strings.SetString("backButton", l10n_util::GetStringUTF16(IDS_BACK_BUTTON));
|
| - strings.SetString(
|
| - "requestAccessButton",
|
| - l10n_util::GetStringUTF16(IDS_BLOCK_INTERSTITIAL_REQUEST_ACCESS_BUTTON));
|
| -
|
| - strings.SetString(
|
| - "requestSentMessage",
|
| - l10n_util::GetStringFUTF16(IDS_BLOCK_INTERSTITIAL_REQUEST_SENT_MESSAGE,
|
| - custodian));
|
| -
|
| - webui::SetFontAndTextDirection(&strings);
|
| -
|
| - base::StringPiece html(ResourceBundle::GetSharedInstance().GetRawDataResource(
|
| - IDR_MANAGED_MODE_BLOCK_INTERSTITIAL_HTML));
|
| -
|
| - webui::UseVersion2 version;
|
| - return webui::GetI18nTemplateHtml(html, &strings);
|
| -}
|
| -
|
| -void ManagedModeInterstitial::CommandReceived(const std::string& command) {
|
| - // For use in histograms.
|
| - enum Commands {
|
| - PREVIEW,
|
| - BACK,
|
| - NTP,
|
| - ACCESS_REQUEST,
|
| - HISTOGRAM_BOUNDING_VALUE
|
| - };
|
| -
|
| - if (command == "\"back\"") {
|
| - UMA_HISTOGRAM_ENUMERATION("ManagedMode.BlockingInterstitialCommand",
|
| - BACK,
|
| - HISTOGRAM_BOUNDING_VALUE);
|
| - interstitial_page_->DontProceed();
|
| - return;
|
| - }
|
| -
|
| - if (command == "\"request\"") {
|
| - UMA_HISTOGRAM_ENUMERATION("ManagedMode.BlockingInterstitialCommand",
|
| - ACCESS_REQUEST,
|
| - HISTOGRAM_BOUNDING_VALUE);
|
| -
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents_->GetBrowserContext());
|
| - ManagedUserService* managed_user_service =
|
| - ManagedUserServiceFactory::GetForProfile(profile);
|
| - managed_user_service->AddAccessRequest(url_);
|
| - DVLOG(1) << "Sent access request for " << url_.spec();
|
| -
|
| - return;
|
| - }
|
| -
|
| - NOTREACHED();
|
| -}
|
| -
|
| -void ManagedModeInterstitial::OnProceed() {
|
| - // CHECK instead of DCHECK as defense in depth in case we'd accidentally
|
| - // proceed on a blocked page.
|
| - CHECK(ShouldProceed());
|
| - DispatchContinueRequest(true);
|
| -}
|
| -
|
| -void ManagedModeInterstitial::OnDontProceed() {
|
| - DispatchContinueRequest(false);
|
| -}
|
| -
|
| -bool ManagedModeInterstitial::ShouldProceed() {
|
| - Profile* profile =
|
| - Profile::FromBrowserContext(web_contents_->GetBrowserContext());
|
| - ManagedUserService* managed_user_service =
|
| - ManagedUserServiceFactory::GetForProfile(profile);
|
| - ManagedModeURLFilter* url_filter =
|
| - managed_user_service->GetURLFilterForUIThread();
|
| - return url_filter->GetFilteringBehaviorForURL(url_) !=
|
| - ManagedModeURLFilter::BLOCK;
|
| -}
|
| -
|
| -void ManagedModeInterstitial::OnFilteringPrefsChanged() {
|
| - if (ShouldProceed())
|
| - interstitial_page_->Proceed();
|
| -}
|
| -
|
| -void ManagedModeInterstitial::DispatchContinueRequest(bool continue_request) {
|
| - // If there is no history entry to go back to, close the tab instead.
|
| - int nav_entry_count = web_contents_->GetController().GetEntryCount();
|
| - if (!continue_request && nav_entry_count == 0)
|
| - web_contents_->Close();
|
| -
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO, FROM_HERE, base::Bind(callback_, continue_request));
|
| -}
|
|
|