summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-13 20:18:09 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-13 20:18:09 +0000
commit2cac07a9be07db7f1316e60df7ea646e6018c9ba (patch)
treecced33935ed95bbfce28a3a9a07d9ce2578c43e3
parentbe5c7b7ec5d1aeb50122887d315a660c9ad578a4 (diff)
downloadchromium_src-2cac07a9be07db7f1316e60df7ea646e6018c9ba.zip
chromium_src-2cac07a9be07db7f1316e60df7ea646e6018c9ba.tar.gz
chromium_src-2cac07a9be07db7f1316e60df7ea646e6018c9ba.tar.bz2
Merge 256478 "Add a browser test for double-reload of navigation..."
> Add a browser test for double-reload of navigation errors after a crash. > > Regression test for FrameLoader fix in > https://codereview.chromium.org/188063003/ > > BUG=348918 > > Review URL: https://codereview.chromium.org/187633006 TBR=davidben@chromium.org Review URL: https://codereview.chromium.org/198063005 git-svn-id: svn://svn.chromium.org/chrome/branches/1847/src@256910 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/crash_recovery_browsertest.cc45
1 files changed, 27 insertions, 18 deletions
diff --git a/chrome/browser/crash_recovery_browsertest.cc b/chrome/browser/crash_recovery_browsertest.cc
index e22d840..3a2b975 100644
--- a/chrome/browser/crash_recovery_browsertest.cc
+++ b/chrome/browser/crash_recovery_browsertest.cc
@@ -14,6 +14,7 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/page_transition_types.h"
+#include "content/public/test/browser_test_utils.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
@@ -22,6 +23,7 @@
using content::NavigationController;
using content::OpenURLParams;
using content::Referrer;
+using content::WebContents;
namespace {
@@ -64,6 +66,10 @@ class CacheMaxAgeHandler {
} // namespace
class CrashRecoveryBrowserTest : public InProcessBrowserTest {
+ protected:
+ WebContents* GetActiveWebContents() {
+ return browser()->tab_strip_model()->GetActiveWebContents();
+ }
};
// Test that reload works after a crash.
@@ -80,13 +86,8 @@ IN_PROC_BROWSER_TEST_F(CrashRecoveryBrowserTest, Reload) {
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_before_crash));
SimulateRendererCrash(browser());
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_LOAD_STOP,
- content::Source<NavigationController>(
- &browser()->tab_strip_model()->GetActiveWebContents()->
- GetController()));
chrome::Reload(browser(), CURRENT_TAB);
- observer.Wait();
+ content::WaitForLoadStop(GetActiveWebContents());
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_after_crash));
EXPECT_NE(title_before_crash, title_after_crash);
@@ -111,13 +112,8 @@ IN_PROC_BROWSER_TEST_F(CrashRecoveryBrowserTest, ReloadCacheRevalidate) {
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_before_crash));
SimulateRendererCrash(browser());
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_LOAD_STOP,
- content::Source<NavigationController>(
- &browser()->tab_strip_model()->GetActiveWebContents()->
- GetController()));
chrome::Reload(browser(), CURRENT_TAB);
- observer.Wait();
+ content::WaitForLoadStop(GetActiveWebContents());
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_after_crash));
EXPECT_NE(title_before_crash, title_after_crash);
@@ -142,14 +138,27 @@ IN_PROC_BROWSER_TEST_F(CrashRecoveryBrowserTest, LoadInNewTab) {
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_before_crash));
SimulateRendererCrash(browser());
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_LOAD_STOP,
- content::Source<NavigationController>(
- &browser()->tab_strip_model()->GetActiveWebContents()->
- GetController()));
chrome::Reload(browser(), CURRENT_TAB);
- observer.Wait();
+ content::WaitForLoadStop(GetActiveWebContents());
ASSERT_TRUE(ui_test_utils::GetCurrentTabTitle(browser(),
&title_after_crash));
EXPECT_EQ(title_before_crash, title_after_crash);
}
+
+// Tests that reloads of navigation errors behave correctly after a crash.
+// Regression test for http://crbug.com/348918
+IN_PROC_BROWSER_TEST_F(CrashRecoveryBrowserTest, DoubleReloadWithError) {
+ GURL url("chrome://bogus");
+ ui_test_utils::NavigateToURL(browser(), url);
+ ASSERT_EQ(url, GetActiveWebContents()->GetVisibleURL());
+
+ SimulateRendererCrash(browser());
+
+ chrome::Reload(browser(), CURRENT_TAB);
+ content::WaitForLoadStop(GetActiveWebContents());
+ ASSERT_EQ(url, GetActiveWebContents()->GetVisibleURL());
+
+ chrome::Reload(browser(), CURRENT_TAB);
+ content::WaitForLoadStop(GetActiveWebContents());
+ ASSERT_EQ(url, GetActiveWebContents()->GetVisibleURL());
+}