| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/file_util.h" |
| #include "base/path_service.h" |
| #include "base/string_util.h" |
| #include "base/utf_string_conversions.h" |
| #include "net/base/net_util.h" |
| #include "net/url_request/url_request_context.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
| #include "webkit/glue/dom_operations.h" |
| #include "webkit/tools/test_shell/simple_resource_loader_bridge.h" |
| #include "webkit/tools/test_shell/test_shell_test.h" |
| |
| namespace { |
| |
| class DomOperationsTests : public TestShellTest { |
| public: |
| // Test function GetAllSavableResourceLinksForCurrentPage with a web page. |
| // We expect result of GetAllSavableResourceLinksForCurrentPage exactly |
| // matches expected_resources_set. |
| void GetSavableResourceLinksForPage(const FilePath& page_file_path, |
| const std::set<GURL>& expected_resources_set); |
| |
| protected: |
| // testing::Test |
| virtual void SetUp() { |
| TestShellTest::SetUp(); |
| } |
| |
| virtual void TearDown() { |
| TestShellTest::TearDown(); |
| } |
| }; |
| |
| |
| void DomOperationsTests::GetSavableResourceLinksForPage( |
| const FilePath& page_file_path, |
| const std::set<GURL>& expected_resources_set) { |
| // Convert local file path to file URL. |
| GURL file_url = net::FilePathToFileURL(page_file_path); |
| // Load the test file. |
| test_shell_->ResetTestController(); |
| test_shell_->LoadURL(file_url); |
| test_shell_->WaitTestFinished(); |
| // Get all savable resource links for the page. |
| std::vector<GURL> resources_list; |
| std::vector<GURL> referrers_list; |
| std::vector<GURL> frames_list; |
| webkit_glue::SavableResourcesResult result(&resources_list, |
| &referrers_list, |
| &frames_list); |
| |
| const char* savable_schemes[] = { |
| "http", |
| "https", |
| "file", |
| NULL |
| }; |
| |
| ASSERT_TRUE(webkit_glue::GetAllSavableResourceLinksForCurrentPage( |
| test_shell_->webView(), file_url, &result, savable_schemes)); |
| // Check all links of sub-resource |
| for (std::vector<GURL>::const_iterator cit = resources_list.begin(); |
| cit != resources_list.end(); ++cit) { |
| ASSERT_TRUE(expected_resources_set.find(*cit) != |
| expected_resources_set.end()); |
| } |
| // Check all links of frame. |
| for (std::vector<GURL>::const_iterator cit = frames_list.begin(); |
| cit != frames_list.end(); ++cit) { |
| ASSERT_TRUE(expected_resources_set.find(*cit) != |
| expected_resources_set.end()); |
| } |
| } |
| |
| // Test function GetAllSavableResourceLinksForCurrentPage with a web page |
| // which has valid savable resource links. |
| TEST_F(DomOperationsTests, GetSavableResourceLinksWithPageHasValidLinks) { |
| std::set<GURL> expected_resources_set; |
| // Set directory of test data. |
| FilePath page_file_path = data_dir_.AppendASCII("dom_serializer"); |
| |
| const char* expected_sub_resource_links[] = { |
| "file:///c:/yt/css/base_all-vfl36460.css", |
| "file:///c:/yt/js/base_all_with_bidi-vfl36451.js", |
| "file:///c:/yt/img/pixel-vfl73.gif" |
| }; |
| const char* expected_frame_links[] = { |
| "youtube_1.htm", |
| "youtube_2.htm" |
| }; |
| // Add all expected links of sub-resource to expected set. |
| for (size_t i = 0; i < arraysize(expected_sub_resource_links); ++i) |
| expected_resources_set.insert(GURL(expected_sub_resource_links[i])); |
| // Add all expected links of frame to expected set. |
| for (size_t i = 0; i < arraysize(expected_frame_links); ++i) { |
| const FilePath expected_frame_url = |
| page_file_path.AppendASCII(expected_frame_links[i]); |
| expected_resources_set.insert( |
| net::FilePathToFileURL(expected_frame_url)); |
| } |
| |
| page_file_path = page_file_path.AppendASCII("youtube_1.htm"); |
| GetSavableResourceLinksForPage(page_file_path, expected_resources_set); |
| } |
| |
| // Test function GetAllSavableResourceLinksForCurrentPage with a web page |
| // which does not have valid savable resource links. |
| TEST_F(DomOperationsTests, GetSavableResourceLinksWithPageHasInvalidLinks) { |
| std::set<GURL> expected_resources_set; |
| // Set directory of test data. |
| FilePath page_file_path = data_dir_.AppendASCII("dom_serializer"); |
| |
| const char* expected_frame_links[] = { |
| "youtube_2.htm" |
| }; |
| // Add all expected links of frame to expected set. |
| for (size_t i = 0; i < arraysize(expected_frame_links); ++i) { |
| FilePath expected_frame_url = |
| page_file_path.AppendASCII(expected_frame_links[i]); |
| expected_resources_set.insert( |
| net::FilePathToFileURL(expected_frame_url)); |
| } |
| |
| page_file_path = page_file_path.AppendASCII("youtube_2.htm"); |
| GetSavableResourceLinksForPage(page_file_path, expected_resources_set); |
| } |
| |
| } // namespace |