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

Unified Diff: chrome/browser/prerender/prerender_handle.h

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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/browser/prerender/prerender_handle.h
diff --git a/chrome/browser/prerender/prerender_handle.h b/chrome/browser/prerender/prerender_handle.h
new file mode 100644
index 0000000000000000000000000000000000000000..40ef66bd061cf022ed82f1d23bd2ae7b7280f1b3
--- /dev/null
+++ b/chrome/browser/prerender/prerender_handle.h
@@ -0,0 +1,47 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_PRERENDER_PRERENDER_HANDLE_H_
+#define CHROME_BROWSER_PRERENDER_PRERENDER_HANDLE_H_
+
+#include "base/memory/ref_counted.h"
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/prerender/prerender_final_status.h"
+
+namespace prerender {
+
+class PrerenderContents;
+
+// An opaque handle to a prerender.
+class PrerenderHandleInterface :
gavinp 2012/06/17 17:41:15 I've now renamed this to PrerenderInterface, and p
dominich 2012/06/18 15:32:44 I /really/ don't understand why you need an interf
gavinp 2012/06/18 16:40:48 Hrm. 1. A prerender can be canceled by any one of
mmenke 2012/06/18 18:32:03 Seems like there are a lot of ways to implement th
+ public base::RefCounted<PrerenderHandleInterface>,
+ public base::SupportsWeakPtr<PrerenderHandleInterface> {
+ public:
+ virtual bool DidFinishLoading() const = 0;
+
+ // Is this prerender created, but not yet launched, as in a link prerender
+ // launched from a page that is itself prerendering?
+ virtual bool IsPending() const = 0;
+
+ protected:
+ PrerenderHandleInterface();
+ virtual ~PrerenderHandleInterface() = 0;
+
+ private:
+ friend class base::RefCounted<PrerenderHandleInterface>;
+ friend class PrerenderContents; // May call Destroy.
+
+ // Called from PrerenderContents, notifies this handle that this prerender
+ // either is no longer running, or never will run if it is not yet started.
+ // TODO(gavinp): Implement WeakScopedRefPtr, and use it to make this method
+ // redundant.
+ virtual void Destroy() = 0;
+};
+
+typedef scoped_refptr<PrerenderHandleInterface> PrerenderHandle;
+typedef base::WeakPtr<PrerenderHandleInterface> WeakPrerenderHandle;
mmenke 2012/06/18 18:32:03 This just makes things hard to follow, and is actu
+
+} // namespace prerender
+
+#endif // CHROME_BROWSER_PRERENDER_PRERENDER_HANDLE_H_

Powered by Google App Engine
This is Rietveld 408576698