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

Side by Side Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 10391134: Fix memory leak in PrerenderDispatcher. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make chrome_content_renderer_client own the prerendering_support implementation Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "chrome/renderer/page_click_tracker.h" 47 #include "chrome/renderer/page_click_tracker.h"
48 #include "chrome/renderer/page_load_histograms.h" 48 #include "chrome/renderer/page_load_histograms.h"
49 #include "chrome/renderer/pepper/chrome_ppapi_interfaces.h" 49 #include "chrome/renderer/pepper/chrome_ppapi_interfaces.h"
50 #include "chrome/renderer/playback_extension.h" 50 #include "chrome/renderer/playback_extension.h"
51 #include "chrome/renderer/plugins/plugin_placeholder.h" 51 #include "chrome/renderer/plugins/plugin_placeholder.h"
52 #include "chrome/renderer/plugins/plugin_uma.h" 52 #include "chrome/renderer/plugins/plugin_uma.h"
53 #include "chrome/renderer/prerender/prerender_dispatcher.h" 53 #include "chrome/renderer/prerender/prerender_dispatcher.h"
54 #include "chrome/renderer/prerender/prerender_helper.h" 54 #include "chrome/renderer/prerender/prerender_helper.h"
55 #include "chrome/renderer/prerender/prerender_webmediaplayer.h" 55 #include "chrome/renderer/prerender/prerender_webmediaplayer.h"
56 #include "chrome/renderer/prerender/prerenderer_client.h" 56 #include "chrome/renderer/prerender/prerenderer_client.h"
57 #include "chrome/renderer/prerender/prerendering_support.h"
57 #include "chrome/renderer/print_web_view_helper.h" 58 #include "chrome/renderer/print_web_view_helper.h"
58 #include "chrome/renderer/renderer_histogram_snapshots.h" 59 #include "chrome/renderer/renderer_histogram_snapshots.h"
59 #include "chrome/renderer/safe_browsing/malware_dom_details.h" 60 #include "chrome/renderer/safe_browsing/malware_dom_details.h"
60 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" 61 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h"
61 #include "chrome/renderer/search_extension.h" 62 #include "chrome/renderer/search_extension.h"
62 #include "chrome/renderer/searchbox.h" 63 #include "chrome/renderer/searchbox.h"
63 #include "chrome/renderer/searchbox_extension.h" 64 #include "chrome/renderer/searchbox_extension.h"
64 #include "chrome/renderer/spellchecker/spellcheck.h" 65 #include "chrome/renderer/spellchecker/spellcheck.h"
65 #include "chrome/renderer/spellchecker/spellcheck_provider.h" 66 #include "chrome/renderer/spellchecker/spellcheck_provider.h"
66 #include "chrome/renderer/translate_helper.h" 67 #include "chrome/renderer/translate_helper.h"
67 #include "chrome/renderer/visitedlink_slave.h" 68 #include "chrome/renderer/visitedlink_slave.h"
68 #include "content/public/renderer/render_thread.h" 69 #include "content/public/renderer/render_thread.h"
69 #include "content/public/renderer/render_view.h" 70 #include "content/public/renderer/render_view.h"
70 #include "grit/generated_resources.h" 71 #include "grit/generated_resources.h"
71 #include "grit/locale_settings.h" 72 #include "grit/locale_settings.h"
72 #include "grit/renderer_resources.h" 73 #include "grit/renderer_resources.h"
73 #include "ipc/ipc_sync_channel.h" 74 #include "ipc/ipc_sync_channel.h"
74 #include "net/base/net_errors.h" 75 #include "net/base/net_errors.h"
76 #include "third_party/WebKit/Source/Platform/chromium/public/WebPrerenderingSupp ort.h"
75 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" 77 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h"
76 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h" 78 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
77 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" 79 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
78 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
79 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h" 81 #include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
80 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 82 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
81 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h" 83 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h"
82 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" 84 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h"
83 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h" 85 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError. h"
84 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLReques t.h" 86 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLReques t.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 } 142 }
141 143
142 } // namespace 144 } // namespace
143 145
144 namespace chrome { 146 namespace chrome {
145 147
146 ChromeContentRendererClient::ChromeContentRendererClient() { 148 ChromeContentRendererClient::ChromeContentRendererClient() {
147 } 149 }
148 150
149 ChromeContentRendererClient::~ChromeContentRendererClient() { 151 ChromeContentRendererClient::~ChromeContentRendererClient() {
152 if (prerendering_support_.get())
153 WebKit::WebPrerenderingSupport::shutdown();
150 } 154 }
151 155
152 void ChromeContentRendererClient::RenderThreadStarted() { 156 void ChromeContentRendererClient::RenderThreadStarted() {
153 chrome_observer_.reset(new ChromeRenderProcessObserver(this)); 157 chrome_observer_.reset(new ChromeRenderProcessObserver(this));
154 extension_dispatcher_.reset(new ExtensionDispatcher()); 158 extension_dispatcher_.reset(new ExtensionDispatcher());
155 histogram_snapshots_.reset(new RendererHistogramSnapshots()); 159 histogram_snapshots_.reset(new RendererHistogramSnapshots());
156 net_predictor_.reset(new RendererNetPredictor()); 160 net_predictor_.reset(new RendererNetPredictor());
157 spellcheck_.reset(new SpellCheck()); 161 spellcheck_.reset(new SpellCheck());
158 visited_link_slave_.reset(new VisitedLinkSlave()); 162 visited_link_slave_.reset(new VisitedLinkSlave());
159 #if defined(ENABLE_SAFE_BROWSING) 163 #if defined(ENABLE_SAFE_BROWSING)
160 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create()); 164 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create());
161 #endif 165 #endif
162 prerender_dispatcher_.reset(new prerender::PrerenderDispatcher()); 166 prerender_dispatcher_.reset(new prerender::PrerenderDispatcher());
163 167
164 RenderThread* thread = RenderThread::Get(); 168 RenderThread* thread = RenderThread::Get();
165 169
166 thread->AddObserver(chrome_observer_.get()); 170 thread->AddObserver(chrome_observer_.get());
167 thread->AddObserver(extension_dispatcher_.get()); 171 thread->AddObserver(extension_dispatcher_.get());
168 thread->AddObserver(histogram_snapshots_.get()); 172 thread->AddObserver(histogram_snapshots_.get());
169 #if defined(ENABLE_SAFE_BROWSING) 173 #if defined(ENABLE_SAFE_BROWSING)
170 thread->AddObserver(phishing_classifier_.get()); 174 thread->AddObserver(phishing_classifier_.get());
171 #endif 175 #endif
172 thread->AddObserver(spellcheck_.get()); 176 thread->AddObserver(spellcheck_.get());
173 thread->AddObserver(visited_link_slave_.get()); 177 thread->AddObserver(visited_link_slave_.get());
174 thread->AddObserver(prerender_dispatcher_.get()); 178 thread->AddObserver(prerender_dispatcher_.get());
175 179
180 prerendering_support_.reset(new prerender::PrerenderingSupport());
dominich 2012/05/18 14:48:09 Could you move these two lines up to 166? It would
181 WebKit::WebPrerenderingSupport::initialize(prerendering_support_.get());
182
176 thread->RegisterExtension(extensions_v8::ExternalExtension::Get()); 183 thread->RegisterExtension(extensions_v8::ExternalExtension::Get());
177 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get()); 184 thread->RegisterExtension(extensions_v8::LoadTimesExtension::Get());
178 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get()); 185 thread->RegisterExtension(extensions_v8::SearchBoxExtension::Get());
179 v8::Extension* search_extension = extensions_v8::SearchExtension::Get(); 186 v8::Extension* search_extension = extensions_v8::SearchExtension::Get();
180 // search_extension is null if not enabled. 187 // search_extension is null if not enabled.
181 if (search_extension) 188 if (search_extension)
182 thread->RegisterExtension(search_extension); 189 thread->RegisterExtension(search_extension);
183 190
184 CommandLine* command_line = CommandLine::ForCurrentProcess(); 191 CommandLine* command_line = CommandLine::ForCurrentProcess();
185 if (command_line->HasSwitch(switches::kEnableBenchmarking)) 192 if (command_line->HasSwitch(switches::kEnableBenchmarking))
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
916 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() { 923 bool ChromeContentRendererClient::IsOtherExtensionWithWebRequestInstalled() {
917 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled(); 924 return extension_dispatcher_->IsOtherExtensionWithWebRequestInstalled();
918 } 925 }
919 926
920 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories( 927 void ChromeContentRendererClient::RegisterPPAPIInterfaceFactories(
921 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) { 928 webkit::ppapi::PpapiInterfaceFactoryManager* factory_manager) {
922 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory); 929 factory_manager->RegisterFactory(ChromePPAPIInterfaceFactory);
923 } 930 }
924 931
925 } // namespace chrome 932 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698