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

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 23455047: InstantExtended: Send search URLs to renderers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More browsertest fixes Created 7 years, 3 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/renderer/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index b466ccb1b211cc6bf4f689435c39ac47f181c554..067d87d1ef044bead3eb472256792e505dc10010 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -59,6 +59,7 @@
#include "chrome/renderer/printing/print_web_view_helper.h"
#include "chrome/renderer/safe_browsing/malware_dom_details.h"
#include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h"
+#include "chrome/renderer/searchbox/search_bouncer.h"
#include "chrome/renderer/searchbox/searchbox.h"
#include "chrome/renderer/searchbox/searchbox_extension.h"
#include "chrome/renderer/tts_dispatcher.h"
@@ -231,15 +232,25 @@ ChromeContentRendererClient::~ChromeContentRendererClient() {
}
void ChromeContentRendererClient::RenderThreadStarted() {
+ RenderThread* thread = RenderThread::Get();
+
chrome_observer_.reset(new ChromeRenderProcessObserver(this));
- extension_dispatcher_.reset(new extensions::Dispatcher());
+ // ChromeRenderViewTest::SetUp() creates its own ExtensionDispatcher and
+ // injects it using SetExtensionDispatcher(). Don't overwrite it.
+ if (!extension_dispatcher_)
+ extension_dispatcher_.reset(new extensions::Dispatcher());
permissions_policy_delegate_.reset(
new extensions::RendererPermissionsPolicyDelegate(
extension_dispatcher_.get()));
prescient_networking_dispatcher_.reset(new PrescientNetworkingDispatcher());
net_predictor_.reset(new RendererNetPredictor());
#if defined(ENABLE_SPELLCHECK)
- spellcheck_.reset(new SpellCheck());
+ // ChromeRenderViewTest::SetUp() creates a Spellcheck and injects it using
+ // SetSpellcheck(). Don't overwrite it.
+ if (!spellcheck_) {
+ spellcheck_.reset(new SpellCheck());
+ thread->AddObserver(spellcheck_.get());
+ }
#endif
visited_link_slave_.reset(new visitedlink::VisitedLinkSlave());
#if defined(FULL_SAFE_BROWSING)
@@ -250,19 +261,16 @@ void ChromeContentRendererClient::RenderThreadStarted() {
webrtc_logging_message_filter_ = new WebRtcLoggingMessageFilter(
content::RenderThread::Get()->GetIOMessageLoopProxy());
#endif
-
- RenderThread* thread = RenderThread::Get();
+ search_bouncer_.reset(new SearchBouncer());
thread->AddObserver(chrome_observer_.get());
thread->AddObserver(extension_dispatcher_.get());
#if defined(FULL_SAFE_BROWSING)
thread->AddObserver(phishing_classifier_.get());
#endif
-#if defined(ENABLE_SPELLCHECK)
- thread->AddObserver(spellcheck_.get());
-#endif
thread->AddObserver(visited_link_slave_.get());
thread->AddObserver(prerender_dispatcher_.get());
+ thread->AddObserver(search_bouncer_.get());
#if defined(ENABLE_WEBRTC)
thread->AddFilter(webrtc_logging_message_filter_.get());
@@ -861,6 +869,11 @@ bool ChromeContentRendererClient::HasErrorPage(int http_status_code,
return true;
}
+bool ChromeContentRendererClient::ShouldSuppressErrorPage(const GURL& url) {
+ // Do not flash an error page if the Instant new tab page fails to load.
+ return search_bouncer_.get() && search_bouncer_->IsNewTabPage(url);
+}
+
void ChromeContentRendererClient::GetNavigationErrorStrings(
WebKit::WebFrame* frame,
const WebKit::WebURLRequest& failed_request,
@@ -942,8 +955,11 @@ bool ChromeContentRendererClient::ShouldFork(WebFrame* frame,
// If this is the Instant process, fork all navigations originating from the
// renderer. The destination page will then be bucketed back to this Instant
- // process if it is an Instant url, or to another process if not.
- if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kInstantProcess)) {
+ // process if it is an Instant url, or to another process if not. Conversely,
+ // fork if this is a non-Instant process navigating to an Instant url, so that
+ // such navigations can also be bucketed into an Instant renderer.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kInstantProcess) ||
+ (search_bouncer_.get() && search_bouncer_->ShouldFork(url))) {
*send_referrer = true;
return true;
}
« no previous file with comments | « chrome/renderer/chrome_content_renderer_client.h ('k') | chrome/renderer/chrome_content_renderer_client_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698