Commit 473bc7b0 authored by gavinp@chromium.org's avatar gavinp@chromium.org

Fix memory leak in PrerenderDispatcher.

Make the PrerenderingInterface into a scoped pointer.

BUG=127953


Review URL: https://chromiumcodereview.appspot.com/10391134

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138494 0039d316-1c4b-4281-b951-d872f2087c98
parent de500dad
......@@ -12,11 +12,14 @@
namespace prerender {
PrerenderDispatcher::PrerenderDispatcher() {
WebKit::WebPrerenderingSupport::initialize(new PrerenderingSupport());
PrerenderDispatcher::PrerenderDispatcher()
: prerendering_support_(new PrerenderingSupport()) {
WebKit::WebPrerenderingSupport::initialize(prerendering_support_.get());
}
PrerenderDispatcher::~PrerenderDispatcher() {
if (prerendering_support_.get())
WebKit::WebPrerenderingSupport::shutdown();
}
bool PrerenderDispatcher::IsPrerenderURL(const GURL& url) const {
......
......@@ -9,15 +9,20 @@
#include <map>
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "content/public/renderer/render_process_observer.h"
class GURL;
namespace prerender {
class PrerenderingSupport;
// PrerenderDispatcher keeps track of which URLs are being prerendered. There
// is only one PrerenderDispatcher per render process, and it will only be
// aware of prerenders that are triggered by this render process.
// aware of prerenders that are triggered by this render process. As well,
// it holds on to other objects that must exist once per-renderer process,
// such as the PrerenderingSupport.
class PrerenderDispatcher : public content::RenderProcessObserver {
public:
PrerenderDispatcher();
......@@ -34,6 +39,10 @@ class PrerenderDispatcher : public content::RenderProcessObserver {
typedef std::map<GURL, int> PrerenderMap;
PrerenderMap prerender_urls_;
// There is one PrerenderingSupport object per renderer, and it provides
// the interface to prerendering to the WebKit platform.
scoped_ptr<PrerenderingSupport> prerendering_support_;
};
} // namespace prerender
......
......@@ -5753,14 +5753,6 @@
fun:_ZN3gfx9JPEGCodec6DecodeEPKhm
fun:_ZN7history33HistoryBackendTest_DeleteAll_Test8TestBodyEv
}
{
bug_127953
Memcheck:Leak
fun:_Znw*
fun:_ZN9prerender19PrerenderDispatcherC1Ev
fun:_ZN6chrome27ChromeContentRendererClient19RenderThreadStartedEv
fun:_ZN16RenderThreadImpl4InitEv
}
{
bug_128145a
Memcheck:Leak
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment