Index: chrome/browser/managed_mode/managed_mode_navigation_observer.cc |
diff --git a/chrome/browser/managed_mode/managed_mode_navigation_observer.cc b/chrome/browser/managed_mode/managed_mode_navigation_observer.cc |
deleted file mode 100644 |
index cec59589f7962600f8a1a1f7a8402b4baa532ca7..0000000000000000000000000000000000000000 |
--- a/chrome/browser/managed_mode/managed_mode_navigation_observer.cc |
+++ /dev/null |
@@ -1,263 +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_navigation_observer.h" |
- |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/metrics/histogram.h" |
-#include "base/strings/string_util.h" |
-#include "chrome/browser/history/history_service.h" |
-#include "chrome/browser/history/history_service_factory.h" |
-#include "chrome/browser/history/history_types.h" |
-#include "chrome/browser/infobars/infobar_service.h" |
-#include "chrome/browser/managed_mode/managed_mode_interstitial.h" |
-#include "chrome/browser/managed_mode/managed_mode_resource_throttle.h" |
-#include "chrome/browser/managed_mode/managed_mode_url_filter.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/browser/tab_contents/tab_util.h" |
-#include "components/infobars/core/confirm_infobar_delegate.h" |
-#include "components/infobars/core/infobar.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/navigation_entry.h" |
-#include "content/public/browser/render_process_host.h" |
-#include "content/public/browser/render_view_host.h" |
-#include "content/public/browser/user_metrics.h" |
-#include "grit/generated_resources.h" |
-#include "ui/base/l10n/l10n_util.h" |
- |
-#if !defined(OS_ANDROID) |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_commands.h" |
-#include "chrome/browser/ui/browser_finder.h" |
-#include "chrome/browser/ui/browser_list.h" |
-#include "chrome/browser/ui/host_desktop.h" |
-#include "chrome/browser/ui/tabs/tab_strip_model.h" |
-#endif |
- |
-using base::Time; |
-using content::NavigationEntry; |
- |
-namespace { |
- |
- |
-// Helpers -------------------------------------------------------------------- |
- |
-#if !defined(OS_ANDROID) |
-// TODO(bauerb): Get rid of the platform-specific #ifdef here. |
-// http://crbug.com/313377 |
-void GoBackToSafety(content::WebContents* web_contents) { |
- // For now, just go back one page (the user didn't retreat from that page, |
- // so it should be okay). |
- content::NavigationController* controller = |
- &web_contents->GetController(); |
- if (controller->CanGoBack()) { |
- controller->GoBack(); |
- return; |
- } |
- |
- // If we can't go back (because we opened a new tab), try to close the tab. |
- // If this is the last tab on this desktop, open a new window. |
- chrome::HostDesktopType host_desktop_type = |
- chrome::GetHostDesktopTypeForNativeView(web_contents->GetNativeView()); |
- const BrowserList* browser_list = BrowserList::GetInstance(host_desktop_type); |
- if (browser_list->size() == 1) { |
- Browser* browser = browser_list->get(0); |
- DCHECK(browser == chrome::FindBrowserWithWebContents(web_contents)); |
- if (browser->tab_strip_model()->count() == 1) |
- chrome::NewEmptyWindow(browser->profile(), browser->host_desktop_type()); |
- } |
- |
- web_contents->GetDelegate()->CloseContents(web_contents); |
-} |
-#endif |
- |
-// ManagedModeWarningInfoBarDelegate ------------------------------------------ |
- |
-class ManagedModeWarningInfoBarDelegate : public ConfirmInfoBarDelegate { |
- public: |
- // Creates a managed mode warning infobar and delegate and adds the infobar to |
- // |infobar_service|. Returns the infobar if it was successfully added. |
- static infobars::InfoBar* Create(InfoBarService* infobar_service); |
- |
- private: |
- ManagedModeWarningInfoBarDelegate(); |
- virtual ~ManagedModeWarningInfoBarDelegate(); |
- |
- // ConfirmInfoBarDelegate: |
- virtual bool ShouldExpire(const NavigationDetails& details) const OVERRIDE; |
- virtual void InfoBarDismissed() OVERRIDE; |
- virtual base::string16 GetMessageText() const OVERRIDE; |
- virtual int GetButtons() const OVERRIDE; |
- virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE; |
- virtual bool Accept() OVERRIDE; |
- |
- DISALLOW_COPY_AND_ASSIGN(ManagedModeWarningInfoBarDelegate); |
-}; |
- |
-// static |
-infobars::InfoBar* ManagedModeWarningInfoBarDelegate::Create( |
- InfoBarService* infobar_service) { |
- return infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar( |
- scoped_ptr<ConfirmInfoBarDelegate>( |
- new ManagedModeWarningInfoBarDelegate()))); |
-} |
- |
-ManagedModeWarningInfoBarDelegate::ManagedModeWarningInfoBarDelegate() |
- : ConfirmInfoBarDelegate() { |
-} |
- |
-ManagedModeWarningInfoBarDelegate::~ManagedModeWarningInfoBarDelegate() { |
-} |
- |
-bool ManagedModeWarningInfoBarDelegate::ShouldExpire( |
- const NavigationDetails& details) const { |
- // ManagedModeNavigationObserver removes us below. |
- return false; |
-} |
- |
-void ManagedModeWarningInfoBarDelegate::InfoBarDismissed() { |
- content::WebContents* web_contents = |
- InfoBarService::WebContentsFromInfoBar(infobar()); |
- ManagedModeNavigationObserver::FromWebContents( |
- web_contents)->WarnInfoBarDismissed(); |
-} |
- |
-base::string16 ManagedModeWarningInfoBarDelegate::GetMessageText() const { |
- return l10n_util::GetStringUTF16(IDS_MANAGED_USER_WARN_INFOBAR_MESSAGE); |
-} |
- |
-int ManagedModeWarningInfoBarDelegate::GetButtons() const { |
- return BUTTON_OK; |
-} |
- |
-base::string16 ManagedModeWarningInfoBarDelegate::GetButtonLabel( |
- InfoBarButton button) const { |
- DCHECK_EQ(BUTTON_OK, button); |
- return l10n_util::GetStringUTF16(IDS_MANAGED_USER_WARN_INFOBAR_GO_BACK); |
-} |
- |
-bool ManagedModeWarningInfoBarDelegate::Accept() { |
-#if defined(OS_ANDROID) |
- // TODO(bauerb): Get rid of the platform-specific #ifdef here. |
- // http://crbug.com/313377 |
- NOTIMPLEMENTED(); |
-#else |
- GoBackToSafety(InfoBarService::WebContentsFromInfoBar(infobar())); |
-#endif |
- |
- return false; |
-} |
- |
- |
-} // namespace |
- |
-// ManagedModeNavigationObserver ---------------------------------------------- |
- |
-DEFINE_WEB_CONTENTS_USER_DATA_KEY(ManagedModeNavigationObserver); |
- |
-ManagedModeNavigationObserver::~ManagedModeNavigationObserver() { |
-} |
- |
-ManagedModeNavigationObserver::ManagedModeNavigationObserver( |
- content::WebContents* web_contents) |
- : WebContentsObserver(web_contents), |
- warn_infobar_(NULL) { |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
- managed_user_service_ = ManagedUserServiceFactory::GetForProfile(profile); |
- url_filter_ = managed_user_service_->GetURLFilterForUIThread(); |
-} |
- |
-void ManagedModeNavigationObserver::WarnInfoBarDismissed() { |
- DCHECK(warn_infobar_); |
- warn_infobar_ = NULL; |
-} |
- |
-void ManagedModeNavigationObserver::ProvisionalChangeToMainFrameUrl( |
- const GURL& url, |
- content::RenderFrameHost* render_frame_host) { |
- ManagedModeURLFilter::FilteringBehavior behavior = |
- url_filter_->GetFilteringBehaviorForURL(url); |
- |
- if (behavior == ManagedModeURLFilter::WARN || !warn_infobar_) |
- return; |
- |
- // If we shouldn't have a warn infobar remove it here. |
- InfoBarService::FromWebContents(web_contents())->RemoveInfoBar(warn_infobar_); |
- warn_infobar_ = NULL; |
-} |
- |
-void ManagedModeNavigationObserver::DidCommitProvisionalLoadForFrame( |
- int64 frame_id, |
- const base::string16& frame_unique_name, |
- bool is_main_frame, |
- const GURL& url, |
- content::PageTransition transition_type, |
- content::RenderViewHost* render_view_host) { |
- if (!is_main_frame) |
- return; |
- |
- DVLOG(1) << "DidCommitProvisionalLoadForFrame " << url.spec(); |
- ManagedModeURLFilter::FilteringBehavior behavior = |
- url_filter_->GetFilteringBehaviorForURL(url); |
- |
- if (behavior == ManagedModeURLFilter::WARN && !warn_infobar_) { |
- warn_infobar_ = ManagedModeWarningInfoBarDelegate::Create( |
- InfoBarService::FromWebContents(web_contents())); |
- } |
-} |
- |
-// static |
-void ManagedModeNavigationObserver::OnRequestBlocked( |
- int render_process_host_id, |
- int render_view_id, |
- const GURL& url, |
- const base::Callback<void(bool)>& callback) { |
- content::WebContents* web_contents = |
- tab_util::GetWebContentsByID(render_process_host_id, render_view_id); |
- if (!web_contents) { |
- content::BrowserThread::PostTask( |
- content::BrowserThread::IO, FROM_HERE, base::Bind(callback, false)); |
- return; |
- } |
- |
- ManagedModeNavigationObserver* navigation_observer = |
- ManagedModeNavigationObserver::FromWebContents(web_contents); |
- if (navigation_observer) |
- navigation_observer->OnRequestBlockedInternal(url); |
- |
- // Show the interstitial. |
- ManagedModeInterstitial::Show(web_contents, url, callback); |
-} |
- |
-void ManagedModeNavigationObserver::OnRequestBlockedInternal(const GURL& url) { |
- Time timestamp = Time::Now(); // TODO(bauerb): Use SaneTime when available. |
- // Create a history entry for the attempt and mark it as such. |
- history::HistoryAddPageArgs add_page_args( |
- url, timestamp, web_contents(), 0, |
- url, history::RedirectList(), |
- content::PAGE_TRANSITION_BLOCKED, history::SOURCE_BROWSED, |
- false); |
- |
- // Add the entry to the history database. |
- Profile* profile = |
- Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
- HistoryService* history_service = |
- HistoryServiceFactory::GetForProfile(profile, Profile::IMPLICIT_ACCESS); |
- |
- // |history_service| is null if saving history is disabled. |
- if (history_service) |
- history_service->AddPage(add_page_args); |
- |
- scoped_ptr<NavigationEntry> entry(NavigationEntry::Create()); |
- entry->SetVirtualURL(url); |
- entry->SetTimestamp(timestamp); |
- blocked_navigations_.push_back(entry.release()); |
- ManagedUserService* managed_user_service = |
- ManagedUserServiceFactory::GetForProfile(profile); |
- managed_user_service->DidBlockNavigation(web_contents()); |
-} |