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_ |