Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1637)

Unified Diff: chrome/browser/prerender/prerender_tracker.h

Issue 10386223: Renaming poorly named classes and adding missing unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Undo rename of Dispatcher Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « chrome/browser/prerender/prerender_render_view_tracker_unittest.cc ('k') | chrome/browser/prerender/prerender_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698