Commit 0a76298d authored by tburkard@chromium.org's avatar tburkard@chromium.org

Browser Test to verify that a favicon is being displayed correctly after a...

Browser Test to verify that a favicon is being displayed correctly after a prerendered page is swapped in.
R=dominich@chromium.org
Review URL: http://codereview.chromium.org/7104081

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@88527 0039d316-1c4b-4281-b951-d872f2087c98
parent fa062426
...@@ -7,7 +7,9 @@ ...@@ -7,7 +7,9 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/string_util.h" #include "base/string_util.h"
#include "base/test/test_timeouts.h"
#include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prerender/prerender_contents.h" #include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/prerender/prerender_manager.h" #include "chrome/browser/prerender/prerender_manager.h"
...@@ -381,9 +383,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -381,9 +383,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
void OpenDestUrlInNewWindowViaJs() const { void OpenDestUrlInNewWindowViaJs() const {
// Make sure in navigating we have a URL to use in the PrerenderManager. // Make sure in navigating we have a URL to use in the PrerenderManager.
TestPrerenderContents* prerender_contents = TestPrerenderContents* prerender_contents = GetPrerenderContents();
static_cast<TestPrerenderContents*>(
prerender_manager()->FindEntry(dest_url_));
ASSERT_TRUE(prerender_contents != NULL); ASSERT_TRUE(prerender_contents != NULL);
prerender_contents->set_quit_message_loop_on_destruction(false); prerender_contents->set_quit_message_loop_on_destruction(false);
...@@ -395,7 +395,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -395,7 +395,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
EXPECT_TRUE(open_window_result); EXPECT_TRUE(open_window_result);
// If the prerender contents has not been destroyed, run message loop. // If the prerender contents has not been destroyed, run message loop.
if (prerender_manager()->FindEntry(dest_url_) != NULL) { if (GetPrerenderContents() != NULL) {
prerender_contents->set_quit_message_loop_on_destruction(true); prerender_contents->set_quit_message_loop_on_destruction(true);
ui_test_utils::RunMessageLoop(); ui_test_utils::RunMessageLoop();
} }
...@@ -403,9 +403,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -403,9 +403,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
void OpenDestUrlInNewWindowViaClick() const { void OpenDestUrlInNewWindowViaClick() const {
// Make sure in navigating we have a URL to use in the PrerenderManager. // Make sure in navigating we have a URL to use in the PrerenderManager.
TestPrerenderContents* prerender_contents = TestPrerenderContents* prerender_contents = GetPrerenderContents();
static_cast<TestPrerenderContents*>(
prerender_manager()->FindEntry(dest_url_));
ASSERT_TRUE(prerender_contents != NULL); ASSERT_TRUE(prerender_contents != NULL);
prerender_contents->set_quit_message_loop_on_destruction(false); prerender_contents->set_quit_message_loop_on_destruction(false);
...@@ -417,7 +415,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -417,7 +415,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
EXPECT_TRUE(click_prerendered_link_result); EXPECT_TRUE(click_prerendered_link_result);
// If the prerender contents has not been destroyed, run message loop. // If the prerender contents has not been destroyed, run message loop.
if (prerender_manager()->FindEntry(dest_url_) != NULL) { if (GetPrerenderContents() != NULL) {
prerender_contents->set_quit_message_loop_on_destruction(true); prerender_contents->set_quit_message_loop_on_destruction(true);
ui_test_utils::RunMessageLoop(); ui_test_utils::RunMessageLoop();
} }
...@@ -465,6 +463,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -465,6 +463,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
return safe_browsing_factory_->most_recent_service(); return safe_browsing_factory_->most_recent_service();
} }
TestPrerenderContents* GetPrerenderContents() const {
return static_cast<TestPrerenderContents*>(
prerender_manager()->FindEntry(dest_url_));
}
private: private:
void PrerenderTestURLImpl( void PrerenderTestURLImpl(
const GURL& url, const GURL& url,
...@@ -510,12 +513,9 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -510,12 +513,9 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
// handle browser navigation directly. // handle browser navigation directly.
browser()->OpenURL(src_url, GURL(), CURRENT_TAB, PageTransition::TYPED); browser()->OpenURL(src_url, GURL(), CURRENT_TAB, PageTransition::TYPED);
TestPrerenderContents* prerender_contents = NULL;
ui_test_utils::RunMessageLoop(); ui_test_utils::RunMessageLoop();
prerender_contents = TestPrerenderContents* prerender_contents = GetPrerenderContents();
static_cast<TestPrerenderContents*>(
prerender_manager()->FindEntry(dest_url_));
if (ShouldRenderPrerenderedPageCorrectly(expected_final_status)) { if (ShouldRenderPrerenderedPageCorrectly(expected_final_status)) {
ASSERT_TRUE(prerender_contents != NULL); ASSERT_TRUE(prerender_contents != NULL);
...@@ -539,7 +539,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -539,7 +539,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
void NavigateToURLImpl(const GURL& dest_url) const { void NavigateToURLImpl(const GURL& dest_url) const {
// Make sure in navigating we have a URL to use in the PrerenderManager. // Make sure in navigating we have a URL to use in the PrerenderManager.
EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) != NULL); EXPECT_TRUE(GetPrerenderContents() != NULL);
// ui_test_utils::NavigateToURL waits until DidStopLoading is called on // ui_test_utils::NavigateToURL waits until DidStopLoading is called on
// the current tab. As that tab is going to end up deleted, and may never // the current tab. As that tab is going to end up deleted, and may never
...@@ -553,7 +553,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ...@@ -553,7 +553,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
ui_test_utils::RunMessageLoop(); ui_test_utils::RunMessageLoop();
// Make sure the PrerenderContents found earlier was used or removed. // Make sure the PrerenderContents found earlier was used or removed.
EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) == NULL); EXPECT_TRUE(GetPrerenderContents() == NULL);
if (call_javascript_) { if (call_javascript_) {
// Check if page behaved as expected when actually displayed. // Check if page behaved as expected when actually displayed.
...@@ -1340,4 +1340,24 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderLocalStorageWrite) { ...@@ -1340,4 +1340,24 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderLocalStorageWrite) {
NavigateToDestURL(); NavigateToDestURL();
} }
// Checks that the favicon is properly loaded on prerender.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderFavicon) {
PrerenderTestURL("files/prerender/prerender_favicon.html",
FINAL_STATUS_USED,
1);
TestPrerenderContents* prerender_contents = GetPrerenderContents();
ASSERT_TRUE(prerender_contents != NULL);
prerender_contents->set_quit_message_loop_on_destruction(false);
// The Favicon should show within two seconds of navigating to the page,
// otherwise something is wrong.
MessageLoopForUI::current()->PostDelayedTask(
FROM_HERE,
new MessageLoop::QuitTask(),
TestTimeouts::action_timeout_ms());
NavigateToDestURL();
ASSERT_TRUE(TabContentsWrapper::GetCurrentWrapperForContents(
browser()->GetSelectedTabContents())->favicon_tab_helper()
->FaviconIsValid());
}
} // namespace prerender } // namespace prerender
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment