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

Side by Side Diff: chrome/browser/prerender/prerender_tracker_unittest.cc

Issue 11348357: Add observer interface to PrerenderContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 #include <set> 5 #include <set>
6 #include <utility>
6 7
7 #include "base/logging.h" 8 #include "base/logging.h"
8 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "chrome/browser/prerender/prerender_contents.h"
9 #include "chrome/browser/prerender/prerender_manager.h" 11 #include "chrome/browser/prerender/prerender_manager.h"
10 #include "chrome/browser/prerender/prerender_tracker.h" 12 #include "chrome/browser/prerender/prerender_tracker.h"
11 #include "chrome/test/base/testing_browser_process.h" 13 #include "chrome/test/base/testing_browser_process.h"
12 #include "content/public/test/test_browser_thread.h" 14 #include "content/public/test/test_browser_thread.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 using content::BrowserThread; 17 using content::BrowserThread;
16 18
17 namespace prerender { 19 namespace prerender {
18 20
19 namespace { 21 namespace {
20 22
23 class TestPrerenderContents : public PrerenderContents {
24 public:
25 TestPrerenderContents(PrerenderManager* prerender_manager,
26 int child_id, int route_id)
27 : PrerenderContents(prerender_manager, NULL, GURL(), content::Referrer(),
mmenke 2012/12/03 20:02:47 Suggest a comment that the NULL is the profile arg
gavinp 2012/12/04 18:04:48 Done, but I used a static_cast<> as the comment.
28 ORIGIN_NONE, PrerenderManager::kNoExperiment),
29 child_id_(child_id),
30 route_id_(route_id) {
31 }
32
33 ~TestPrerenderContents() {
34 set_final_status(FINAL_STATUS_USED);
35 }
36
37 virtual bool GetChildId(int* child_id) const OVERRIDE {
38 *child_id = child_id_;
39 return true;
40 }
41
42 virtual bool GetRouteId(int* route_id) const OVERRIDE {
43 *route_id = route_id_;
44 return true;
45 }
46
47 private:
48 int child_id_;
49 int route_id_;
50 };
51
21 class TestPrerenderManager : public PrerenderManager { 52 class TestPrerenderManager : public PrerenderManager {
22 public: 53 public:
23 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) : 54 explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) :
24 PrerenderManager(NULL, prerender_tracker) { 55 PrerenderManager(NULL, prerender_tracker) {
25 mutable_config().rate_limit_enabled = false; 56 mutable_config().rate_limit_enabled = false;
26 } 57 }
27 58
28 virtual void DestroyPrerenderForRenderView( 59 virtual void DestroyPrerenderForRenderView(
29 int process_id, int view_id, FinalStatus final_status) OVERRIDE { 60 int process_id, int view_id, FinalStatus final_status) OVERRIDE {
30 cancelled_id_pairs_.insert(std::make_pair(process_id, view_id)); 61 cancelled_id_pairs_.insert(std::make_pair(process_id, view_id));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 private: 105 private:
75 MessageLoop message_loop_; 106 MessageLoop message_loop_;
76 content::TestBrowserThread ui_thread_; 107 content::TestBrowserThread ui_thread_;
77 content::TestBrowserThread io_thread_; 108 content::TestBrowserThread io_thread_;
78 109
79 scoped_ptr<TestPrerenderManager> prerender_manager_; 110 scoped_ptr<TestPrerenderManager> prerender_manager_;
80 }; 111 };
81 112
82 // Check that a non-existant RenderView is handled correctly. 113 // Check that a non-existant RenderView is handled correctly.
83 TEST_F(PrerenderTrackerTest, PrerenderTrackerNull) { 114 TEST_F(PrerenderTrackerTest, PrerenderTrackerNull) {
84 FinalStatus final_status; 115 FinalStatus final_status;
mmenke 2012/12/03 20:02:47 While you're here, could you move it to just above
gavinp 2012/12/04 18:04:48 Done.
116 TestPrerenderContents test_contents(prerender_manager(), 0, 0);
85 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); 117 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0));
86 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 118 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
87 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( 119 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread(
88 0, 0, FINAL_STATUS_HTTPS)); 120 0, 0, FINAL_STATUS_HTTPS));
89 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 121 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
90 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 122 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
91 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); 123 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0));
92 } 124 }
93 125
94 // Check that a page that is used is handled correctly. 126 // Check that a page that is used is handled correctly.
95 TEST_F(PrerenderTrackerTest, PrerenderTrackerUsed) { 127 TEST_F(PrerenderTrackerTest, PrerenderTrackerUsed) {
96 prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); 128 TestPrerenderContents test_contents(prerender_manager(), 0, 0);
mmenke 2012/12/03 20:02:47 optional: Could just toss this in the test framew
gavinp 2012/12/04 18:04:48 Done. I also got rid of all the magic numbers, at
129
130 prerender_tracker()->OnPrerenderStart(&test_contents);
97 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); 131 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0));
98 132
99 // This calls AddPrerenderOnIOThreadTask(). 133 // This calls AddPrerenderOnIOThreadTask().
100 RunEvents(); 134 RunEvents();
101 135
102 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 136 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
103 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); 137 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0));
104 138
105 // Display the prerendered RenderView. 139 // Display the prerendered RenderView.
106 EXPECT_TRUE(prerender_tracker()->TryUse(0, 0)); 140 EXPECT_TRUE(prerender_tracker()->TryUse(0, 0));
107 141
108 // Make sure the page can't be destroyed or claim it was destroyed after 142 // Make sure the page can't be destroyed or claim it was destroyed after
109 // it's been used. 143 // it's been used.
110 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 144 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
111 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( 145 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread(
112 0, 0, FINAL_STATUS_TIMED_OUT)); 146 0, 0, FINAL_STATUS_TIMED_OUT));
113 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); 147 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0));
114 148
115 // This would call DestroyPrerenderForChildRouteIdPair(), if the prerender 149 // This would call DestroyPrerenderForChildRouteIdPair(), if the prerender
116 // were cancelled. 150 // were cancelled.
117 RunEvents(); 151 RunEvents();
118 152
119 // These functions should all behave as before. 153 // These functions should all behave as before.
120 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 154 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
121 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( 155 EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread(
122 0, 0, FINAL_STATUS_TIMED_OUT)); 156 0, 0, FINAL_STATUS_TIMED_OUT));
123 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); 157 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0));
124 158
125 // This calls DestroyPrerenderForChildRouteIdPair(). 159 // This calls DestroyPrerenderForChildRouteIdPair().
126 prerender_tracker()->OnPrerenderingFinished(0, 0); 160 prerender_tracker()->OnPrerenderStop(&test_contents);
127 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 161 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
128 162
129 // This calls RemovePrerenderOnIOThreadTask(). 163 // This calls RemovePrerenderOnIOThreadTask().
130 RunEvents(); 164 RunEvents();
131 165
132 FinalStatus final_status; 166 FinalStatus final_status;
133 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 167 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
134 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 168 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
135 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 169 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
136 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); 170 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0));
137 } 171 }
138 172
139 // Check that a prerendered page cancelled by TryCancel() is handled correctly. 173 // Check that a prerendered page cancelled by TryCancel() is handled correctly.
140 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelled) { 174 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelled) {
141 prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); 175 TestPrerenderContents test_contents(prerender_manager(), 0, 0);
176
177 prerender_tracker()->OnPrerenderStart(&test_contents);
142 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); 178 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0));
143 179
144 // This calls AddPrerenderOnIOThreadTask(). 180 // This calls AddPrerenderOnIOThreadTask().
145 RunEvents(); 181 RunEvents();
146 182
147 // Cancel the prerender. 183 // Cancel the prerender.
148 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 184 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
149 185
150 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); 186 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0));
151 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); 187 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT));
152 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 188 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
153 0, 0, FINAL_STATUS_TIMED_OUT)); 189 0, 0, FINAL_STATUS_TIMED_OUT));
154 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); 190 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0));
155 191
156 // This calls DestroyPrerenderForChildRouteIdPair(). 192 // This calls DestroyPrerenderForChildRouteIdPair().
157 RunEvents(); 193 RunEvents();
158 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); 194 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0));
159 195
160 // These should all work until the prerendering RenderViewHost is destroyed. 196 // These should all work until the prerendering RenderViewHost is destroyed.
161 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); 197 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT));
162 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 198 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
163 0, 0, FINAL_STATUS_TIMED_OUT)); 199 0, 0, FINAL_STATUS_TIMED_OUT));
164 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); 200 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0));
165 201
166 prerender_tracker()->OnPrerenderingFinished(0, 0); 202 prerender_tracker()->OnPrerenderStop(&test_contents);
167 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 203 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
168 204
169 // This calls RemovePrerenderOnIOThreadTask(). 205 // This calls RemovePrerenderOnIOThreadTask().
170 RunEvents(); 206 RunEvents();
171 207
172 FinalStatus final_status; 208 FinalStatus final_status;
173 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 209 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
174 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 210 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
175 } 211 }
176 212
177 // Check that a prerendered page cancelled on the IO thread by 213 // Check that a prerendered page cancelled on the IO thread by
178 // TryCancelOnIOThread() is handled correctly. 214 // TryCancelOnIOThread() is handled correctly.
179 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledOnIO) { 215 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledOnIO) {
180 prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); 216 TestPrerenderContents test_contents(prerender_manager(), 0, 0);
217
218 prerender_tracker()->OnPrerenderStart(&test_contents);
181 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); 219 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0));
182 220
183 // This calls AddPrerenderOnIOThreadTask(). 221 // This calls AddPrerenderOnIOThreadTask().
184 RunEvents(); 222 RunEvents();
185 223
186 // Cancel the prerender. 224 // Cancel the prerender.
187 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 225 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
188 0, 0, FINAL_STATUS_TIMED_OUT)); 226 0, 0, FINAL_STATUS_TIMED_OUT));
189 227
190 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); 228 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0));
191 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 229 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
192 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 230 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
193 0, 0, FINAL_STATUS_HTTPS)); 231 0, 0, FINAL_STATUS_HTTPS));
194 EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0)); 232 EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0));
195 233
196 // This calls DestroyPrerenderForChildRouteIdPair(). 234 // This calls DestroyPrerenderForChildRouteIdPair().
197 RunEvents(); 235 RunEvents();
198 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); 236 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0));
199 237
200 // These should all work until the prerendering RenderViewHost is destroyed. 238 // These should all work until the prerendering RenderViewHost is destroyed.
201 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 239 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
202 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 240 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
203 0, 0, FINAL_STATUS_HTTPS)); 241 0, 0, FINAL_STATUS_HTTPS));
204 EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0)); 242 EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0));
205 243
206 prerender_tracker()->OnPrerenderingFinished(0, 0); 244 prerender_tracker()->OnPrerenderStop(&test_contents);
207 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 245 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
208 246
209 // This calls RemovePrerenderOnIOThreadTask(). 247 // This calls RemovePrerenderOnIOThreadTask().
210 RunEvents(); 248 RunEvents();
211 249
212 FinalStatus final_status; 250 FinalStatus final_status;
213 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 251 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
214 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 252 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
215 } 253 }
216 254
217 // Check that a prerendered page cancelled before it reaches the IO thread is 255 // Check that a prerendered page cancelled before it reaches the IO thread is
218 // handled correctly. 256 // handled correctly.
219 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledFast) { 257 TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledFast) {
220 prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); 258 TestPrerenderContents test_contents(prerender_manager(), 0, 0);
259
260 prerender_tracker()->OnPrerenderStart(&test_contents);
261
221 // Cancel the prerender. 262 // Cancel the prerender.
222 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 263 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
223 264
224 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); 265 EXPECT_FALSE(prerender_tracker()->TryUse(0, 0));
225 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); 266 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT));
226 267
227 // This calls AddPrerenderOnIOThreadTask() and 268 // This calls AddPrerenderOnIOThreadTask() and
228 // DestroyPrerenderForChildRouteIdPair(). 269 // DestroyPrerenderForChildRouteIdPair().
229 RunEvents(); 270 RunEvents();
230 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); 271 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0));
231 272
232 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 273 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
233 0, 0, FINAL_STATUS_TIMED_OUT)); 274 0, 0, FINAL_STATUS_TIMED_OUT));
234 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); 275 EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT));
235 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); 276 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0));
236 277
237 prerender_tracker()->OnPrerenderingFinished(0, 0); 278 prerender_tracker()->OnPrerenderStop(&test_contents);
238 279
239 // This calls RemovePrerenderOnIOThreadTask(). 280 // This calls RemovePrerenderOnIOThreadTask().
240 RunEvents(); 281 RunEvents();
241 282
242 FinalStatus final_status; 283 FinalStatus final_status;
243 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 284 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
244 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 285 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
245 } 286 }
246 287
247 // Check that handling two pages at once works. 288 // Check that handling two pages at once works.
248 TEST_F(PrerenderTrackerTest, PrerenderTrackerMultiple) { 289 TEST_F(PrerenderTrackerTest, PrerenderTrackerMultiple) {
249 prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); 290 TestPrerenderContents first_test_contents(prerender_manager(), 0, 0);
291 prerender_tracker()->OnPrerenderStart(&first_test_contents);
250 292
251 // This calls AddPrerenderOnIOThreadTask(). 293 // This calls AddPrerenderOnIOThreadTask().
252 RunEvents(); 294 RunEvents();
253 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 295 EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
254 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2)); 296 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2));
255 EXPECT_FALSE(prerender_tracker()->TryUse(1, 2)); 297 EXPECT_FALSE(prerender_tracker()->TryUse(1, 2));
256 EXPECT_FALSE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS)); 298 EXPECT_FALSE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS));
257 299
258 // Start second prerender. 300 // Start second prerender.
259 prerender_tracker()->OnPrerenderingStarted(1, 2, prerender_manager()); 301 TestPrerenderContents second_test_contents(prerender_manager(), 1, 2);
302 prerender_tracker()->OnPrerenderStart(&second_test_contents);
260 // This calls AddPrerenderOnIOThreadTask(). 303 // This calls AddPrerenderOnIOThreadTask().
261 RunEvents(); 304 RunEvents();
262 305
263 // Use (0, 0). 306 // Use (0, 0).
264 EXPECT_TRUE(prerender_tracker()->TryUse(0, 0)); 307 EXPECT_TRUE(prerender_tracker()->TryUse(0, 0));
265 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); 308 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0));
266 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(1, 2)); 309 EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(1, 2));
267 310
268 // Cancel (1, 2). 311 // Cancel (1, 2).
269 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( 312 EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread(
270 1, 2, FINAL_STATUS_HTTPS)); 313 1, 2, FINAL_STATUS_HTTPS));
271 314
272 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); 315 EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS));
273 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); 316 EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0));
274 317
275 EXPECT_FALSE(prerender_tracker()->TryUse(1, 2)); 318 EXPECT_FALSE(prerender_tracker()->TryUse(1, 2));
276 EXPECT_TRUE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS)); 319 EXPECT_TRUE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS));
277 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(1, 2)); 320 EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(1, 2));
278 321
279 // This calls DestroyPrerenderForChildRouteIdPair(). 322 // This calls DestroyPrerenderForChildRouteIdPair().
280 RunEvents(); 323 RunEvents();
281 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); 324 EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0));
282 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(1, 2)); 325 EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(1, 2));
283 326
284 prerender_tracker()->OnPrerenderingFinished(0, 0); 327 prerender_tracker()->OnPrerenderStop(&first_test_contents);
285 prerender_tracker()->OnPrerenderingFinished(1, 2); 328 prerender_tracker()->OnPrerenderStop(&second_test_contents);
286 329
287 // This calls RemovePrerenderOnIOThreadTask(). 330 // This calls RemovePrerenderOnIOThreadTask().
288 RunEvents(); 331 RunEvents();
289 332
290 FinalStatus final_status; 333 FinalStatus final_status;
291 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); 334 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status));
292 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); 335 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0));
293 336
294 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(1, 2, &final_status)); 337 EXPECT_FALSE(prerender_tracker()->GetFinalStatus(1, 2, &final_status));
295 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2)); 338 EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2));
296 } 339 }
297 340
298 } // namespace prerender 341 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698