Chromium Code Reviews| 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_ |