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

Unified Diff: chrome/browser/ui/search/instant_ntp_prerenderer.cc

Issue 137993020: (Try 2) InstantExtended: remove dead code related to the non-cacheable NTP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable InstantPolicyTests Created 6 years, 11 months 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
Index: chrome/browser/ui/search/instant_ntp_prerenderer.cc
diff --git a/chrome/browser/ui/search/instant_ntp_prerenderer.cc b/chrome/browser/ui/search/instant_ntp_prerenderer.cc
deleted file mode 100644
index ee698fb87783b4bc1d44b2fb532368a1387e846c..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/search/instant_ntp_prerenderer.cc
+++ /dev/null
@@ -1,269 +0,0 @@
-// Copyright 2013 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/ui/search/instant_ntp_prerenderer.h"
-
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "base/prefs/pref_service.h"
-#include "build/build_config.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/content_settings/content_settings_provider.h"
-#include "chrome/browser/content_settings/host_content_settings_map.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search/instant_service.h"
-#include "chrome/browser/search/instant_service_factory.h"
-#include "chrome/browser/search/search.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/host_desktop.h"
-#include "chrome/browser/ui/search/instant_ntp.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/common/content_settings.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/search_urls.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/render_process_host.h"
-#include "content/public/browser/web_contents.h"
-#include "net/base/network_change_notifier.h"
-
-namespace {
-
-void DeleteNTPSoon(scoped_ptr<InstantNTP> ntp) {
- if (!ntp)
- return;
-
- if (ntp->contents()) {
- base::MessageLoop::current()->DeleteSoon(
- FROM_HERE, ntp->ReleaseContents().release());
- }
- base::MessageLoop::current()->DeleteSoon(FROM_HERE, ntp.release());
-}
-
-} // namespace
-
-
-InstantNTPPrerenderer::InstantNTPPrerenderer(Profile* profile,
- InstantService* instant_service,
- PrefService* prefs)
- : profile_(profile) {
- DCHECK(profile);
-
- // In unit tests, prefs may be NULL.
- if (prefs) {
- profile_pref_registrar_.Init(prefs);
- profile_pref_registrar_.Add(
- prefs::kSearchSuggestEnabled,
- base::Bind(&InstantNTPPrerenderer::ReloadInstantNTP,
- base::Unretained(this)));
- }
- net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
-
- // Allow instant_service to be null for unit tets.
- if (instant_service)
- instant_service->AddObserver(this);
-}
-
-InstantNTPPrerenderer::~InstantNTPPrerenderer() {
- InstantService* instant_service =
- InstantServiceFactory::GetForProfile(profile_);
- if (instant_service)
- instant_service->RemoveObserver(this);
- net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
-}
-
-void InstantNTPPrerenderer::ReloadInstantNTP() {
- ResetNTP(GetInstantURL());
-}
-
-scoped_ptr<content::WebContents> InstantNTPPrerenderer::ReleaseNTPContents() {
- if (!profile_ || profile_->IsOffTheRecord() ||
- !chrome::ShouldShowInstantNTP())
- return scoped_ptr<content::WebContents>();
-
- if (ShouldSwitchToLocalNTP())
- ResetNTP(GetLocalInstantURL());
-
- scoped_ptr<content::WebContents> ntp_contents = ntp_->ReleaseContents();
-
- // Preload a new InstantNTP.
- ReloadInstantNTP();
- return ntp_contents.Pass();
-}
-
-content::WebContents* InstantNTPPrerenderer::GetNTPContents() const {
- return ntp() ? ntp()->contents() : NULL;
-}
-
-void InstantNTPPrerenderer::DeleteNTPContents() {
- if (ntp_)
- ntp_.reset();
-}
-
-void InstantNTPPrerenderer::RenderProcessGone() {
- DeleteNTPSoon(ntp_.Pass());
-}
-
-void InstantNTPPrerenderer::LoadCompletedMainFrame() {
- if (!ntp_ || ntp_->supports_instant())
- return;
-
- content::WebContents* ntp_contents = ntp_->contents();
- DCHECK(ntp_contents);
-
- InstantService* instant_service =
- InstantServiceFactory::GetForProfile(profile());
- if (instant_service &&
- instant_service->IsInstantProcess(
- ntp_contents->GetRenderProcessHost()->GetID())) {
- return;
- }
- InstantSupportDetermined(ntp_contents, false);
-}
-
-std::string InstantNTPPrerenderer::GetLocalInstantURL() const {
- return chrome::GetLocalInstantURL(profile_).spec();
-}
-
-std::string InstantNTPPrerenderer::GetInstantURL() const {
- if (net::NetworkChangeNotifier::IsOffline())
- return GetLocalInstantURL();
-
- // TODO(kmadhusu): Remove start margin param from chrome::GetInstantURL().
- const GURL instant_url = chrome::GetInstantURL(profile_,
- chrome::kDisableStartMargin,
- false);
- if (!instant_url.is_valid())
- return GetLocalInstantURL();
-
- return instant_url.spec();
-}
-
-bool InstantNTPPrerenderer::IsJavascriptEnabled() const {
- GURL instant_url(GetInstantURL());
- GURL origin(instant_url.GetOrigin());
- ContentSetting js_setting = profile_->GetHostContentSettingsMap()->
- GetContentSetting(origin, origin, CONTENT_SETTINGS_TYPE_JAVASCRIPT,
- NO_RESOURCE_IDENTIFIER);
- // Javascript can be disabled either in content settings or via a WebKit
- // preference, so check both. Disabling it through the Settings page affects
- // content settings. I'm not sure how to disable the WebKit preference, but
- // it's theoretically possible some users have it off.
- bool js_content_enabled =
- js_setting == CONTENT_SETTING_DEFAULT ||
- js_setting == CONTENT_SETTING_ALLOW;
- bool js_webkit_enabled = profile_->GetPrefs()->GetBoolean(
- prefs::kWebKitJavascriptEnabled);
- return js_content_enabled && js_webkit_enabled;
-}
-
-bool InstantNTPPrerenderer::InStartup() const {
-#if !defined(OS_ANDROID)
- // TODO(kmadhusu): This is not completely reliable. Find a better way to
- // detect startup time.
- Browser* browser = chrome::FindBrowserWithProfile(profile_,
- chrome::GetActiveDesktop());
- return !browser || !browser->tab_strip_model()->GetActiveWebContents();
-#endif
- return false;
-}
-
-InstantNTP* InstantNTPPrerenderer::ntp() const {
- return ntp_.get();
-}
-
-void InstantNTPPrerenderer::OnNetworkChanged(
- net::NetworkChangeNotifier::ConnectionType type) {
- // Not interested in events conveying change to offline.
- if (type == net::NetworkChangeNotifier::CONNECTION_NONE)
- return;
-
- if (!ntp() || ntp()->IsLocal())
- ReloadInstantNTP();
-}
-
-void InstantNTPPrerenderer::InstantSupportDetermined(
- const content::WebContents* contents,
- bool supports_instant) {
- DCHECK(ntp() && ntp()->contents() == contents);
-
- if (!supports_instant) {
- bool is_local = ntp()->IsLocal();
- DeleteNTPSoon(ntp_.Pass());
- if (!is_local)
- ResetNTP(GetLocalInstantURL());
- }
-
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_INSTANT_NTP_SUPPORT_DETERMINED,
- content::Source<InstantNTPPrerenderer>(this),
- content::NotificationService::NoDetails());
-}
-
-void InstantNTPPrerenderer::InstantPageAboutToNavigateMainFrame(
- const content::WebContents* /* contents */,
- const GURL& /* url */) {
- NOTREACHED();
-}
-
-void InstantNTPPrerenderer::InstantPageLoadFailed(
- content::WebContents* contents) {
- DCHECK(ntp() && ntp()->contents() == contents);
-
- bool is_local = ntp()->IsLocal();
- DeleteNTPSoon(ntp_.Pass());
- if (!is_local)
- ResetNTP(GetLocalInstantURL());
-}
-
-void InstantNTPPrerenderer::ResetNTP(const std::string& instant_url) {
- // Instant NTP is only used in extended mode so we should always have a
- // non-empty URL to use.
- DCHECK(!instant_url.empty());
- if (!chrome::ShouldUseCacheableNTP()) {
- ntp_.reset(new InstantNTP(this, instant_url, profile_));
- ntp_->InitContents(base::Bind(&InstantNTPPrerenderer::ReloadInstantNTP,
- base::Unretained(this)));
- }
-}
-
-bool InstantNTPPrerenderer::PageIsCurrent() const {
- const std::string& instant_url = GetInstantURL();
- if (instant_url.empty() ||
- !search::MatchesOriginAndPath(GURL(ntp()->instant_url()),
- GURL(instant_url)))
- return false;
-
- return ntp()->supports_instant();
-}
-
-bool InstantNTPPrerenderer::ShouldSwitchToLocalNTP() const {
- if (!ntp())
- return true;
-
- // Assume users with Javascript disabled do not want the online experience.
- if (!IsJavascriptEnabled())
- return true;
-
- // Already a local page. Not calling IsLocal() because we want to distinguish
- // between the Google-specific and generic local NTP.
- if (ntp()->instant_url() == GetLocalInstantURL())
- return false;
-
- if (PageIsCurrent())
- return false;
-
- // The preloaded NTP does not support instant yet. If we're not in startup,
- // always fall back to the local NTP. If we are in startup, use the local NTP.
- return !InStartup();
-}
-
-void InstantNTPPrerenderer::DefaultSearchProviderChanged() {
- ReloadInstantNTP();
-}
-
-void InstantNTPPrerenderer::GoogleURLUpdated() {
- ReloadInstantNTP();
-}
« no previous file with comments | « chrome/browser/ui/search/instant_ntp_prerenderer.h ('k') | chrome/browser/ui/search/instant_ntp_prerenderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698