| Index: chrome/browser/prerender/prerender_tracker.h
|
| diff --git a/chrome/browser/prerender/prerender_tracker.h b/chrome/browser/prerender/prerender_tracker.h
|
| deleted file mode 100644
|
| index 6a269ef127c5ab360e6938b2a2465d39919bb5b5..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/prerender/prerender_tracker.h
|
| +++ /dev/null
|
| @@ -1,141 +0,0 @@
|
| -// 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_TRACKER_H_
|
| -#define CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_
|
| -#pragma once
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <vector>
|
| -
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "base/threading/non_thread_safe.h"
|
| -#include "chrome/browser/prerender/prerender_final_status.h"
|
| -#include "googleurl/src/gurl.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 {
|
| - public:
|
| - PrerenderTracker();
|
| - ~PrerenderTracker();
|
| -
|
| - // Attempts to set the status of the specified RenderViewHost to
|
| - // FINAL_STATUS_USED. Returns true on success. Returns false if it has
|
| - // already been cancelled for any reason or is no longer prerendering.
|
| - // Can only be called only on the IO thread. This method will not call
|
| - // PrerenderContents::set_final_status() on the corresponding
|
| - // PrerenderContents.
|
| - //
|
| - // If it returns true, all subsequent calls to TryCancel and TryUse for the
|
| - // RenderView will return false.
|
| - bool TryUse(int child_id, int route_id);
|
| -
|
| - // Attempts to cancel prerendering by the specified RenderView, setting the
|
| - // FinalStatus to |final_status|. Returns true if the specified prerender has
|
| - // been cancelled, either as a result of this call or for any other reason.
|
| - // If the call results in cancelling a PrerenderContents, a task to destroy
|
| - // it is also posted to the UI thread.
|
| - //
|
| - // When true is returned, it is guaranteed that the RenderView will never
|
| - // be displayed. When false is returned, the RenderView has either been
|
| - // swapped into a tab or has already been destroyed.
|
| - bool TryCancel(int child_id, int route_id, FinalStatus final_status);
|
| -
|
| - // Same as above, but can only called on the IO Thread. Does not acquire a
|
| - // lock when the RenderView is not being prerendered.
|
| - bool TryCancelOnIOThread(int child_id, int route_id,
|
| - FinalStatus final_status);
|
| -
|
| - // Gets the FinalStatus of the specified prerendered RenderView. Returns
|
| - // |true| and sets |final_status| to the status of the RenderView if it
|
| - // is found, returns false otherwise.
|
| - bool GetFinalStatus(int child_id, int route_id,
|
| - FinalStatus* final_status) const;
|
| -
|
| - // Returns whether or not a RenderView is prerendering. Can only be called on
|
| - // the IO thread. Does not acquire a lock, so may claim a RenderView that has
|
| - // been displayed or destroyed is still prerendering.
|
| - bool IsPrerenderingOnIOThread(int child_id, int route_id) const;
|
| -
|
| - private:
|
| - friend class PrerenderContents;
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerNull);
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerUsed);
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelled);
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelledOnIO);
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelledFast);
|
| - FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerMultiple);
|
| -
|
| - typedef std::pair<int, int> ChildRouteIdPair;
|
| - // Map of child/route id pairs to final statuses.
|
| - typedef std::map<ChildRouteIdPair, RenderViewInfo> FinalStatusMap;
|
| - // Set of child/route id pairs that may be prerendering.
|
| - typedef std::set<ChildRouteIdPair> PossiblyPrerenderingChildRouteIdPairs;
|
| -
|
| - // Must be called when a RenderView starts prerendering, before the first
|
| - // navigation starts to avoid any races.
|
| - void OnPrerenderingStarted(int child_id, int route_id,
|
| - PrerenderManager* prerender_manager);
|
| -
|
| - // Must be called when a RenderView stops prerendering, either because the
|
| - // RenderView was used or prerendering was cancelled and it is being
|
| - // destroyed.
|
| - void OnPrerenderingFinished(int child_id, int route_id);
|
| -
|
| - // Attempts to set the FinalStatus of the specified RenderView to
|
| - // |desired_final_status|. If non-NULL, |actual_final_status| is set to the
|
| - // FinalStatus of the RenderView.
|
| - //
|
| - // If the FinalStatus of the RenderView is successfully set, returns true and
|
| - // sets |actual_final_status| to |desired_final_status|.
|
| - //
|
| - // If the FinalStatus of the RenderView was already set, returns false and
|
| - // sets |actual_final_status| to the actual FinalStatus of the RenderView.
|
| - //
|
| - // If the RenderView is not a prerendering RenderView, returns false and sets
|
| - // |actual_final_status| to FINAL_STATUS_MAX.
|
| - bool SetFinalStatus(int child_id, int route_id,
|
| - FinalStatus desired_final_status,
|
| - FinalStatus* actual_final_status);
|
| -
|
| - // Add/remove the specified pair to |possibly_prerendering_io_thread_set_| on
|
| - // the IO Thread.
|
| - void AddPrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair);
|
| - void RemovePrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair);
|
| -
|
| - // Tasks posted to the IO Thread to call the above functions.
|
| - static void AddPrerenderOnIOThreadTask(
|
| - const ChildRouteIdPair& child_route_id_pair);
|
| - static void RemovePrerenderOnIOThreadTask(
|
| - const ChildRouteIdPair& child_route_id_pair);
|
| -
|
| - static PrerenderTracker* GetDefault();
|
| -
|
| - // |final_status_map_lock_| protects access to |final_status_map_|.
|
| - mutable base::Lock final_status_map_lock_;
|
| - // Map containing child/route id pairs and their final statuses. Must only be
|
| - // accessed while the lock is held. Values are always accurate and up to
|
| - // date.
|
| - FinalStatusMap final_status_map_;
|
| -
|
| - // Superset of child/route id pairs that are prerendering. Can only access on
|
| - // the IO thread. May contain entries that have since been displayed. Only
|
| - // used to prevent locking when not needed.
|
| - PossiblyPrerenderingChildRouteIdPairs possibly_prerendering_io_thread_set_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PrerenderTracker);
|
| -};
|
| -
|
| -} // namespace prerender
|
| -
|
| -#endif // CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_
|
|
|