| Index: chrome/browser/download/save_page_browsertest.cc
|
| diff --git a/chrome/browser/download/save_page_browsertest.cc b/chrome/browser/download/save_page_browsertest.cc
|
| index 544d49935ad23def57a279a2ebfcfeb6611b5b31..b99e84f1f6c4bdde867232009eb9db67a7231958 100644
|
| --- a/chrome/browser/download/save_page_browsertest.cc
|
| +++ b/chrome/browser/download/save_page_browsertest.cc
|
| @@ -33,6 +33,8 @@
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_commands.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| +#include "chrome/browser/ui/login/login_handler.h"
|
| +#include "chrome/browser/ui/login/login_handler_test_utils.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/chrome_switches.h"
|
| @@ -46,14 +48,17 @@
|
| #include "components/prefs/pref_service.h"
|
| #include "content/public/browser/download_item.h"
|
| #include "content/public/browser/download_manager.h"
|
| +#include "content/public/browser/navigation_controller.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/notification_types.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/common/content_switches.h"
|
| +#include "content/public/common/referrer.h"
|
| #include "content/public/common/url_constants.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| +#include "content/public/test/test_navigation_observer.h"
|
| #include "content/public/test/test_utils.h"
|
| #include "net/base/filename_util.h"
|
| #include "net/dns/mock_host_resolver.h"
|
| @@ -984,24 +989,23 @@ class SavePageOriginalVsSavedComparisonTest
|
| : public SavePageSitePerProcessBrowserTest,
|
| public ::testing::WithParamInterface<content::SavePageType> {
|
| protected:
|
| - void TestOriginalVsSavedPage(
|
| + void TestCurrentVsSavedPage(
|
| content::SavePageType save_page_type,
|
| - const GURL& url,
|
| int expected_number_of_frames,
|
| const std::vector<std::string>& expected_substrings) {
|
| - // Navigate to the test page and verify if test expectations
|
| - // are met (this is mostly a sanity check - a failure to meet
|
| - // expectations would probably mean that there is a test bug
|
| - // (i.e. that we got called with wrong expected_foo argument).
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| + // Verify if test expectations are met on the current page (this is mostly
|
| + // a sanity check - a failure to meet expectations would probably mean that
|
| + // there is a test bug (i.e. that we got called with wrong expected_foo
|
| + // argument).
|
| + GURL original_url = GetCurrentTab(browser())->GetLastCommittedURL();
|
| DLOG(INFO) << "Verifying test expectations for original page... : "
|
| - << GetCurrentTab(browser())->GetLastCommittedURL();
|
| + << original_url;
|
| AssertExpectationsAboutCurrentTab(expected_number_of_frames,
|
| expected_substrings);
|
|
|
| // Save the page.
|
| base::FilePath full_file_name, dir;
|
| - SaveCurrentTab(url, save_page_type, "save_result", -1, &dir,
|
| + SaveCurrentTab(original_url, save_page_type, "save_result", -1, &dir,
|
| &full_file_name);
|
| ASSERT_FALSE(HasFailure());
|
|
|
| @@ -1085,7 +1089,8 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, CrossSite) {
|
| GURL url(
|
| embedded_test_server()->GetURL("a.com", "/save_page/frames-xsite.htm"));
|
|
|
| - TestOriginalVsSavedPage(save_page_type, url, 3, expected_substrings);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 3, expected_substrings);
|
| }
|
|
|
| // Test compares original-vs-saved for a page with <object> elements.
|
| @@ -1106,15 +1111,15 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, ObjectElements) {
|
| };
|
| std::vector<std::string> expected_substrings(std::begin(arr), std::end(arr));
|
|
|
| - GURL url(
|
| - embedded_test_server()->GetURL("a.com", "/save_page/frames-objects.htm"));
|
| -
|
| // TODO(lukasza): crbug.com/553478: Enable <object> testing of MHTML.
|
| if (save_page_type == content::SAVE_PAGE_TYPE_AS_MHTML)
|
| return;
|
|
|
| - TestOriginalVsSavedPage(save_page_type, url, expected_number_of_frames,
|
| - expected_substrings);
|
| + GURL url(
|
| + embedded_test_server()->GetURL("a.com", "/save_page/frames-objects.htm"));
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, expected_number_of_frames,
|
| + expected_substrings);
|
| }
|
|
|
| // Test compares original-vs-saved for a page with frames at about:blank uri.
|
| @@ -1133,8 +1138,8 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, AboutBlank) {
|
|
|
| GURL url(embedded_test_server()->GetURL("a.com",
|
| "/save_page/frames-about-blank.htm"));
|
| -
|
| - TestOriginalVsSavedPage(save_page_type, url, 4, expected_substrings);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 4, expected_substrings);
|
| }
|
|
|
| // Test compares original-vs-saved for a page with nested frames.
|
| @@ -1152,8 +1157,8 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, NestedFrames) {
|
|
|
| GURL url(
|
| embedded_test_server()->GetURL("a.com", "/save_page/frames-nested.htm"));
|
| -
|
| - TestOriginalVsSavedPage(save_page_type, url, 3, expected_substrings);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 3, expected_substrings);
|
| }
|
|
|
| // Test for crbug.com/106364 and crbug.com/538188.
|
| @@ -1175,8 +1180,8 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, RuntimeChanges) {
|
|
|
| GURL url(embedded_test_server()->GetURL(
|
| "a.com", "/save_page/frames-runtime-changes.htm?do_runtime_changes=1"));
|
| -
|
| - TestOriginalVsSavedPage(save_page_type, url, 5, expected_substrings);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 5, expected_substrings);
|
| }
|
|
|
| // Test for saving frames with various encodings:
|
| @@ -1204,9 +1209,6 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, Encoding) {
|
| };
|
| std::vector<std::string> expected_substrings(std::begin(arr), std::end(arr));
|
|
|
| - GURL url(embedded_test_server()->GetURL("a.com",
|
| - "/save_page/frames-encodings.htm"));
|
| -
|
| // TODO(lukasza): crbug.com/541699: MHTML needs to handle multi-byte encodings
|
| // by either:
|
| // 1. Continuing to preserve the original encoding, but starting to round-trip
|
| @@ -1216,7 +1218,10 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, Encoding) {
|
| if (save_page_type == content::SAVE_PAGE_TYPE_AS_MHTML)
|
| return;
|
|
|
| - TestOriginalVsSavedPage(save_page_type, url, 7, expected_substrings);
|
| + GURL url(embedded_test_server()->GetURL("a.com",
|
| + "/save_page/frames-encodings.htm"));
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 7, expected_substrings);
|
| }
|
|
|
| // Test for saving style element and attribute (see also crbug.com/568293).
|
| @@ -1230,13 +1235,14 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, Style) {
|
| std::vector<std::string> expected_substrings(std::begin(arr), std::end(arr));
|
|
|
| GURL url(embedded_test_server()->GetURL("a.com", "/save_page/style.htm"));
|
| -
|
| - TestOriginalVsSavedPage(save_page_type, url, 6, expected_substrings);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| + TestCurrentVsSavedPage(save_page_type, 6, expected_substrings);
|
| }
|
|
|
| // Test for saving a page with broken subresources:
|
| // - Broken, undecodable image (see also https://crbug.com/586680)
|
| // - Broken link, to unresolvable host (see also https://crbug.com/594219)
|
| +// - Resource requiring authentication
|
| IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, BrokenImage) {
|
| // Clear resolver rules to make sure that *.no.such.host used in the test html
|
| // doesn't resolve to 127.0.0.1
|
| @@ -1249,10 +1255,26 @@ IN_PROC_BROWSER_TEST_P(SavePageOriginalVsSavedComparisonTest, BrokenImage) {
|
| };
|
| std::vector<std::string> expected_substrings(std::begin(arr), std::end(arr));
|
|
|
| + // Navigate to the test URL and dismiss the auth dialog.
|
| GURL url(embedded_test_server()->GetURL("127.0.0.1",
|
| "/save_page/broken-image.htm"));
|
| -
|
| - TestOriginalVsSavedPage(save_page_type, url, 1, expected_substrings);
|
| + content::WebContents* web_contents =
|
| + browser()->tab_strip_model()->GetActiveWebContents();
|
| + content::TestNavigationObserver navigation_observer(web_contents, 1);
|
| + content::NavigationController* navigation_controller =
|
| + &web_contents->GetController();
|
| + LoginPromptBrowserTestObserver login_observer;
|
| + login_observer.Register(
|
| + content::Source<content::NavigationController>(navigation_controller));
|
| + WindowedAuthNeededObserver auth_needed_waiter(navigation_controller);
|
| + web_contents->OpenURL(content::OpenURLParams(
|
| + url, content::Referrer(), CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false));
|
| + auth_needed_waiter.Wait();
|
| + ASSERT_EQ(1u, login_observer.handlers().size());
|
| + login_observer.handlers().front()->CancelAuth();
|
| + navigation_observer.Wait();
|
| +
|
| + TestCurrentVsSavedPage(save_page_type, 1, expected_substrings);
|
| }
|
|
|
| INSTANTIATE_TEST_CASE_P(
|
|
|