OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/renderer/chrome_content_renderer_client.h" | 5 #include "chrome/renderer/chrome_content_renderer_client.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
42 #include "chrome/renderer/extensions/miscellaneous_bindings.h" | 42 #include "chrome/renderer/extensions/miscellaneous_bindings.h" |
43 #include "chrome/renderer/extensions/schema_generated_bindings.h" | 43 #include "chrome/renderer/extensions/schema_generated_bindings.h" |
44 #include "chrome/renderer/external_extension.h" | 44 #include "chrome/renderer/external_extension.h" |
45 #include "chrome/renderer/loadtimes_extension_bindings.h" | 45 #include "chrome/renderer/loadtimes_extension_bindings.h" |
46 #include "chrome/renderer/localized_error.h" | 46 #include "chrome/renderer/localized_error.h" |
47 #include "chrome/renderer/net/renderer_net_predictor.h" | 47 #include "chrome/renderer/net/renderer_net_predictor.h" |
48 #include "chrome/renderer/page_click_tracker.h" | 48 #include "chrome/renderer/page_click_tracker.h" |
49 #include "chrome/renderer/page_load_histograms.h" | 49 #include "chrome/renderer/page_load_histograms.h" |
50 #include "chrome/renderer/plugins/plugin_placeholder.h" | 50 #include "chrome/renderer/plugins/plugin_placeholder.h" |
51 #include "chrome/renderer/plugins/plugin_uma.h" | 51 #include "chrome/renderer/plugins/plugin_uma.h" |
52 #include "chrome/renderer/prerender/prerender_dispatcher.h" | |
52 #include "chrome/renderer/prerender/prerender_helper.h" | 53 #include "chrome/renderer/prerender/prerender_helper.h" |
53 #include "chrome/renderer/prerender/prerender_webmediaplayer.h" | 54 #include "chrome/renderer/prerender/prerender_webmediaplayer.h" |
54 #include "chrome/renderer/print_web_view_helper.h" | 55 #include "chrome/renderer/print_web_view_helper.h" |
55 #include "chrome/renderer/renderer_histogram_snapshots.h" | 56 #include "chrome/renderer/renderer_histogram_snapshots.h" |
56 #include "chrome/renderer/safe_browsing/malware_dom_details.h" | 57 #include "chrome/renderer/safe_browsing/malware_dom_details.h" |
57 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" | 58 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" |
58 #include "chrome/renderer/search_extension.h" | 59 #include "chrome/renderer/search_extension.h" |
59 #include "chrome/renderer/searchbox.h" | 60 #include "chrome/renderer/searchbox.h" |
60 #include "chrome/renderer/searchbox_extension.h" | 61 #include "chrome/renderer/searchbox_extension.h" |
61 #include "chrome/renderer/spellchecker/spellcheck.h" | 62 #include "chrome/renderer/spellchecker/spellcheck.h" |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
163 void ChromeContentRendererClient::RenderThreadStarted() { | 164 void ChromeContentRendererClient::RenderThreadStarted() { |
164 chrome_observer_.reset(new ChromeRenderProcessObserver(this)); | 165 chrome_observer_.reset(new ChromeRenderProcessObserver(this)); |
165 extension_dispatcher_.reset(new ExtensionDispatcher()); | 166 extension_dispatcher_.reset(new ExtensionDispatcher()); |
166 histogram_snapshots_.reset(new RendererHistogramSnapshots()); | 167 histogram_snapshots_.reset(new RendererHistogramSnapshots()); |
167 net_predictor_.reset(new RendererNetPredictor()); | 168 net_predictor_.reset(new RendererNetPredictor()); |
168 spellcheck_.reset(new SpellCheck()); | 169 spellcheck_.reset(new SpellCheck()); |
169 visited_link_slave_.reset(new VisitedLinkSlave()); | 170 visited_link_slave_.reset(new VisitedLinkSlave()); |
170 #if defined(ENABLE_SAFE_BROWSING) | 171 #if defined(ENABLE_SAFE_BROWSING) |
171 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create()); | 172 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create()); |
172 #endif | 173 #endif |
174 prerender_dispatcher_.reset(new prerender::PrerenderDispatcher()); | |
173 | 175 |
174 RenderThread* thread = RenderThread::Get(); | 176 RenderThread* thread = RenderThread::Get(); |
175 | 177 |
176 thread->AddObserver(chrome_observer_.get()); | 178 thread->AddObserver(chrome_observer_.get()); |
177 thread->AddObserver(extension_dispatcher_.get()); | 179 thread->AddObserver(extension_dispatcher_.get()); |
178 thread->AddObserver(histogram_snapshots_.get()); | 180 thread->AddObserver(histogram_snapshots_.get()); |
179 #if defined(ENABLE_SAFE_BROWSING) | 181 #if defined(ENABLE_SAFE_BROWSING) |
180 thread->AddObserver(phishing_classifier_.get()); | 182 thread->AddObserver(phishing_classifier_.get()); |
181 #endif | 183 #endif |
182 thread->AddObserver(spellcheck_.get()); | 184 thread->AddObserver(spellcheck_.get()); |
183 thread->AddObserver(visited_link_slave_.get()); | 185 thread->AddObserver(visited_link_slave_.get()); |
186 thread->AddObserver(prerender_dispatcher_.get()); | |
184 | 187 |
185 thread->RegisterExtension(extensions_v8::ExternalExtension::Get()); | 188 thread->RegisterExtension(extensions_v8::ExternalExtension::Get()); |
186 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get()); | 189 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get()); |
187 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get()); | 190 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get()); |
188 v8::Extension* search_extension = extensions_v8::SearchExtension::Get(); | 191 v8::Extension* search_extension = extensions_v8::SearchExtension::Get(); |
189 // search_extension is null if not enabled. | 192 // search_extension is null if not enabled. |
190 if (search_extension) | 193 if (search_extension) |
191 thread->RegisterExtension(search_extension); | 194 thread->RegisterExtension(search_extension); |
192 | 195 |
193 if (CommandLine::ForCurrentProcess()->HasSwitch( | 196 if (CommandLine::ForCurrentProcess()->HasSwitch( |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
636 ChromeV8Context* current_context = | 639 ChromeV8Context* current_context = |
637 extension_dispatcher_->v8_context_set().GetCurrent(); | 640 extension_dispatcher_->v8_context_set().GetCurrent(); |
638 return current_context && !current_context->extension_id().empty(); | 641 return current_context && !current_context->extension_id().empty(); |
639 } | 642 } |
640 | 643 |
641 bool ChromeContentRendererClient::ShouldFork(WebFrame* frame, | 644 bool ChromeContentRendererClient::ShouldFork(WebFrame* frame, |
642 const GURL& url, | 645 const GURL& url, |
643 bool is_content_initiated, | 646 bool is_content_initiated, |
644 bool is_initial_navigation, | 647 bool is_initial_navigation, |
645 bool* send_referrer) { | 648 bool* send_referrer) { |
649 DCHECK(!frame->parent()); | |
650 DCHECK(is_content_initiated); | |
651 | |
652 // If |url| matches one of the prerendered URLs, stop this navigation and try | |
653 // to swap in the prerendered page on the browser process. If the prerendered | |
dominich
2012/02/29 18:32:01
If the prerender swap fails for some reason, will
| |
654 // page no longer exists by the time the OpenURL IPC is handled, a normal | |
655 // navigation is attempted. | |
656 if (prerender_dispatcher_->IsPrerenderURL(url)) | |
657 return true; | |
658 | |
646 const ExtensionSet* extensions = extension_dispatcher_->extensions(); | 659 const ExtensionSet* extensions = extension_dispatcher_->extensions(); |
647 | 660 |
648 // Determine if the new URL is an extension (excluding bookmark apps). | 661 // Determine if the new URL is an extension (excluding bookmark apps). |
649 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( | 662 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( |
650 *extensions, ExtensionURLInfo(url)); | 663 *extensions, ExtensionURLInfo(url)); |
651 bool is_extension_url = !!new_url_extension; | 664 bool is_extension_url = !!new_url_extension; |
652 | 665 |
653 // If the navigation would cross an app extent boundary, we also need | 666 // If the navigation would cross an app extent boundary, we also need |
654 // to defer to the browser to ensure process isolation. | 667 // to defer to the browser to ensure process isolation. |
655 // TODO(erikkay) This is happening inside of a check to is_content_initiated | 668 // TODO(erikkay) This is happening inside of a check to is_content_initiated |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
856 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { | 869 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { |
857 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); | 870 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); |
858 } | 871 } |
859 | 872 |
860 bool ChromeContentRendererClient::AllowSocketAPI(const GURL& url) { | 873 bool ChromeContentRendererClient::AllowSocketAPI(const GURL& url) { |
861 return allowed_socket_origins_.find(url.host()) != | 874 return allowed_socket_origins_.find(url.host()) != |
862 allowed_socket_origins_.end(); | 875 allowed_socket_origins_.end(); |
863 } | 876 } |
864 | 877 |
865 } // namespace chrome | 878 } // namespace chrome |
OLD | NEW |