• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
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"
15 
16 namespace {
17 
18 class DomOperationsTests : public TestShellTest {
19  public:
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);
25 
26  protected:
27   // testing::Test
SetUp()28   virtual void SetUp() {
29     TestShellTest::SetUp();
30   }
31 
TearDown()32   virtual void TearDown() {
33     TestShellTest::TearDown();
34   }
35 };
36 
37 
GetSavableResourceLinksForPage(const FilePath & page_file_path,const std::set<GURL> & expected_resources_set)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,
52                                              &referrers_list,
53                                              &frames_list);
54 
55   const char* savable_schemes[] = {
56     "http",
57     "https",
58     "file",
59     NULL
60   };
61 
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());
69   }
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());
75   }
76 }
77 
78 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
79 // which has valid savable resource links.
TEST_F(DomOperationsTests,GetSavableResourceLinksWithPageHasValidLinks)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");
84 
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"
89   };
90   const char* expected_frame_links[] = {
91     "youtube_1.htm",
92     "youtube_2.htm"
93   };
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));
103   }
104 
105   page_file_path = page_file_path.AppendASCII("youtube_1.htm");
106   GetSavableResourceLinksForPage(page_file_path, expected_resources_set);
107 }
108 
109 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
110 // which does not have valid savable resource links.
TEST_F(DomOperationsTests,GetSavableResourceLinksWithPageHasInvalidLinks)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");
115 
116   const char* expected_frame_links[] = {
117     "youtube_2.htm"
118   };
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));
125   }
126 
127   page_file_path = page_file_path.AppendASCII("youtube_2.htm");
128   GetSavableResourceLinksForPage(page_file_path, expected_resources_set);
129 }
130 
131 }  // namespace
132