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

Side by Side Diff: chrome/browser/prerender/prerender_render_view_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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_ 5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_VIEW_TRACKER_H_
6 #define CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_ 6 #define CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_VIEW_TRACKER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/gtest_prod_util.h" 13 #include "base/gtest_prod_util.h"
14 #include "base/synchronization/lock.h" 14 #include "base/synchronization/lock.h"
15 #include "base/threading/non_thread_safe.h" 15 #include "base/threading/non_thread_safe.h"
16 #include "chrome/browser/prerender/prerender_final_status.h" 16 #include "chrome/browser/prerender/prerender_final_status.h"
17 #include "googleurl/src/gurl.h" 17 #include "googleurl/src/gurl.h"
18 18
19 namespace prerender { 19 namespace prerender {
20 20
21 class PrerenderManager; 21 class PrerenderManager;
22 struct RenderViewInfo; 22 struct RenderViewInfo;
23 23
24 // PrerenderTracker is responsible for keeping track of all prerendering 24 // PrerenderRenderViewTracker is responsible for keeping track of all
25 // RenderViews and their statuses. Its list is guaranteed to be up to date 25 // prerendering RenderViews and their statuses. Its list is guaranteed to be up
26 // and can be modified on any thread. 26 // to date and can be modified on any thread.
27 class PrerenderTracker { 27 class PrerenderRenderViewTracker {
28 public: 28 public:
29 PrerenderTracker(); 29 PrerenderRenderViewTracker();
30 ~PrerenderTracker(); 30 ~PrerenderRenderViewTracker();
31 31
32 // Attempts to set the status of the specified RenderViewHost to 32 // Attempts to set the status of the specified RenderViewHost to
33 // FINAL_STATUS_USED. Returns true on success. Returns false if it has 33 // FINAL_STATUS_USED. Returns true on success. Returns false if it has
34 // already been cancelled for any reason or is no longer prerendering. 34 // already been cancelled for any reason or is no longer prerendering.
35 // Can only be called only on the IO thread. This method will not call 35 // Can only be called only on the IO thread. This method will not call
36 // PrerenderContents::set_final_status() on the corresponding 36 // PrerenderContents::set_final_status() on the corresponding
37 // PrerenderContents. 37 // PrerenderContents.
38 // 38 //
39 // If it returns true, all subsequent calls to TryCancel and TryUse for the 39 // If it returns true, all subsequent calls to TryCancel and TryUse for the
40 // RenderView will return false. 40 // RenderView will return false.
(...skipping 21 matching lines...) Expand all
62 bool GetFinalStatus(int child_id, int route_id, 62 bool GetFinalStatus(int child_id, int route_id,
63 FinalStatus* final_status) const; 63 FinalStatus* final_status) const;
64 64
65 // Returns whether or not a RenderView is prerendering. Can only be called on 65 // Returns whether or not a RenderView is prerendering. Can only be called on
66 // the IO thread. Does not acquire a lock, so may claim a RenderView that has 66 // the IO thread. Does not acquire a lock, so may claim a RenderView that has
67 // been displayed or destroyed is still prerendering. 67 // been displayed or destroyed is still prerendering.
68 bool IsPrerenderingOnIOThread(int child_id, int route_id) const; 68 bool IsPrerenderingOnIOThread(int child_id, int route_id) const;
69 69
70 private: 70 private:
71 friend class PrerenderContents; 71 friend class PrerenderContents;
72 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerNull); 72 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
73 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerUsed); 73 PrerenderRenderViewTrackerNull);
74 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelled); 74 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
75 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelledOnIO); 75 PrerenderRenderViewTrackerUsed);
76 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerCancelledFast); 76 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
77 FRIEND_TEST_ALL_PREFIXES(PrerenderTrackerTest, PrerenderTrackerMultiple); 77 PrerenderRenderViewTrackerCancelled);
78 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
79 PrerenderRenderViewTrackerCancelledOnIO);
80 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
81 PrerenderRenderViewTrackerCancelledFast);
82 FRIEND_TEST_ALL_PREFIXES(PrerenderRenderViewTrackerTest,
83 PrerenderRenderViewTrackerMultiple);
78 84
79 typedef std::pair<int, int> ChildRouteIdPair; 85 typedef std::pair<int, int> ChildRouteIdPair;
80 // Map of child/route id pairs to final statuses. 86 // Map of child/route id pairs to final statuses.
81 typedef std::map<ChildRouteIdPair, RenderViewInfo> FinalStatusMap; 87 typedef std::map<ChildRouteIdPair, RenderViewInfo> FinalStatusMap;
82 // Set of child/route id pairs that may be prerendering. 88 // Set of child/route id pairs that may be prerendering.
83 typedef std::set<ChildRouteIdPair> PossiblyPrerenderingChildRouteIdPairs; 89 typedef std::set<ChildRouteIdPair> PossiblyPrerenderingChildRouteIdPairs;
84 90
85 // Must be called when a RenderView starts prerendering, before the first 91 // Must be called when a RenderView starts prerendering, before the first
86 // navigation starts to avoid any races. 92 // navigation starts to avoid any races.
87 void OnPrerenderingStarted(int child_id, int route_id, 93 void OnPrerenderingStarted(int child_id, int route_id,
(...skipping 24 matching lines...) Expand all
112 // the IO Thread. 118 // the IO Thread.
113 void AddPrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair); 119 void AddPrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair);
114 void RemovePrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair); 120 void RemovePrerenderOnIOThread(const ChildRouteIdPair& child_route_id_pair);
115 121
116 // Tasks posted to the IO Thread to call the above functions. 122 // Tasks posted to the IO Thread to call the above functions.
117 static void AddPrerenderOnIOThreadTask( 123 static void AddPrerenderOnIOThreadTask(
118 const ChildRouteIdPair& child_route_id_pair); 124 const ChildRouteIdPair& child_route_id_pair);
119 static void RemovePrerenderOnIOThreadTask( 125 static void RemovePrerenderOnIOThreadTask(
120 const ChildRouteIdPair& child_route_id_pair); 126 const ChildRouteIdPair& child_route_id_pair);
121 127
122 static PrerenderTracker* GetDefault(); 128 static PrerenderRenderViewTracker* GetDefault();
123 129
124 // |final_status_map_lock_| protects access to |final_status_map_|. 130 // |final_status_map_lock_| protects access to |final_status_map_|.
125 mutable base::Lock final_status_map_lock_; 131 mutable base::Lock final_status_map_lock_;
126 // Map containing child/route id pairs and their final statuses. Must only be 132 // Map containing child/route id pairs and their final statuses. Must only be
127 // accessed while the lock is held. Values are always accurate and up to 133 // accessed while the lock is held. Values are always accurate and up to
128 // date. 134 // date.
129 FinalStatusMap final_status_map_; 135 FinalStatusMap final_status_map_;
130 136
131 // Superset of child/route id pairs that are prerendering. Can only access on 137 // Superset of child/route id pairs that are prerendering. Can only access on
132 // the IO thread. May contain entries that have since been displayed. Only 138 // the IO thread. May contain entries that have since been displayed. Only
133 // used to prevent locking when not needed. 139 // used to prevent locking when not needed.
134 PossiblyPrerenderingChildRouteIdPairs possibly_prerendering_io_thread_set_; 140 PossiblyPrerenderingChildRouteIdPairs possibly_prerendering_io_thread_set_;
135 141
136 DISALLOW_COPY_AND_ASSIGN(PrerenderTracker); 142 DISALLOW_COPY_AND_ASSIGN(PrerenderRenderViewTracker);
137 }; 143 };
138 144
139 } // namespace prerender 145 } // namespace prerender
140 146
141 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_TRACKER_H_ 147 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_RENDER_VIEW_TRACKER_H_
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_manager_factory.cc ('k') | chrome/browser/prerender/prerender_render_view_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698