| Index: chrome/browser/prerender/prerender_tracker.h
|
| diff --git a/chrome/browser/prerender/prerender_tracker.h b/chrome/browser/prerender/prerender_tracker.h
|
| index f2630520c12ce1359013f12e3d4a86fd085ee46c..d4b01987749d000a901caa7b36636846fb561380 100644
|
| --- a/chrome/browser/prerender/prerender_tracker.h
|
| +++ b/chrome/browser/prerender/prerender_tracker.h
|
| @@ -9,22 +9,21 @@
|
| #include <map>
|
| #include <set>
|
|
|
| -#include "base/memory/singleton.h"
|
| #include "base/synchronization/lock.h"
|
| #include "chrome/browser/prerender/prerender_final_status.h"
|
| +#include "content/browser/renderer_host/resource_dispatcher_host.h"
|
|
|
| namespace prerender {
|
|
|
| class PrerenderManager;
|
| -struct RenderViewInfo;
|
|
|
| // PrerenderTracker is responsible for keeping track of all prerendering
|
| // RenderViews and their statuses. Its list is guaranteed to be up to date
|
| // and can be modified on any thread.
|
| -class PrerenderTracker {
|
| +class PrerenderTracker : public ResourceDispatcherHost::Observer {
|
| public:
|
| - // Returns the PrerenderTracker singleton.
|
| - static PrerenderTracker* GetInstance();
|
| + PrerenderTracker() {}
|
| + virtual ~PrerenderTracker() {}
|
|
|
| // Attempts to set the status of the specified RenderViewHost to
|
| // FINAL_STATUS_USED. Returns true on success. Returns false if it has
|
| @@ -65,6 +64,16 @@ class PrerenderTracker {
|
| bool GetFinalStatus(int child_id, int route_id,
|
| FinalStatus* final_status) const;
|
|
|
| + // ResourceDispatcherHost::Observer implementation.
|
| + virtual bool ShouldBeginRequest(
|
| + int child_id, int route_id,
|
| + const ResourceHostMsg_Request& request_data,
|
| + const content::ResourceContext& resource_context,
|
| + const GURL& referrer) OVERRIDE;
|
| +
|
| + virtual void MutateLoadFlags(int child_id, int route_id,
|
| + int* load_flags) OVERRIDE;
|
| +
|
| protected:
|
| friend class PrerenderContents;
|
|
|
| @@ -85,7 +94,12 @@ class PrerenderTracker {
|
| void OnPrerenderingFinished(int child_id, int route_id);
|
|
|
| private:
|
| - friend struct DefaultSingletonTraits<PrerenderTracker>;
|
| + struct RenderViewInfo {
|
| + explicit RenderViewInfo(PrerenderManager* prerender_manager);
|
| +
|
| + FinalStatus final_status;
|
| + base::WeakPtr<PrerenderManager> prerender_manager;
|
| + };
|
|
|
| typedef std::pair<int, int> ChildRouteIdPair;
|
|
|
| @@ -94,9 +108,6 @@ class PrerenderTracker {
|
| // Set of child/route id pairs that may be prerendering.
|
| typedef std::set<ChildRouteIdPair> PossiblyPrerenderingChildRouteIdPairs;
|
|
|
| - PrerenderTracker();
|
| - ~PrerenderTracker();
|
| -
|
| // Attempts to set the FinalStatus of the specified RenderView to
|
| // |final_status|. If the FinalStatus of the RenderView has already been
|
| // set, does nothing. Returns the resulting FinalStatus of that RenderView,
|
|
|