OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
12 #include "base/prefs/pref_member.h" | 12 #include "base/prefs/pref_member.h" |
13 #include "base/prefs/pref_service.h" | 13 #include "base/prefs/pref_service.h" |
14 #include "base/run_loop.h" | 14 #include "base/run_loop.h" |
15 #include "base/strings/utf_string_conversions.h" | |
15 #include "base/test/test_file_util.h" | 16 #include "base/test/test_file_util.h" |
16 #include "chrome/app/chrome_command_ids.h" | 17 #include "chrome/app/chrome_command_ids.h" |
17 #include "chrome/browser/download/chrome_download_manager_delegate.h" | 18 #include "chrome/browser/download/chrome_download_manager_delegate.h" |
18 #include "chrome/browser/download/download_history.h" | 19 #include "chrome/browser/download/download_history.h" |
19 #include "chrome/browser/download/download_prefs.h" | 20 #include "chrome/browser/download/download_prefs.h" |
20 #include "chrome/browser/download/download_service.h" | 21 #include "chrome/browser/download/download_service.h" |
21 #include "chrome/browser/download/download_service_factory.h" | 22 #include "chrome/browser/download/download_service_factory.h" |
22 #include "chrome/browser/download/save_package_file_picker.h" | 23 #include "chrome/browser/download/save_package_file_picker.h" |
23 #include "chrome/browser/net/url_request_mock_util.h" | 24 #include "chrome/browser/net/url_request_mock_util.h" |
24 #include "chrome/browser/profiles/profile.h" | 25 #include "chrome/browser/profiles/profile.h" |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
299 } | 300 } |
300 | 301 |
301 GURL NavigateToMockURL(const std::string& prefix) { | 302 GURL NavigateToMockURL(const std::string& prefix) { |
302 GURL url = URLRequestMockHTTPJob::GetMockUrl( | 303 GURL url = URLRequestMockHTTPJob::GetMockUrl( |
303 "save_page/" + prefix + ".htm"); | 304 "save_page/" + prefix + ".htm"); |
304 ui_test_utils::NavigateToURL(browser(), url); | 305 ui_test_utils::NavigateToURL(browser(), url); |
305 return url; | 306 return url; |
306 } | 307 } |
307 | 308 |
308 // Returns full paths of destination file and directory. | 309 // Returns full paths of destination file and directory. |
309 void GetDestinationPaths(const std::string& prefix, | 310 void GetDestinationPaths(const std::string& prefix, |
asanka
2015/11/11 21:37:37
The directory is not used for the MHTML case, righ
Łukasz Anforowicz
2015/11/11 23:55:40
Right.
asanka
2015/11/12 03:14:36
For ONLY_HTML, it now returns an ".mht" extension.
Łukasz Anforowicz
2015/11/12 06:30:27
Doh, you're right. I don't know how I could have
| |
310 base::FilePath* full_file_name, | 311 base::FilePath* full_file_name, |
311 base::FilePath* dir) { | 312 base::FilePath* dir, |
312 *full_file_name = save_dir_.path().AppendASCII(prefix + ".htm"); | 313 content::SavePageType save_page_type = |
314 content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML) { | |
315 std::string extension = | |
316 (save_page_type == content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML) ? ".htm" | |
317 : ".mht"; | |
318 *full_file_name = save_dir_.path().AppendASCII(prefix + extension); | |
313 *dir = save_dir_.path().AppendASCII(prefix + "_files"); | 319 *dir = save_dir_.path().AppendASCII(prefix + "_files"); |
314 } | 320 } |
315 | 321 |
316 WebContents* GetCurrentTab(Browser* browser) const { | 322 WebContents* GetCurrentTab(Browser* browser) const { |
317 WebContents* current_tab = | 323 WebContents* current_tab = |
318 browser->tab_strip_model()->GetActiveWebContents(); | 324 browser->tab_strip_model()->GetActiveWebContents(); |
319 EXPECT_TRUE(current_tab); | 325 EXPECT_TRUE(current_tab); |
320 return current_tab; | 326 return current_tab; |
321 } | 327 } |
322 | 328 |
(...skipping 20 matching lines...) Expand all Loading... | |
343 | 349 |
344 return (expected_url == download_item->GetOriginalUrl()); | 350 return (expected_url == download_item->GetOriginalUrl()); |
345 } | 351 } |
346 | 352 |
347 void SaveCurrentTab(const GURL& url, | 353 void SaveCurrentTab(const GURL& url, |
348 content::SavePageType save_page_type, | 354 content::SavePageType save_page_type, |
349 const std::string& prefix_for_output_files, | 355 const std::string& prefix_for_output_files, |
350 int expected_number_of_files, | 356 int expected_number_of_files, |
351 base::FilePath* output_dir, | 357 base::FilePath* output_dir, |
352 base::FilePath* main_file_name) { | 358 base::FilePath* main_file_name) { |
353 GetDestinationPaths(prefix_for_output_files, main_file_name, output_dir); | 359 GetDestinationPaths(prefix_for_output_files, main_file_name, output_dir, |
360 save_page_type); | |
354 DownloadPersistedObserver persisted( | 361 DownloadPersistedObserver persisted( |
355 browser()->profile(), | 362 browser()->profile(), |
356 base::Bind(&DownloadStoredProperly, url, *main_file_name, | 363 base::Bind(&DownloadStoredProperly, url, *main_file_name, |
357 expected_number_of_files, history::DownloadState::COMPLETE)); | 364 expected_number_of_files, history::DownloadState::COMPLETE)); |
358 base::RunLoop run_loop; | 365 base::RunLoop run_loop; |
359 SavePackageFinishedObserver observer( | 366 SavePackageFinishedObserver observer( |
360 content::BrowserContext::GetDownloadManager(browser()->profile()), | 367 content::BrowserContext::GetDownloadManager(browser()->profile()), |
361 run_loop.QuitClosure()); | 368 run_loop.QuitClosure()); |
362 ASSERT_TRUE(GetCurrentTab(browser()) | 369 ASSERT_TRUE(GetCurrentTab(browser()) |
363 ->SavePage(*main_file_name, *output_dir, save_page_type)); | 370 ->SavePage(*main_file_name, *output_dir, save_page_type)); |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
777 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); | 784 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady()); |
778 content::SetupCrossSiteRedirector(embedded_test_server()); | 785 content::SetupCrossSiteRedirector(embedded_test_server()); |
779 } | 786 } |
780 | 787 |
781 private: | 788 private: |
782 DISALLOW_COPY_AND_ASSIGN(SavePageSitePerProcessBrowserTest); | 789 DISALLOW_COPY_AND_ASSIGN(SavePageSitePerProcessBrowserTest); |
783 }; | 790 }; |
784 | 791 |
785 // Test for crbug.com/526786. | 792 // Test for crbug.com/526786. |
786 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveAsCompleteHtml) { | 793 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, SaveAsCompleteHtml) { |
787 GURL url(embedded_test_server()->GetURL("a.com", "/save_page/iframes.htm")); | 794 GURL url( |
795 embedded_test_server()->GetURL("a.com", "/save_page/frames-xsite.htm")); | |
788 ui_test_utils::NavigateToURL(browser(), url); | 796 ui_test_utils::NavigateToURL(browser(), url); |
789 | 797 |
790 base::FilePath full_file_name, dir; | 798 base::FilePath full_file_name, dir; |
791 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, "iframes", 5, | 799 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, |
792 &dir, &full_file_name); | 800 "frames-xsite-complete-html", 5, &dir, &full_file_name); |
793 ASSERT_FALSE(HasFailure()); | 801 ASSERT_FALSE(HasFailure()); |
794 | 802 |
795 EXPECT_TRUE(base::DirectoryExists(dir)); | 803 EXPECT_TRUE(base::DirectoryExists(dir)); |
796 base::FilePath expected_files[] = { | 804 base::FilePath expected_files[] = { |
797 full_file_name, | 805 full_file_name, |
798 dir.AppendASCII("a.html"), // From iframes.htm | 806 dir.AppendASCII("a.html"), // From iframes.htm |
799 dir.AppendASCII("b.html"), // From iframes.htm | 807 dir.AppendASCII("b.html"), // From iframes.htm |
800 dir.AppendASCII("1.css"), // From b.htm | 808 dir.AppendASCII("1.css"), // From b.htm |
801 dir.AppendASCII("1.png"), // Deduplicated from iframes.htm and b.htm. | 809 dir.AppendASCII("1.png"), // Deduplicated from iframes.htm and b.htm. |
802 }; | 810 }; |
803 for (auto file_path : expected_files) { | 811 for (auto file_path : expected_files) { |
804 EXPECT_TRUE(base::PathExists(file_path)) << "Does " << file_path.value() | 812 EXPECT_TRUE(base::PathExists(file_path)) << "Does " << file_path.value() |
805 << " exist?"; | 813 << " exist?"; |
806 int64 actual_file_size = 0; | 814 int64 actual_file_size = 0; |
807 EXPECT_TRUE(base::GetFileSize(file_path, &actual_file_size)); | 815 EXPECT_TRUE(base::GetFileSize(file_path, &actual_file_size)); |
808 EXPECT_NE(0, actual_file_size) << "Is " << file_path.value() | 816 EXPECT_NE(0, actual_file_size) << "Is " << file_path.value() |
809 << " non-empty?"; | 817 << " non-empty?"; |
810 } | 818 } |
811 | 819 |
812 // Verify that local links got correctly replaced with local paths | 820 // Verify that local links got correctly replaced with local paths |
813 // (most importantly for iframe elements, which are only exercised | 821 // (most importantly for iframe elements, which are only exercised |
814 // by this particular test). | 822 // by this particular test). |
815 std::string main_contents; | 823 std::string main_contents; |
816 ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); | 824 ASSERT_TRUE(base::ReadFileToString(full_file_name, &main_contents)); |
817 EXPECT_THAT(main_contents, | 825 EXPECT_THAT( |
818 HasSubstr("<iframe src=\"./iframes_files/a.html\"></iframe>")); | 826 main_contents, |
819 EXPECT_THAT(main_contents, | 827 HasSubstr("<iframe " |
820 HasSubstr("<iframe src=\"./iframes_files/b.html\"></iframe>")); | 828 "src=\"./frames-xsite-complete-html_files/a.html\"></iframe>")); |
821 EXPECT_THAT(main_contents, | 829 EXPECT_THAT( |
822 HasSubstr("<img src=\"./iframes_files/1.png\">")); | 830 main_contents, |
831 HasSubstr("<iframe " | |
832 "src=\"./frames-xsite-complete-html_files/b.html\"></iframe>")); | |
833 EXPECT_THAT( | |
834 main_contents, | |
835 HasSubstr("<img src=\"./frames-xsite-complete-html_files/1.png\">")); | |
823 | 836 |
824 // Verification of html contents. | 837 // Verification of html contents. |
825 EXPECT_THAT(main_contents, HasSubstr("896fd88d-a77a-4f46-afd8-24db7d5af9c2")) | 838 EXPECT_THAT( |
826 << "Verifing if content from iframes.htm is present"; | 839 main_contents, |
840 HasSubstr("frames-xsite.htm: 896fd88d-a77a-4f46-afd8-24db7d5af9c2")); | |
827 std::string a_contents; | 841 std::string a_contents; |
828 ASSERT_TRUE(base::ReadFileToString(dir.AppendASCII("a.html"), &a_contents)); | 842 ASSERT_TRUE(base::ReadFileToString(dir.AppendASCII("a.html"), &a_contents)); |
829 EXPECT_THAT(a_contents, HasSubstr("1b8aae2b-e164-462f-bd5b-98aa366205f2")) | 843 EXPECT_THAT(a_contents, |
830 << "Verifing if content from a.htm is present"; | 844 HasSubstr("a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2")); |
831 std::string b_contents; | 845 std::string b_contents; |
832 ASSERT_TRUE(base::ReadFileToString(dir.AppendASCII("b.html"), &b_contents)); | 846 ASSERT_TRUE(base::ReadFileToString(dir.AppendASCII("b.html"), &b_contents)); |
833 EXPECT_THAT(b_contents, HasSubstr("3a35f7fa-96a9-4487-9f18-4470263907fa")) | 847 EXPECT_THAT(b_contents, |
834 << "Verifing if content from b.htm is present"; | 848 HasSubstr("b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa")); |
835 } | 849 } |
836 | 850 |
837 // Test for crbug.com/538766. | 851 // Test for crbug.com/538766. |
838 // Disabled because the test will fail until the bug is fixed | 852 // Disabled because the test will fail until the bug is fixed |
839 // (but note that the test only fails with --site-per-process flag). | 853 // (but note that the test only fails with --site-per-process flag). |
840 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, | 854 IN_PROC_BROWSER_TEST_F(SavePageSitePerProcessBrowserTest, |
841 DISABLED_SaveAsMHTML) { | 855 DISABLED_SaveAsMHTML) { |
842 GURL url(embedded_test_server()->GetURL("a.com", "/save_page/iframes.htm")); | 856 GURL url( |
857 embedded_test_server()->GetURL("a.com", "/save_page/frames-xsite.htm")); | |
843 ui_test_utils::NavigateToURL(browser(), url); | 858 ui_test_utils::NavigateToURL(browser(), url); |
844 | 859 |
845 base::FilePath full_file_name, dir; | 860 base::FilePath full_file_name, dir; |
846 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_MHTML, "iframes", -1, &dir, | 861 SaveCurrentTab(url, content::SAVE_PAGE_TYPE_AS_MHTML, "frames-xsite-mhtml", |
847 &full_file_name); | 862 -1, &dir, &full_file_name); |
848 ASSERT_FALSE(HasFailure()); | 863 ASSERT_FALSE(HasFailure()); |
849 | 864 |
850 std::string mhtml; | 865 std::string mhtml; |
851 ASSERT_TRUE(base::ReadFileToString(full_file_name, &mhtml)); | 866 ASSERT_TRUE(base::ReadFileToString(full_file_name, &mhtml)); |
852 | 867 |
853 // Verify content of main frame, subframes and some savable resources. | 868 // Verify content of main frame, subframes and some savable resources. |
854 EXPECT_THAT(mhtml, HasSubstr("896fd88d-a77a-4f46-afd8-24db7d5af9c2")) | 869 EXPECT_THAT( |
855 << "Verifing if content from iframes.htm is present"; | 870 mhtml, |
856 EXPECT_THAT(mhtml, HasSubstr("1b8aae2b-e164-462f-bd5b-98aa366205f2")) | 871 HasSubstr("frames-xsite.htm: 896fd88d-a77a-4f46-afd8-24db7d5af9c2")); |
857 << "Verifing if content from a.htm is present"; | 872 EXPECT_THAT(mhtml, HasSubstr("a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2")); |
858 EXPECT_THAT(mhtml, HasSubstr("3a35f7fa-96a9-4487-9f18-4470263907fa")) | 873 EXPECT_THAT(mhtml, HasSubstr("b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa")); |
859 << "Verifing if content from b.htm is present"; | |
860 EXPECT_THAT(mhtml, HasSubstr("font-size: 20px;")) | 874 EXPECT_THAT(mhtml, HasSubstr("font-size: 20px;")) |
861 << "Verifing if content from 1.css is present"; | 875 << "Verifing if content from 1.css is present"; |
asanka
2015/11/11 21:37:37
Verifying
Łukasz Anforowicz
2015/11/11 23:55:40
Done.
| |
862 | 876 |
863 // Verify presence of URLs associated with main frame, subframes and some | 877 // Verify presence of URLs associated with main frame, subframes and some |
864 // savable resources. | 878 // savable resources. |
865 // (note that these are single-line regexes). | 879 // (note that these are single-line regexes). |
866 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/iframes.htm")); | 880 EXPECT_THAT(mhtml, |
881 ContainsRegex("Content-Location.*/save_page/frames-xsite.htm")); | |
867 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/a.htm")); | 882 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/a.htm")); |
868 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/b.htm")); | 883 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/b.htm")); |
869 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/1.css")); | 884 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/1.css")); |
870 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/1.png")); | 885 EXPECT_THAT(mhtml, ContainsRegex("Content-Location.*/save_page/1.png")); |
871 | 886 |
872 // Verify that 1.png appear in the output only once (despite being referred to | 887 // Verify that 1.png appears in the output only once (despite being referred |
873 // twice - from iframes.htm and from b.htm). | 888 // to twice - from iframes.htm and from b.htm). |
874 int count = 0; | 889 int count = 0; |
875 size_t pos = 0; | 890 size_t pos = 0; |
876 for (;;) { | 891 for (;;) { |
877 pos = mhtml.find("Content-Type: image/png", pos); | 892 pos = mhtml.find("Content-Type: image/png", pos); |
878 if (pos == std::string::npos) | 893 if (pos == std::string::npos) |
879 break; | 894 break; |
880 count++; | 895 count++; |
881 pos++; | 896 pos++; |
882 } | 897 } |
883 EXPECT_EQ(1, count) << "Verify number of image/png parts in the mhtml output"; | 898 EXPECT_EQ(1, count) << "Verify number of image/png parts in the mhtml output"; |
884 } | 899 } |
885 | 900 |
901 // Test suite that verifies that the frame tree "looks" the same before | |
902 // and after a save-page-as. | |
903 class SavePageMultiFrameBrowserTest : public SavePageSitePerProcessBrowserTest { | |
904 protected: | |
905 void TestMultiFramePage(content::SavePageType save_page_type, | |
906 const GURL& url, | |
907 int expected_number_of_frames, | |
908 const std::vector<std::string>& expected_substrings) { | |
909 // Navigate to the test page and verify if test expectations | |
910 // are met (this is mostly a sanity check - a failure to meet | |
911 // expectations would probably mean that there is a test bug | |
912 // (i.e. that we got called with wrong expected_foo argument). | |
913 ui_test_utils::NavigateToURL(browser(), url); | |
914 LOG(INFO) << "Verifying test expectations for original page... : " | |
asanka
2015/11/11 21:37:37
DLOG(INFO)
Łukasz Anforowicz
2015/11/11 23:55:40
Done.
| |
915 << GetCurrentTab(browser())->GetLastCommittedURL(); | |
916 // TODO(lukasza/paulmeyer): crbug.com/457440: Can uncomment | |
917 // the assertion below once find-in-page works for oop frames. | |
918 // AssertExpectationsAboutCurrentTab(expected_number_of_frames, | |
919 // expected_substrings); | |
920 | |
921 // Save the page. | |
922 base::FilePath full_file_name, dir; | |
923 SaveCurrentTab(url, save_page_type, "save_result", -1, &dir, | |
924 &full_file_name); | |
925 ASSERT_FALSE(HasFailure()); | |
926 | |
927 // Stop the test server (to make sure the locally saved page | |
928 // is self-contained / won't try to open original resources). | |
929 ASSERT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); | |
930 | |
931 // Open the saved page and verify if test expectations are | |
932 // met (i.e. if the same expectations are met for "after" | |
933 // [saved version of the page] as for the "before" | |
934 // [the original version of the page]. | |
asanka
2015/11/11 21:37:37
Use net::FilePathToFileURL().
Łukasz Anforowicz
2015/11/11 23:55:40
Thanks! I knew that I saw this some time ago, but
| |
935 std::string ascii_path = full_file_name.MaybeAsASCII(); | |
936 ASSERT_TRUE(!ascii_path.empty()); | |
937 std::string file_url; | |
938 file_url += url::kFileScheme; | |
939 file_url += "://"; | |
940 file_url += ascii_path; | |
941 ui_test_utils::NavigateToURL(browser(), GURL(file_url)); | |
942 LOG(INFO) << "Verifying test expectations for saved page... : " | |
asanka
2015/11/11 21:37:37
DLOG(INFO)
Łukasz Anforowicz
2015/11/11 23:55:40
Done.
| |
943 << GetCurrentTab(browser())->GetLastCommittedURL(); | |
944 AssertExpectationsAboutCurrentTab(expected_number_of_frames, | |
945 expected_substrings); | |
946 } | |
947 | |
948 private: | |
949 void AssertExpectationsAboutCurrentTab( | |
Łukasz Anforowicz
2015/11/11 23:55:40
RE: top-level question about entropy in mhtml file
asanka
2015/11/12 03:14:36
Got it.
| |
950 int expected_number_of_frames, | |
951 const std::vector<std::string>& expected_substrings) { | |
952 int actual_number_of_frames = 0; | |
953 GetCurrentTab(browser())->ForEachFrame(base::Bind( | |
954 &IncrementInteger, base::Unretained(&actual_number_of_frames))); | |
955 EXPECT_EQ(expected_number_of_frames, actual_number_of_frames); | |
956 | |
957 for (const auto& expected_substring : expected_substrings) { | |
958 int actual_number_of_matches = ui_test_utils::FindInPage( | |
959 GetCurrentTab(browser()), base::UTF8ToUTF16(expected_substring), | |
960 true, // |forward| | |
961 true, // |case_sensitive| | |
962 nullptr, nullptr); | |
963 | |
964 EXPECT_EQ(1, actual_number_of_matches) | |
965 << "Verifying if \"" << expected_substring << "\" appears " | |
966 << "exactly once in the web-contents text"; | |
967 } | |
968 | |
969 int actual_number_of_errors = ui_test_utils::FindInPage( | |
970 GetCurrentTab(browser()), base::UTF8ToUTF16("err"), | |
971 true, // |forward| | |
972 false, // |case_sensitive| | |
973 nullptr, nullptr); | |
974 EXPECT_EQ(0, actual_number_of_errors); | |
975 } | |
976 | |
977 static void IncrementInteger(int* i, content::RenderFrameHost* /* unused */) { | |
978 (*i)++; | |
979 } | |
980 }; | |
981 | |
982 // TODO(lukasza): Pivot on mhtml-vs-complete-html using test params | |
983 // (once all SavePageMultiFrameBrowserTest are enabled). | |
984 | |
985 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, | |
986 CrossSiteFrames_CompleteHtml) { | |
987 std::vector<std::string> expected_substrings{ | |
988 "frames-xsite.htm: 896fd88d-a77a-4f46-afd8-24db7d5af9c2", | |
989 "a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2", | |
990 "b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa", | |
991 }; | |
992 GURL url( | |
993 embedded_test_server()->GetURL("a.com", "/save_page/frames-xsite.htm")); | |
994 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, url, 3, | |
995 expected_substrings); | |
996 } | |
997 | |
998 // Test for crbug.com/538766 and crbug.com/539936. | |
999 // Disabled because both bugs are not yet fixed. | |
1000 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, | |
1001 DISABLED_CrossSiteFrames_MHTML) { | |
1002 std::vector<std::string> expected_substrings{ | |
1003 "frames-xsite.htm: 896fd88d-a77a-4f46-afd8-24db7d5af9c2", | |
1004 "a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2", | |
1005 "b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa", | |
1006 }; | |
1007 GURL url( | |
1008 embedded_test_server()->GetURL("a.com", "/save_page/frames-xsite.htm")); | |
1009 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_MHTML, url, 3, | |
1010 expected_substrings); | |
1011 } | |
1012 | |
1013 // Test for crbug.com/553478 (complete html part). | |
1014 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, | |
1015 DISABLED_ObjectElements_CompleteHtml) { | |
1016 // 4 = main frame + iframe + object w/ html doc + object w/ pdf doc | |
1017 // (svg and png objects do not get a separate frame) | |
1018 int expected_number_of_frames = 4; | |
1019 | |
1020 std::vector<std::string> expected_substrings{ | |
1021 "frames-objects.htm: 8da13db4-a512-4d9b-b1c5-dc1c134234b9", | |
1022 "a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2", | |
1023 "b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa", | |
1024 }; | |
1025 GURL url( | |
1026 embedded_test_server()->GetURL("a.com", "/save_page/frames-objects.htm")); | |
1027 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, url, | |
1028 expected_number_of_frames, expected_substrings); | |
1029 } | |
1030 | |
1031 // Test for crbug.com/553478 (mhtml part). | |
1032 // See crbug.com/553478#c3 for some MHTML-specific notes. | |
1033 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, | |
1034 DISABLED_ObjectElements_MHTML) { | |
1035 // 4 = main frame + iframe + object w/ html doc + object w/ pdf doc | |
1036 // (svg and png objects do not get a separate frame) | |
1037 int expected_number_of_frames = 4; | |
1038 | |
1039 std::vector<std::string> expected_substrings{ | |
1040 "frames-objects.htm: 8da13db4-a512-4d9b-b1c5-dc1c134234b9", | |
1041 "a.htm: 1b8aae2b-e164-462f-bd5b-98aa366205f2", | |
1042 "b.htm: 3a35f7fa-96a9-4487-9f18-4470263907fa", | |
1043 }; | |
1044 GURL url( | |
1045 embedded_test_server()->GetURL("a.com", "/save_page/frames-objects.htm")); | |
1046 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_MHTML, url, | |
1047 expected_number_of_frames, expected_substrings); | |
1048 } | |
1049 | |
1050 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, AboutBlank_CompleteHtml) { | |
1051 std::vector<std::string> expected_substrings{ | |
1052 "main: acb0609d-eb10-4c26-83e2-ad8afb7b0ff3", | |
1053 "sub1: b124df3a-d39f-47a1-ae04-5bb5d0bf549e", | |
1054 "sub2: 07014068-604d-45ae-884f-a068cfe7bc0a", | |
1055 "sub3: 06cc8fcc-c692-4a1a-a10f-1645b746e8f4", | |
1056 }; | |
1057 GURL url(embedded_test_server()->GetURL("a.com", | |
1058 "/save_page/frames-about-blank.htm")); | |
1059 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML, url, 4, | |
1060 expected_substrings); | |
1061 } | |
1062 | |
1063 IN_PROC_BROWSER_TEST_F(SavePageMultiFrameBrowserTest, AboutBlank_MHTML) { | |
1064 std::vector<std::string> expected_substrings{ | |
1065 "main: acb0609d-eb10-4c26-83e2-ad8afb7b0ff3", | |
1066 "sub1: b124df3a-d39f-47a1-ae04-5bb5d0bf549e", | |
1067 "sub2: 07014068-604d-45ae-884f-a068cfe7bc0a", | |
1068 "sub3: 06cc8fcc-c692-4a1a-a10f-1645b746e8f4", | |
1069 }; | |
1070 GURL url(embedded_test_server()->GetURL("a.com", | |
1071 "/save_page/frames-about-blank.htm")); | |
1072 TestMultiFramePage(content::SAVE_PAGE_TYPE_AS_MHTML, url, 4, | |
1073 expected_substrings); | |
1074 } | |
1075 | |
886 } // namespace | 1076 } // namespace |
OLD | NEW |