Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / renderer / savable_resources_browsertest.cc
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
3 // found in the LICENSE file.
4
5 #include "base/bind.h"
6 #include "base/command_line.h"
7 #include "base/files/file_path.h"
8 #include "content/public/browser/web_contents.h"
9 #include "content/public/common/content_switches.h"
10 #include "content/public/renderer/render_view.h"
11 #include "content/public/test/content_browser_test.h"
12 #include "content/public/test/content_browser_test_utils.h"
13 #include "content/renderer/savable_resources.h"
14 #include "content/shell/browser/shell.h"
15 #include "net/base/filename_util.h"
16
17 namespace content {
18
19 class SavableResourcesTest : public ContentBrowserTest {
20  public:
21   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
22     command_line->AppendSwitch(switches::kSingleProcess);
23 #if defined(OS_WIN)
24     // Don't want to try to create a GPU process.
25     command_line->AppendSwitch(switches::kDisableGpu);
26 #endif
27   }
28
29   // Test function GetAllSavableResourceLinksForCurrentPage with a web page.
30   // We expect result of GetAllSavableResourceLinksForCurrentPage exactly
31   // matches expected_resources_set.
32   void GetSavableResourceLinksForPage(
33       const base::FilePath& page_file_path,
34       const std::set<GURL>& expected_resources_set) {
35     // Convert local file path to file URL.
36     GURL file_url = net::FilePathToFileURL(page_file_path);
37     // Load the test file.
38     NavigateToURL(shell(), file_url);
39
40     PostTaskToInProcessRendererAndWait(
41         base::Bind(&SavableResourcesTest::CheckResources,
42                    base::Unretained(this),
43                    page_file_path,
44                    expected_resources_set,
45                    file_url,
46                    shell()->web_contents()->GetRoutingID()));
47   }
48
49   void CheckResources(const base::FilePath& page_file_path,
50                       const std::set<GURL>& expected_resources_set,
51                       const GURL& file_url,
52                       int render_view_id) {
53     // Get all savable resource links for the page.
54     std::vector<GURL> resources_list;
55     std::vector<GURL> referrer_urls_list;
56     std::vector<blink::WebReferrerPolicy> referrer_policies_list;
57     std::vector<GURL> frames_list;
58     SavableResourcesResult result(&resources_list,
59                                   &referrer_urls_list,
60                                   &referrer_policies_list,
61                                   &frames_list);
62
63     const char* savable_schemes[] = {
64       "http",
65       "https",
66       "file",
67       NULL
68     };
69
70     RenderView* render_view = RenderView::FromRoutingID(render_view_id);
71
72     ASSERT_TRUE(GetAllSavableResourceLinksForCurrentPage(
73         render_view->GetWebView(), file_url, &result, savable_schemes));
74     // Check all links of sub-resource
75     for (std::vector<GURL>::const_iterator cit = resources_list.begin();
76          cit != resources_list.end(); ++cit) {
77       ASSERT_TRUE(expected_resources_set.find(*cit) !=
78                   expected_resources_set.end());
79     }
80     // Check all links of frame.
81     for (std::vector<GURL>::const_iterator cit = frames_list.begin();
82          cit != frames_list.end(); ++cit) {
83       ASSERT_TRUE(expected_resources_set.find(*cit) !=
84                   expected_resources_set.end());
85     }
86   }
87 };
88
89 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
90 // which has valid savable resource links.
91 IN_PROC_BROWSER_TEST_F(SavableResourcesTest,
92                        GetSavableResourceLinksWithPageHasValidLinks) {
93   std::set<GURL> expected_resources_set;
94
95   const char* expected_sub_resource_links[] = {
96     "file:///c:/yt/css/base_all-vfl36460.css",
97     "file:///c:/yt/js/base_all_with_bidi-vfl36451.js",
98     "file:///c:/yt/img/pixel-vfl73.gif"
99   };
100   const char* expected_frame_links[] = {
101     "youtube_1.htm",
102     "youtube_2.htm"
103   };
104   // Add all expected links of sub-resource to expected set.
105   for (size_t i = 0; i < arraysize(expected_sub_resource_links); ++i)
106     expected_resources_set.insert(GURL(expected_sub_resource_links[i]));
107   // Add all expected links of frame to expected set.
108   for (size_t i = 0; i < arraysize(expected_frame_links); ++i) {
109     const base::FilePath expected_frame_url =
110         GetTestFilePath("dom_serializer", expected_frame_links[i]);
111     expected_resources_set.insert(
112         net::FilePathToFileURL(expected_frame_url));
113   }
114
115   base::FilePath page_file_path =
116       GetTestFilePath("dom_serializer", "youtube_1.htm");
117   GetSavableResourceLinksForPage(page_file_path, expected_resources_set);
118 }
119
120 // Test function GetAllSavableResourceLinksForCurrentPage with a web page
121 // which does not have valid savable resource links.
122 IN_PROC_BROWSER_TEST_F(SavableResourcesTest,
123                        GetSavableResourceLinksWithPageHasInvalidLinks) {
124   std::set<GURL> expected_resources_set;
125
126   const char* expected_frame_links[] = {
127     "youtube_2.htm"
128   };
129   // Add all expected links of frame to expected set.
130   for (size_t i = 0; i < arraysize(expected_frame_links); ++i) {
131     base::FilePath expected_frame_url =
132         GetTestFilePath("dom_serializer", expected_frame_links[i]);
133     expected_resources_set.insert(
134         net::FilePathToFileURL(expected_frame_url));
135   }
136
137   base::FilePath page_file_path =
138       GetTestFilePath("dom_serializer", "youtube_2.htm");
139   GetSavableResourceLinksForPage(page_file_path, expected_resources_set);
140 }
141
142 }  // namespace content