1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/file_util.h"
6 #include "base/path_service.h"
7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h"
9 #include "net/base/net_util.h"
10 #include "net/url_request/url_request_context.h"
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
12 #include "webkit/glue/dom_operations.h"
13 #include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
14 #include "webkit/tools/test_shell/test_shell_test.h"
18 class DomOperationsTests
: public TestShellTest
{
20 // Test function GetAllSavableResourceLinksForCurrentPage with a web page.
21 // We expect result of GetAllSavableResourceLinksForCurrentPage exactly
22 // matches expected_resources_set.
23 void GetSavableResourceLinksForPage(const FilePath
& page_file_path
,
24 const std::set
<GURL
>& expected_resources_set
);
28 virtual void SetUp() {
29 TestShellTest::SetUp();
32 virtual void TearDown() {
33 TestShellTest::TearDown();
38 void DomOperationsTests::GetSavableResourceLinksForPage(
39 const FilePath
& page_file_path
,
40 const std::set
<GURL
>& expected_resources_set
) {
41 // Convert local file path to file URL.
42 GURL file_url
= net::FilePathToFileURL(page_file_path
);
43 // Load the test file.
44 test_shell_
->ResetTestController();
45 test_shell_
->LoadURL(file_url
);
46 test_shell_
->WaitTestFinished();
47 // Get all savable resource links for the page.
48 std::vector
<GURL
> resources_list
;
49 std::vector
<GURL
> referrers_list
;
50 std::vector
<GURL
> frames_list
;
51 webkit_glue::SavableResourcesResult
result(&resources_list
,
55 const char* savable_schemes
[] = {
62 ASSERT_TRUE(webkit_glue::GetAllSavableResourceLinksForCurrentPage(
63 test_shell_
->webView(), file_url
, &result
, savable_schemes
));
64 // Check all links of sub-resource
65 for (std::vector
<GURL
>::const_iterator cit
= resources_list
.begin();
66 cit
!= resources_list
.end(); ++cit
) {
67 ASSERT_TRUE(expected_resources_set
.find(*cit
) !=
68 expected_resources_set
.end());
70 // Check all links of frame.
71 for (std::vector
<GURL
>::const_iterator cit
= frames_list
.begin();
72 cit
!= frames_list
.end(); ++cit
) {
73 ASSERT_TRUE(expected_resources_set
.find(*cit
) !=
74 expected_resources_set
.end());
78 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
79 // which has valid savable resource links.
80 TEST_F(DomOperationsTests
, GetSavableResourceLinksWithPageHasValidLinks
) {
81 std::set
<GURL
> expected_resources_set
;
82 // Set directory of test data.
83 FilePath page_file_path
= data_dir_
.AppendASCII("dom_serializer");
85 const char* expected_sub_resource_links
[] = {
86 "file:///c:/yt/css/base_all-vfl36460.css",
87 "file:///c:/yt/js/base_all_with_bidi-vfl36451.js",
88 "file:///c:/yt/img/pixel-vfl73.gif"
90 const char* expected_frame_links
[] = {
94 // Add all expected links of sub-resource to expected set.
95 for (size_t i
= 0; i
< arraysize(expected_sub_resource_links
); ++i
)
96 expected_resources_set
.insert(GURL(expected_sub_resource_links
[i
]));
97 // Add all expected links of frame to expected set.
98 for (size_t i
= 0; i
< arraysize(expected_frame_links
); ++i
) {
99 const FilePath expected_frame_url
=
100 page_file_path
.AppendASCII(expected_frame_links
[i
]);
101 expected_resources_set
.insert(
102 net::FilePathToFileURL(expected_frame_url
));
105 page_file_path
= page_file_path
.AppendASCII("youtube_1.htm");
106 GetSavableResourceLinksForPage(page_file_path
, expected_resources_set
);
109 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
110 // which does not have valid savable resource links.
111 TEST_F(DomOperationsTests
, GetSavableResourceLinksWithPageHasInvalidLinks
) {
112 std::set
<GURL
> expected_resources_set
;
113 // Set directory of test data.
114 FilePath page_file_path
= data_dir_
.AppendASCII("dom_serializer");
116 const char* expected_frame_links
[] = {
119 // Add all expected links of frame to expected set.
120 for (size_t i
= 0; i
< arraysize(expected_frame_links
); ++i
) {
121 FilePath expected_frame_url
=
122 page_file_path
.AppendASCII(expected_frame_links
[i
]);
123 expected_resources_set
.insert(
124 net::FilePathToFileURL(expected_frame_url
));
127 page_file_path
= page_file_path
.AppendASCII("youtube_2.htm");
128 GetSavableResourceLinksForPage(page_file_path
, expected_resources_set
);