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

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

Issue 7046053: Add PrerenderUnload browser test (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove include Created 9 years, 6 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
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_loader_with_unload.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <deque> 5 #include <deque>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h"
10 #include "base/test/test_timeouts.h" 11 #include "base/test/test_timeouts.h"
11 #include "chrome/browser/content_settings/host_content_settings_map.h" 12 #include "chrome/browser/content_settings/host_content_settings_map.h"
12 #include "chrome/browser/favicon/favicon_tab_helper.h" 13 #include "chrome/browser/favicon/favicon_tab_helper.h"
13 #include "chrome/browser/prefs/pref_service.h" 14 #include "chrome/browser/prefs/pref_service.h"
14 #include "chrome/browser/prerender/prerender_contents.h" 15 #include "chrome/browser/prerender/prerender_contents.h"
15 #include "chrome/browser/prerender/prerender_manager.h" 16 #include "chrome/browser/prerender/prerender_manager.h"
16 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
17 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 18 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
18 #include "chrome/browser/task_manager/task_manager.h" 19 #include "chrome/browser/task_manager/task_manager.h"
19 #include "chrome/browser/ui/browser.h" 20 #include "chrome/browser/ui/browser.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 private: 311 private:
311 FakeSafeBrowsingService* most_recent_service_; 312 FakeSafeBrowsingService* most_recent_service_;
312 }; 313 };
313 314
314 class PrerenderBrowserTest : public InProcessBrowserTest { 315 class PrerenderBrowserTest : public InProcessBrowserTest {
315 public: 316 public:
316 PrerenderBrowserTest() 317 PrerenderBrowserTest()
317 : safe_browsing_factory_(new TestSafeBrowsingServiceFactory()), 318 : safe_browsing_factory_(new TestSafeBrowsingServiceFactory()),
318 prerender_contents_factory_(NULL), 319 prerender_contents_factory_(NULL),
319 use_https_src_server_(false), 320 use_https_src_server_(false),
320 call_javascript_(true) { 321 call_javascript_(true),
322 loader_path_("files/prerender/prerender_loader.html") {
321 EnableDOMAutomation(); 323 EnableDOMAutomation();
322 } 324 }
323 325
324 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 326 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
325 SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get()); 327 SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get());
326 } 328 }
327 329
328 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 330 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
329 command_line->AppendSwitchASCII(switches::kPrerender, 331 command_line->AppendSwitchASCII(switches::kPrerender,
330 switches::kPrerenderSwitchValueEnabled); 332 switches::kPrerenderSwitchValueEnabled);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 463
462 FakeSafeBrowsingService* GetSafeBrowsingService() { 464 FakeSafeBrowsingService* GetSafeBrowsingService() {
463 return safe_browsing_factory_->most_recent_service(); 465 return safe_browsing_factory_->most_recent_service();
464 } 466 }
465 467
466 TestPrerenderContents* GetPrerenderContents() const { 468 TestPrerenderContents* GetPrerenderContents() const {
467 return static_cast<TestPrerenderContents*>( 469 return static_cast<TestPrerenderContents*>(
468 prerender_manager()->FindEntry(dest_url_)); 470 prerender_manager()->FindEntry(dest_url_));
469 } 471 }
470 472
473 void set_loader_path(const std::string& path) {
474 loader_path_ = path;
475 }
476
471 private: 477 private:
472 void PrerenderTestURLImpl( 478 void PrerenderTestURLImpl(
473 const GURL& url, 479 const GURL& url,
474 const std::deque<FinalStatus>& expected_final_status_queue, 480 const std::deque<FinalStatus>& expected_final_status_queue,
475 int total_navigations) { 481 int total_navigations) {
476 dest_url_ = url; 482 dest_url_ = url;
477 483
478 std::vector<net::TestServer::StringPair> replacement_text; 484 std::vector<net::TestServer::StringPair> replacement_text;
479 replacement_text.push_back( 485 replacement_text.push_back(
480 make_pair("REPLACE_WITH_PRERENDER_URL", dest_url_.spec())); 486 make_pair("REPLACE_WITH_PRERENDER_URL", dest_url_.spec()));
481 std::string replacement_path; 487 std::string replacement_path;
482 ASSERT_TRUE(net::TestServer::GetFilePathWithReplacements( 488 ASSERT_TRUE(net::TestServer::GetFilePathWithReplacements(
483 "files/prerender/prerender_loader.html", 489 loader_path_,
484 replacement_text, 490 replacement_text,
485 &replacement_path)); 491 &replacement_path));
486 492
487 net::TestServer* src_server = test_server(); 493 net::TestServer* src_server = test_server();
488 scoped_ptr<net::TestServer> https_src_server; 494 scoped_ptr<net::TestServer> https_src_server;
489 if (use_https_src_server_) { 495 if (use_https_src_server_) {
490 https_src_server.reset( 496 https_src_server.reset(
491 new net::TestServer(net::TestServer::TYPE_HTTPS, 497 new net::TestServer(net::TestServer::TYPE_HTTPS,
492 FilePath(FILE_PATH_LITERAL("chrome/test/data")))); 498 FilePath(FILE_PATH_LITERAL("chrome/test/data"))));
493 ASSERT_TRUE(https_src_server->Start()); 499 ASSERT_TRUE(https_src_server->Start());
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 &display_test_result)); 570 &display_test_result));
565 EXPECT_TRUE(display_test_result); 571 EXPECT_TRUE(display_test_result);
566 } 572 }
567 } 573 }
568 574
569 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; 575 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_;
570 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; 576 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_;
571 GURL dest_url_; 577 GURL dest_url_;
572 bool use_https_src_server_; 578 bool use_https_src_server_;
573 bool call_javascript_; 579 bool call_javascript_;
580 std::string loader_path_;
574 }; 581 };
575 582
576 // Checks that a page is correctly prerendered in the case of a 583 // Checks that a page is correctly prerendered in the case of a
577 // <link rel=prerender> tag and then loaded into a tab in response to a 584 // <link rel=prerender> tag and then loaded into a tab in response to a
578 // navigation. 585 // navigation.
579 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { 586 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) {
580 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 587 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
581 NavigateToDestURL(); 588 NavigateToDestURL();
582 } 589 }
583 590
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 MessageLoopForUI::current()->PostDelayedTask( 1360 MessageLoopForUI::current()->PostDelayedTask(
1354 FROM_HERE, 1361 FROM_HERE,
1355 new MessageLoop::QuitTask(), 1362 new MessageLoop::QuitTask(),
1356 TestTimeouts::action_timeout_ms()); 1363 TestTimeouts::action_timeout_ms());
1357 NavigateToDestURL(); 1364 NavigateToDestURL();
1358 ASSERT_TRUE(TabContentsWrapper::GetCurrentWrapperForContents( 1365 ASSERT_TRUE(TabContentsWrapper::GetCurrentWrapperForContents(
1359 browser()->GetSelectedTabContents())->favicon_tab_helper() 1366 browser()->GetSelectedTabContents())->favicon_tab_helper()
1360 ->FaviconIsValid()); 1367 ->FaviconIsValid());
1361 } 1368 }
1362 1369
1370 // Checks that when a prerendered page is swapped in to a referring page, the
1371 // unload handlers on the referring page are executed.
1372 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderUnload) {
1373 set_loader_path("files/prerender/prerender_loader_with_unload.html");
1374 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
1375 ui_test_utils::TitleWatcher title_watcher(browser()->GetSelectedTabContents(),
1376 ASCIIToUTF16("Unloaded"));
1377 NavigateToDestURL();
1378 EXPECT_TRUE(title_watcher.Wait());
1379 }
1380
1363 } // namespace prerender 1381 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/test/data/prerender/prerender_loader_with_unload.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698