| 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 // Prerendering is only allowed on top-level frames - but this should |
| 650 // only be called on top-level, content-intiated cases. |
| 651 DCHECK(!frame->parent()); |
| 652 DCHECK(is_content_initiated); |
| 653 |
| 654 // Prerendered URLs go back to the browser. It's possible that the |
| 655 // prerendered page will be destroyed by the time the browser handles the |
| 656 // OpenURL IPC - in that case, a Navigation is done. |
| 657 if (prerender_dispatcher_->IsPrerenderURL(url)) |
| 658 return true; |
| 659 |
| 646 const ExtensionSet* extensions = extension_dispatcher_->extensions(); | 660 const ExtensionSet* extensions = extension_dispatcher_->extensions(); |
| 647 | 661 |
| 648 // Determine if the new URL is an extension (excluding bookmark apps). | 662 // Determine if the new URL is an extension (excluding bookmark apps). |
| 649 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( | 663 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( |
| 650 *extensions, ExtensionURLInfo(url)); | 664 *extensions, ExtensionURLInfo(url)); |
| 651 bool is_extension_url = !!new_url_extension; | 665 bool is_extension_url = !!new_url_extension; |
| 652 | 666 |
| 653 // If the navigation would cross an app extent boundary, we also need | 667 // If the navigation would cross an app extent boundary, we also need |
| 654 // to defer to the browser to ensure process isolation. | 668 // to defer to the browser to ensure process isolation. |
| 655 // TODO(erikkay) This is happening inside of a check to is_content_initiated | 669 // 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) { | 870 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { |
| 857 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); | 871 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); |
| 858 } | 872 } |
| 859 | 873 |
| 860 bool ChromeContentRendererClient::AllowSocketAPI(const GURL& url) { | 874 bool ChromeContentRendererClient::AllowSocketAPI(const GURL& url) { |
| 861 return allowed_socket_origins_.find(url.host()) != | 875 return allowed_socket_origins_.find(url.host()) != |
| 862 allowed_socket_origins_.end(); | 876 allowed_socket_origins_.end(); |
| 863 } | 877 } |
| 864 | 878 |
| 865 } // namespace chrome | 879 } // namespace chrome |
| OLD | NEW |