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

Unified Diff: chrome/browser/ssl/ssl_browser_tests.cc

Issue 7826036: Don't crash if DontProceed is chosen on the SSL interstitial page after Proceed is chosen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add a browser test Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ssl/ssl_browser_tests.cc
diff --git a/chrome/browser/ssl/ssl_browser_tests.cc b/chrome/browser/ssl/ssl_browser_tests.cc
index 81f78055907564a6c07abfc50b7d336711bad364..ada5a60ad6f6f27218d6642780fc18f8fa5ad5cc 100644
--- a/chrome/browser/ssl/ssl_browser_tests.cc
+++ b/chrome/browser/ssl/ssl_browser_tests.cc
@@ -9,6 +9,7 @@
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
@@ -475,6 +476,48 @@ IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSErrorWithNoNavEntry) {
ASSERT_TRUE(tab2->tab_contents()->interstitial_page());
}
+IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadHTTPSDownload) {
+ ASSERT_TRUE(test_server()->Start());
+ ASSERT_TRUE(https_server_expired_.Start());
+ GURL url_non_dangerous = test_server()->GetURL("");
+ GURL url_dangerous = https_server_expired_.GetURL(
+ "files/downloads/dangerous/dangerous.exe");
+
+ // Visit a non-dangerous page.
+ ui_test_utils::NavigateToURL(browser(), url_non_dangerous);
+
+ // Now, start a transition to dangerous download.
+ {
+ ui_test_utils::WindowedNotificationObserver observer(
+ content::NOTIFICATION_LOAD_STOP, NotificationService::AllSources());
+ browser::NavigateParams navigate_params(browser(), url_dangerous,
+ PageTransition::TYPED);
+ browser::Navigate(&navigate_params);
+ observer.Wait();
+ }
+
+ // Proceed through the SSL interstitial. This doesn't use
+ // |ProceedThroughInterstitial| since no page load will commit.
+ TabContents* tab = browser()->GetSelectedTabContents();
+ ASSERT_TRUE(tab != NULL);
+ ASSERT_TRUE(tab->interstitial_page() != NULL);
+ {
+ ui_test_utils::WindowedNotificationObserver observer(
+ chrome::NOTIFICATION_DOWNLOAD_INITIATED,
+ NotificationService::AllSources());
+ tab->interstitial_page()->Proceed();
+ observer.Wait();
+ }
+
+ // There should still be an interstitial at this point. Press the
+ // back button on the browser. Note that this doesn't wait for a
+ // NAV_ENTRY_COMMITTED notification because going back with an
+ // active interstitial simply hides the interstitial.
+ ASSERT_TRUE(tab->interstitial_page() != NULL);
+ EXPECT_TRUE(browser()->CanGoBack());
+ browser()->GoBack(CURRENT_TAB);
+}
+
//
// Insecure content
//
« chrome/browser/ssl/ssl_blocking_page.cc ('K') | « chrome/browser/ssl/ssl_blocking_page.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698