Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / browser / transition_request_manager_unittest.cc
1 // Copyright 2014 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 "content/browser/transition_request_manager.h"
6 #include "net/http/http_response_headers.h"
7 #include "net/http/http_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace content {
11
12 class TransitionRequestManagerTest : public testing::Test {
13  public:
14   virtual ~TransitionRequestManagerTest() {}
15 };
16
17 TEST_F(TransitionRequestManagerTest,
18        ParseTransitionStylesheetsFromNullHeaders) {
19   const GURL url("http://www.test.com/");
20   std::vector<GURL> entering_stylesheets;
21   scoped_refptr<net::HttpResponseHeaders> headers;
22
23   TransitionRequestManager::ParseTransitionStylesheetsFromHeaders(
24       headers, entering_stylesheets, url);
25   ASSERT_TRUE(entering_stylesheets.empty());
26 }
27
28 TEST_F(TransitionRequestManagerTest,
29        ParseTransitionStylesheetsFromEmptyHeaders) {
30   const GURL url("http://www.test.com/");
31   std::vector<GURL> entering_stylesheets;
32
33   char headers_string[] = "";
34   scoped_refptr<net::HttpResponseHeaders> headers(
35       new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders(
36           headers_string, sizeof(headers_string))));
37
38   TransitionRequestManager::ParseTransitionStylesheetsFromHeaders(
39       headers, entering_stylesheets, url);
40   ASSERT_TRUE(entering_stylesheets.empty());
41 }
42
43 TEST_F(TransitionRequestManagerTest,
44        ParseTransitionStylesheetsFromHeadersForInvalidURL) {
45   const GURL url;
46   std::vector<GURL> entering_stylesheets;
47
48   char headers_string[] =
49       "HTTP/1.0 200 OK\r\n"
50       "link: <transition.css>;rel=transition-entering-stylesheet;scope=*\r\n"
51       "\r\n";
52   scoped_refptr<net::HttpResponseHeaders> headers(
53       new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders(
54           headers_string, sizeof(headers_string))));
55
56   TransitionRequestManager::ParseTransitionStylesheetsFromHeaders(
57       headers, entering_stylesheets, url);
58   ASSERT_TRUE(entering_stylesheets.empty());
59 }
60
61 TEST_F(TransitionRequestManagerTest, ParseTransitionStylesheetsFromHeaders) {
62   const GURL url("http://www.test.com/");
63   std::vector<GURL> entering_stylesheets;
64
65   char headers_string[] =
66       "HTTP/1.0 200 OK\r\n"
67       "link: <transition.css>;rel=transition-entering-stylesheet;scope=*\r\n"
68       "\r\n";
69   scoped_refptr<net::HttpResponseHeaders> headers(
70       new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders(
71           headers_string, sizeof(headers_string))));
72
73   TransitionRequestManager::ParseTransitionStylesheetsFromHeaders(
74       headers, entering_stylesheets, url);
75   ASSERT_TRUE(entering_stylesheets.size() == 1);
76   ASSERT_STREQ((url.spec() + "transition.css").c_str(),
77                entering_stylesheets[0].spec().c_str());
78 }
79
80 TEST_F(TransitionRequestManagerTest,
81        ParseMultipleTransitionStylesheetsFromHeaders) {
82   const GURL url("http://www.test.com/");
83   std::vector<GURL> entering_stylesheets;
84
85   char headers_string[] =
86       "HTTP/1.0 200 OK\r\n"
87       "link: <transition0.css>;rel=transition-entering-stylesheet;scope=*\r\n"
88       "link: <transition1.css>;rel=transition-entering-stylesheet;scope=*\r\n"
89       "link: <transition2.css>;rel=transition-entering-stylesheet;scope=*\r\n"
90       "\r\n";
91   scoped_refptr<net::HttpResponseHeaders> headers(
92       new net::HttpResponseHeaders(net::HttpUtil::AssembleRawHeaders(
93           headers_string, sizeof(headers_string))));
94
95   TransitionRequestManager::ParseTransitionStylesheetsFromHeaders(
96       headers, entering_stylesheets, url);
97   ASSERT_TRUE(entering_stylesheets.size() == 3);
98   ASSERT_STREQ((url.spec() + "transition0.css").c_str(),
99                entering_stylesheets[0].spec().c_str());
100   ASSERT_STREQ((url.spec() + "transition1.css").c_str(),
101                entering_stylesheets[1].spec().c_str());
102   ASSERT_STREQ((url.spec() + "transition2.css").c_str(),
103                entering_stylesheets[2].spec().c_str());
104 }
105
106 }  // namespace content