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

Side by Side Diff: chrome/browser/prerender/prerender_test_utils.h

Issue 2452313002: Revert of [NoStatePrefetch] Kill renderer after preload scanning (Closed)
Patch Set: Created 4 years, 1 month 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
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 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_TEST_UTILS_H_ 5 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_TEST_UTILS_H_
6 #define CHROME_BROWSER_PRERENDER_PRERENDER_TEST_UTILS_H_ 6 #define CHROME_BROWSER_PRERENDER_PRERENDER_TEST_UTILS_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <functional> 9 #include <functional>
10 #include <memory> 10 #include <memory>
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 // Set to true when the prerendering RenderWidget is hidden. 137 // Set to true when the prerendering RenderWidget is hidden.
138 bool was_hidden_; 138 bool was_hidden_;
139 // Set to true when the prerendering RenderWidget is shown, after having been 139 // Set to true when the prerendering RenderWidget is shown, after having been
140 // hidden. 140 // hidden.
141 bool was_shown_; 141 bool was_shown_;
142 // Expected final value of was_shown_. Defaults to true for 142 // Expected final value of was_shown_. Defaults to true for
143 // FINAL_STATUS_USED, and false otherwise. 143 // FINAL_STATUS_USED, and false otherwise.
144 bool should_be_shown_; 144 bool should_be_shown_;
145 // If true, |expected_final_status_| and other shutdown checks are skipped. 145 // If true, |expected_final_status_| and other shutdown checks are skipped.
146 bool skip_final_checks_; 146 bool skip_final_checks_;
147
148 DISALLOW_COPY_AND_ASSIGN(TestPrerenderContents);
149 }; 147 };
150 148
151 // A handle to a TestPrerenderContents whose lifetime is under the caller's 149 // A handle to a TestPrerenderContents whose lifetime is under the caller's
152 // control. A PrerenderContents may be destroyed at any point. This allows 150 // control. A PrerenderContents may be destroyed at any point. This allows
153 // tracking the FinalStatus. 151 // tracking the final status, etc.
154 class TestPrerender : public PrerenderContents::Observer, 152 class TestPrerender : public PrerenderContents::Observer,
155 public base::SupportsWeakPtr<TestPrerender> { 153 public base::SupportsWeakPtr<TestPrerender> {
156 public: 154 public:
157 TestPrerender(); 155 TestPrerender();
158 ~TestPrerender() override; 156 ~TestPrerender() override;
159 157
160 TestPrerenderContents* contents() const { return contents_; } 158 TestPrerenderContents* contents() const { return contents_; }
161 int number_of_loads() const { return number_of_loads_; } 159 int number_of_loads() const { return number_of_loads_; }
162 FinalStatus GetFinalStatus() const;
163 160
164 void WaitForCreate(); 161 void WaitForCreate();
165 void WaitForStart(); 162 void WaitForStart();
166 void WaitForStop(); 163 void WaitForStop();
167 164
168 // Waits for |number_of_loads()| to be at least |expected_number_of_loads| OR 165 // Waits for |number_of_loads()| to be at least |expected_number_of_loads| OR
169 // for the prerender to stop running (just to avoid a timeout if the prerender 166 // for the prerender to stop running (just to avoid a timeout if the prerender
170 // dies). Note: this does not assert equality on the number of loads; the 167 // dies). Note: this does not assert equality on the number of loads; the
171 // caller must do it instead. 168 // caller must do it instead.
172 void WaitForLoads(int expected_number_of_loads); 169 void WaitForLoads(int expected_number_of_loads);
173 170
174 void OnPrerenderCreated(TestPrerenderContents* contents); 171 void OnPrerenderCreated(TestPrerenderContents* contents);
175 172
176 // PrerenderContents::Observer implementation: 173 // PrerenderContents::Observer implementation:
177 void OnPrerenderStart(PrerenderContents* contents) override; 174 void OnPrerenderStart(PrerenderContents* contents) override;
178 175
179 void OnPrerenderStopLoading(PrerenderContents* contents) override; 176 void OnPrerenderStopLoading(PrerenderContents* contents) override;
180 177
181 void OnPrerenderStop(PrerenderContents* contents) override; 178 void OnPrerenderStop(PrerenderContents* contents) override;
182 179
183 private: 180 private:
184 TestPrerenderContents* contents_; 181 TestPrerenderContents* contents_;
185 FinalStatus final_status_;
186 int number_of_loads_; 182 int number_of_loads_;
187 183
188 int expected_number_of_loads_; 184 int expected_number_of_loads_;
189 std::unique_ptr<base::RunLoop> load_waiter_; 185 std::unique_ptr<base::RunLoop> load_waiter_;
190 186
191 bool started_; 187 bool started_;
192 bool stopped_; 188 bool stopped_;
193 189
194 base::RunLoop create_loop_; 190 base::RunLoop create_loop_;
195 base::RunLoop start_loop_; 191 base::RunLoop start_loop_;
(...skipping 24 matching lines...) Expand all
220 public: 216 public:
221 // Does not own the waiter which must outlive the TestPrerenderContents. 217 // Does not own the waiter which must outlive the TestPrerenderContents.
222 explicit DestructionMarker(DestructionWaiter* waiter); 218 explicit DestructionMarker(DestructionWaiter* waiter);
223 219
224 ~DestructionMarker() override; 220 ~DestructionMarker() override;
225 221
226 void OnPrerenderStop(PrerenderContents* contents) override; 222 void OnPrerenderStop(PrerenderContents* contents) override;
227 223
228 private: 224 private:
229 DestructionWaiter* waiter_; 225 DestructionWaiter* waiter_;
230
231 DISALLOW_COPY_AND_ASSIGN(DestructionMarker);
232 }; 226 };
233 227
234 // To be called by a DestructionMarker. 228 // To be called by a DestructionMarker.
235 void MarkDestruction(FinalStatus reason); 229 void MarkDestruction(FinalStatus reason);
236 230
237 base::RunLoop wait_loop_; 231 base::RunLoop wait_loop_;
238 FinalStatus expected_final_status_; 232 FinalStatus expected_final_status_;
239 bool saw_correct_status_; 233 bool saw_correct_status_;
240 std::unique_ptr<DestructionMarker> marker_; 234 std::unique_ptr<DestructionMarker> marker_;
241
242 DISALLOW_COPY_AND_ASSIGN(DestructionWaiter);
243 }; 235 };
244 236
245 // PrerenderContentsFactory that uses TestPrerenderContents. 237 // PrerenderContentsFactory that uses TestPrerenderContents.
246 class TestPrerenderContentsFactory : public PrerenderContents::Factory { 238 class TestPrerenderContentsFactory : public PrerenderContents::Factory {
247 public: 239 public:
248 TestPrerenderContentsFactory(); 240 TestPrerenderContentsFactory();
249 241
250 ~TestPrerenderContentsFactory() override; 242 ~TestPrerenderContentsFactory() override;
251 243
252 std::unique_ptr<TestPrerender> ExpectPrerenderContents( 244 std::unique_ptr<TestPrerender> ExpectPrerenderContents(
(...skipping 12 matching lines...) Expand all
265 ExpectedContents(const ExpectedContents& other); 257 ExpectedContents(const ExpectedContents& other);
266 ExpectedContents(FinalStatus final_status, 258 ExpectedContents(FinalStatus final_status,
267 const base::WeakPtr<TestPrerender>& handle); 259 const base::WeakPtr<TestPrerender>& handle);
268 ~ExpectedContents(); 260 ~ExpectedContents();
269 261
270 FinalStatus final_status; 262 FinalStatus final_status;
271 base::WeakPtr<TestPrerender> handle; 263 base::WeakPtr<TestPrerender> handle;
272 }; 264 };
273 265
274 std::deque<ExpectedContents> expected_contents_queue_; 266 std::deque<ExpectedContents> expected_contents_queue_;
275
276 DISALLOW_COPY_AND_ASSIGN(TestPrerenderContentsFactory);
277 }; 267 };
278 268
279 class PrerenderInProcessBrowserTest : virtual public InProcessBrowserTest { 269 class PrerenderInProcessBrowserTest : virtual public InProcessBrowserTest {
280 public: 270 public:
281 PrerenderInProcessBrowserTest(); 271 PrerenderInProcessBrowserTest();
282 272
283 ~PrerenderInProcessBrowserTest() override; 273 ~PrerenderInProcessBrowserTest() override;
284 274
285 void SetUpCommandLine(base::CommandLine* command_line) override; 275 void SetUpCommandLine(base::CommandLine* command_line) override;
286 void SetUpInProcessBrowserTestFixture() override; 276 void SetUpInProcessBrowserTestFixture() override;
(...skipping 10 matching lines...) Expand all
297 bool UrlIsInPrerenderManager(const GURL& url) const; 287 bool UrlIsInPrerenderManager(const GURL& url) const;
298 288
299 // Convenience function to get the currently active WebContents in 289 // Convenience function to get the currently active WebContents in
300 // current_browser(). 290 // current_browser().
301 content::WebContents* GetActiveWebContents() const; 291 content::WebContents* GetActiveWebContents() const;
302 292
303 PrerenderManager* GetPrerenderManager() const; 293 PrerenderManager* GetPrerenderManager() const;
304 294
305 TestPrerenderContents* GetPrerenderContentsFor(const GURL& url) const; 295 TestPrerenderContents* GetPrerenderContentsFor(const GURL& url) const;
306 296
297 std::unique_ptr<TestPrerender> PrerenderTestURL(
298 const std::string& html_file,
299 FinalStatus expected_final_status,
300 int expected_number_of_loads);
301
302 std::unique_ptr<TestPrerender> PrerenderTestURL(
303 const GURL& url,
304 FinalStatus expected_final_status,
305 int expected_number_of_loads);
306
307 std::vector<std::unique_ptr<TestPrerender>> PrerenderTestURL(
308 const std::string& html_file,
309 const std::vector<FinalStatus>& expected_final_status_queue,
310 int expected_number_of_loads);
311
307 // Set up an HTTPS server. 312 // Set up an HTTPS server.
308 void UseHttpsSrcServer(); 313 void UseHttpsSrcServer();
309 314
310 // Returns the currently active server. See |UseHttpsSrcServer|. 315 // Returns the currently active server. See |UseHttpsSrcServer|.
311 net::EmbeddedTestServer* src_server(); 316 net::EmbeddedTestServer* src_server();
312 317
313 safe_browsing::TestSafeBrowsingServiceFactory* safe_browsing_factory() const { 318 safe_browsing::TestSafeBrowsingServiceFactory* safe_browsing_factory() const {
314 return safe_browsing_factory_.get(); 319 return safe_browsing_factory_.get();
315 } 320 }
316 321
(...skipping 14 matching lines...) Expand all
331 336
332 const base::HistogramTester& histogram_tester() { return histogram_tester_; } 337 const base::HistogramTester& histogram_tester() { return histogram_tester_; }
333 338
334 // Returns a string for pattern-matching TaskManager tab entries. 339 // Returns a string for pattern-matching TaskManager tab entries.
335 base::string16 MatchTaskManagerTab(const char* page_title); 340 base::string16 MatchTaskManagerTab(const char* page_title);
336 341
337 // Returns a string for pattern-matching TaskManager prerender entries. 342 // Returns a string for pattern-matching TaskManager prerender entries.
338 base::string16 MatchTaskManagerPrerender(const char* page_title); 343 base::string16 MatchTaskManagerPrerender(const char* page_title);
339 344
340 protected: 345 protected:
341 // For each FinalStatus in |expected_final_status_queue| creates a prerender 346 // To be called from PrerenderTestUrlImpl. Sets up the appropraite prerenders,
342 // that is going to verify the correctness of its FinalStatus upon 347 // checking for the expected final status, navigates to the loader url, and
343 // destruction. Waits for creation of the first PrerenderContents. 348 // waits for the load.
344 std::vector<std::unique_ptr<TestPrerender>> NavigateWithPrerenders( 349 std::vector<std::unique_ptr<TestPrerender>> NavigateWithPrerenders(
345 const GURL& loader_url, 350 const GURL& loader_url,
346 const std::vector<FinalStatus>& expected_final_status_queue); 351 const std::vector<FinalStatus>& expected_final_status_queue,
347 352 int expected_number_of_loads);
348 // Creates the URL that instructs the test server to substitute the text
349 // |replacement_variable| in the contents of the file pointed to by
350 // |loader_path| with |url_to_prerender|. Also appends the |loader_query| to
351 // the URL.
352 GURL ServeLoaderURL(const std::string& loader_path,
353 const std::string& replacement_variable,
354 const GURL& url_to_prerender,
355 const std::string& loader_query);
356 353
357 private: 354 private:
355 // Implement load of a url for a prerender test. prerender_url should be
356 // loaded, and we should expect to see one prerenderer created, and exit, for
357 // each entry in expected_final_status_queue, and seeing
358 // expected_number_of_loads. Specific tests can provide additional
359 // verification. Note this should be called by one of the convenience wrappers
360 // defined above.
361 virtual std::vector<std::unique_ptr<TestPrerender>> PrerenderTestURLImpl(
362 const GURL& prerender_url,
363 const std::vector<FinalStatus>& expected_final_status_queue,
364 int expected_number_of_loads) = 0;
365
358 std::unique_ptr<ExternalProtocolHandler::Delegate> 366 std::unique_ptr<ExternalProtocolHandler::Delegate>
359 external_protocol_handler_delegate_; 367 external_protocol_handler_delegate_;
360 std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory> 368 std::unique_ptr<safe_browsing::TestSafeBrowsingServiceFactory>
361 safe_browsing_factory_; 369 safe_browsing_factory_;
362 TestPrerenderContentsFactory* prerender_contents_factory_; 370 TestPrerenderContentsFactory* prerender_contents_factory_;
363 Browser* explicitly_set_browser_; 371 Browser* explicitly_set_browser_;
364 bool autostart_test_server_; 372 bool autostart_test_server_;
365 base::HistogramTester histogram_tester_; 373 base::HistogramTester histogram_tester_;
366 std::unique_ptr<net::EmbeddedTestServer> https_src_server_; 374 std::unique_ptr<net::EmbeddedTestServer> https_src_server_;
367
368 DISALLOW_COPY_AND_ASSIGN(PrerenderInProcessBrowserTest);
369 }; 375 };
370 376
371 // Makes |url| respond to requests with the contents of |file|, counting the 377 // Makes |url| respond to requests with the contents of |file|, counting the
372 // number that start in |counter|. 378 // number that start in |counter|.
373 void CreateCountingInterceptorOnIO( 379 void CreateCountingInterceptorOnIO(
374 const GURL& url, 380 const GURL& url,
375 const base::FilePath& file, 381 const base::FilePath& file,
376 const base::WeakPtr<RequestCounter>& counter); 382 const base::WeakPtr<RequestCounter>& counter);
377 383
378 // Makes |url| respond to requests with the contents of |file|. 384 // Makes |url| respond to requests with the contents of |file|.
379 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file); 385 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file);
380 386
381 } // namespace test_utils 387 } // namespace test_utils
382 388
383 } // namespace prerender 389 } // namespace prerender
384 390
385 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_TEST_UTILS_H_ 391 #endif // CHROME_BROWSER_PRERENDER_PRERENDER_TEST_UTILS_H_
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prerender_nostate_prefetch_browsertest.cc ('k') | chrome/browser/prerender/prerender_test_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698