| 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..7e7aca6cb4f32d530296ba1801bf61de07702b88
|
| --- /dev/null
|
| +++ b/chrome/browser/prerender/prerender_handle.h
|
| @@ -0,0 +1,79 @@
|
| +// 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 <list>
|
| +
|
| +#include "base/threading/non_thread_safe.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +
|
| +class GURL;
|
| +
|
| +namespace content {
|
| +class SessionStorageNamespace;
|
| +}
|
| +
|
| +namespace prerender {
|
| +
|
| +class PrerenderContents;
|
| +class PrerenderManager;
|
| +
|
| +class PrerenderHandle : public base::NonThreadSafe {
|
| + public:
|
| + ~PrerenderHandle();
|
| +
|
| + // The launcher is navigating away from the context that launched this
|
| + // prerender. The prerender will likely stay alive briefly though, in case we
|
| + // are going through a redirect chain that will target it. This call
|
| + // invalidates the handle.
|
| + void OnNavigateAway();
|
| +
|
| + // The launcher has taken explicit action to remove this prerender (for
|
| + // instance, removing a link element from a document). This call invalidates
|
| + // the handle.
|
| + void OnCancel();
|
| +
|
| + // True if the prerender (pending or running) has not been deleted out from
|
| + // under this handle.
|
| + bool IsValid() const { return prerender_data_ != NULL; }
|
| +
|
| + // True if this prerender was launched by a page that was itself being
|
| + // prerendered, and so has not yet been started.
|
| + bool IsPending() const;
|
| +
|
| + // True if this prerender is currently running.
|
| + bool IsPrerendering() const;
|
| +
|
| + bool DidFinishLoading() const;
|
| +
|
| + private:
|
| + friend class PrerenderBrowserTest;
|
| + friend class PrerenderManager;
|
| +
|
| + struct PrerenderData {
|
| + explicit PrerenderData(PrerenderManager* manager);
|
| + PrerenderData(PrerenderManager* manager,
|
| + PrerenderContents* contents);
|
| +
|
| + PrerenderManager* manager;
|
| + PrerenderContents* contents;
|
| + int instance_count;
|
| + };
|
| +
|
| + PrerenderHandle();
|
| + explicit PrerenderHandle(base::WeakPtr<PrerenderData> prerender_data);
|
| +
|
| + void SwapPrerenderDataWith(PrerenderHandle* other_prerender_handle);
|
| +
|
| + base::WeakPtr<PrerenderData> prerender_data_;
|
| + base::WeakPtrFactory<PrerenderHandle> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PrerenderHandle);
|
| +};
|
| +
|
| +} // namespace prerender
|
| +
|
| +#endif // CHROME_BROWSER_PRERENDER_PRERENDER_HANDLE_H_
|
|
|