OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "modules/fetch/Request.h" | 5 #include "modules/fetch/Request.h" |
6 | 6 |
7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
10 #include "core/frame/Frame.h" | 10 #include "core/frame/Frame.h" |
11 #include "core/testing/DummyPageHolder.h" | 11 #include "core/testing/DummyPageHolder.h" |
12 #include "public/platform/WebURLRequest.h" | 12 #include "public/platform/WebURLRequest.h" |
13 #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h" | 13 #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "wtf/HashMap.h" | 15 #include "wtf/HashMap.h" |
16 #include "wtf/text/WTFString.h" | 16 #include "wtf/text/WTFString.h" |
17 | 17 |
18 namespace blink { | 18 namespace blink { |
19 namespace { | 19 namespace { |
20 | 20 |
21 class ServiceWorkerRequestTest : public ::testing::Test { | 21 class ServiceWorkerRequestTest : public ::testing::Test { |
22 public: | 22 public: |
23 ServiceWorkerRequestTest() | 23 ServiceWorkerRequestTest() |
24 : m_page(DummyPageHolder::create(IntSize(1, 1))) { } | 24 : m_page(DummyPageHolder::create(IntSize(1, 1))) { } |
25 | 25 |
26 ScriptState* scriptState() { return ScriptState::forMainWorld(m_page->docume
nt().frame()); } | 26 ScriptState* getScriptState() { return ScriptState::forMainWorld(m_page->doc
ument().frame()); } |
27 ExecutionContext* executionContext() { return scriptState()->executionContex
t(); } | 27 ExecutionContext* getExecutionContext() { return getScriptState()->getExecut
ionContext(); } |
28 | 28 |
29 private: | 29 private: |
30 OwnPtr<DummyPageHolder> m_page; | 30 OwnPtr<DummyPageHolder> m_page; |
31 }; | 31 }; |
32 | 32 |
33 TEST_F(ServiceWorkerRequestTest, FromString) | 33 TEST_F(ServiceWorkerRequestTest, FromString) |
34 { | 34 { |
35 TrackExceptionState exceptionState; | 35 TrackExceptionState exceptionState; |
36 | 36 |
37 KURL url(ParsedURLString, "http://www.example.com/"); | 37 KURL url(ParsedURLString, "http://www.example.com/"); |
38 Request* request = Request::create(scriptState(), url, exceptionState); | 38 Request* request = Request::create(getScriptState(), url, exceptionState); |
39 ASSERT_FALSE(exceptionState.hadException()); | 39 ASSERT_FALSE(exceptionState.hadException()); |
40 ASSERT(request); | 40 ASSERT(request); |
41 EXPECT_EQ(url, request->url()); | 41 EXPECT_EQ(url, request->url()); |
42 } | 42 } |
43 | 43 |
44 TEST_F(ServiceWorkerRequestTest, FromRequest) | 44 TEST_F(ServiceWorkerRequestTest, FromRequest) |
45 { | 45 { |
46 TrackExceptionState exceptionState; | 46 TrackExceptionState exceptionState; |
47 | 47 |
48 KURL url(ParsedURLString, "http://www.example.com/"); | 48 KURL url(ParsedURLString, "http://www.example.com/"); |
49 Request* request1 = Request::create(scriptState(), url, exceptionState); | 49 Request* request1 = Request::create(getScriptState(), url, exceptionState); |
50 ASSERT(request1); | 50 ASSERT(request1); |
51 | 51 |
52 Request* request2 = Request::create(scriptState(), request1, exceptionState)
; | 52 Request* request2 = Request::create(getScriptState(), request1, exceptionSta
te); |
53 ASSERT_FALSE(exceptionState.hadException()); | 53 ASSERT_FALSE(exceptionState.hadException()); |
54 ASSERT(request2); | 54 ASSERT(request2); |
55 EXPECT_EQ(url, request2->url()); | 55 EXPECT_EQ(url, request2->url()); |
56 } | 56 } |
57 | 57 |
58 TEST_F(ServiceWorkerRequestTest, FromAndToWebRequest) | 58 TEST_F(ServiceWorkerRequestTest, FromAndToWebRequest) |
59 { | 59 { |
60 WebServiceWorkerRequest webRequest; | 60 WebServiceWorkerRequest webRequest; |
61 | 61 |
62 const KURL url(ParsedURLString, "http://www.example.com/"); | 62 const KURL url(ParsedURLString, "http://www.example.com/"); |
63 const String method = "GET"; | 63 const String method = "GET"; |
64 struct { | 64 struct { |
65 const char* key; | 65 const char* key; |
66 const char* value; | 66 const char* value; |
67 } headers[] = { {"X-Foo", "bar"}, {"X-Quux", "foop"}, {0, 0} }; | 67 } headers[] = { {"X-Foo", "bar"}, {"X-Quux", "foop"}, {0, 0} }; |
68 const String referrer = "http://www.referrer.com/"; | 68 const String referrer = "http://www.referrer.com/"; |
69 const WebReferrerPolicy referrerPolicy = WebReferrerPolicyAlways; | 69 const WebReferrerPolicy referrerPolicy = WebReferrerPolicyAlways; |
70 const WebURLRequest::RequestContext context = WebURLRequest::RequestContextA
udio; | 70 const WebURLRequest::RequestContext context = WebURLRequest::RequestContextA
udio; |
71 const WebURLRequest::FetchRequestMode mode = WebURLRequest::FetchRequestMode
Navigate; | 71 const WebURLRequest::FetchRequestMode mode = WebURLRequest::FetchRequestMode
Navigate; |
72 | 72 |
73 webRequest.setURL(url); | 73 webRequest.setURL(url); |
74 webRequest.setMethod(method); | 74 webRequest.setMethod(method); |
75 webRequest.setRequestContext(context); | 75 webRequest.setRequestContext(context); |
76 webRequest.setMode(mode); | 76 webRequest.setMode(mode); |
77 for (int i = 0; headers[i].key; ++i) | 77 for (int i = 0; headers[i].key; ++i) |
78 webRequest.setHeader(WebString::fromUTF8(headers[i].key), WebString::fro
mUTF8(headers[i].value)); | 78 webRequest.setHeader(WebString::fromUTF8(headers[i].key), WebString::fro
mUTF8(headers[i].value)); |
79 webRequest.setReferrer(referrer, referrerPolicy); | 79 webRequest.setReferrer(referrer, referrerPolicy); |
80 | 80 |
81 Request* request = Request::create(executionContext(), webRequest); | 81 Request* request = Request::create(getExecutionContext(), webRequest); |
82 ASSERT(request); | 82 ASSERT(request); |
83 EXPECT_EQ(url, request->url()); | 83 EXPECT_EQ(url, request->url()); |
84 EXPECT_EQ(method, request->method()); | 84 EXPECT_EQ(method, request->method()); |
85 EXPECT_EQ("audio", request->context()); | 85 EXPECT_EQ("audio", request->context()); |
86 EXPECT_EQ(referrer, request->referrer()); | 86 EXPECT_EQ(referrer, request->referrer()); |
87 EXPECT_EQ("navigate", request->mode()); | 87 EXPECT_EQ("navigate", request->mode()); |
88 | 88 |
89 Headers* requestHeaders = request->headers(); | 89 Headers* requestHeaders = request->getHeaders(); |
90 | 90 |
91 WTF::HashMap<String, String> headersMap; | 91 WTF::HashMap<String, String> headersMap; |
92 for (int i = 0; headers[i].key; ++i) | 92 for (int i = 0; headers[i].key; ++i) |
93 headersMap.add(headers[i].key, headers[i].value); | 93 headersMap.add(headers[i].key, headers[i].value); |
94 EXPECT_EQ(headersMap.size(), requestHeaders->headerList()->size()); | 94 EXPECT_EQ(headersMap.size(), requestHeaders->headerList()->size()); |
95 for (WTF::HashMap<String, String>::iterator iter = headersMap.begin(); iter
!= headersMap.end(); ++iter) { | 95 for (WTF::HashMap<String, String>::iterator iter = headersMap.begin(); iter
!= headersMap.end(); ++iter) { |
96 TrackExceptionState exceptionState; | 96 TrackExceptionState exceptionState; |
97 EXPECT_EQ(iter->value, requestHeaders->get(iter->key, exceptionState)); | 97 EXPECT_EQ(iter->value, requestHeaders->get(iter->key, exceptionState)); |
98 EXPECT_FALSE(exceptionState.hadException()); | 98 EXPECT_FALSE(exceptionState.hadException()); |
99 } | 99 } |
100 | 100 |
101 WebServiceWorkerRequest secondWebRequest; | 101 WebServiceWorkerRequest secondWebRequest; |
102 request->populateWebServiceWorkerRequest(secondWebRequest); | 102 request->populateWebServiceWorkerRequest(secondWebRequest); |
103 EXPECT_EQ(url, KURL(secondWebRequest.url())); | 103 EXPECT_EQ(url, KURL(secondWebRequest.url())); |
104 EXPECT_EQ(method, String(secondWebRequest.method())); | 104 EXPECT_EQ(method, String(secondWebRequest.method())); |
105 EXPECT_EQ(context, secondWebRequest.requestContext()); | 105 EXPECT_EQ(context, secondWebRequest.requestContext()); |
106 EXPECT_EQ(referrer, KURL(secondWebRequest.referrerUrl())); | 106 EXPECT_EQ(referrer, KURL(secondWebRequest.referrerUrl())); |
107 EXPECT_EQ(WebReferrerPolicyDefault, secondWebRequest.referrerPolicy()); | 107 EXPECT_EQ(WebReferrerPolicyDefault, secondWebRequest.referrerPolicy()); |
108 EXPECT_EQ(webRequest.headers(), secondWebRequest.headers()); | 108 EXPECT_EQ(webRequest.headers(), secondWebRequest.headers()); |
109 EXPECT_EQ(WebURLRequest::FetchRequestModeNoCORS, secondWebRequest.mode()); | 109 EXPECT_EQ(WebURLRequest::FetchRequestModeNoCORS, secondWebRequest.mode()); |
110 } | 110 } |
111 | 111 |
112 TEST_F(ServiceWorkerRequestTest, ToWebRequestStripsURLFragment) | 112 TEST_F(ServiceWorkerRequestTest, ToWebRequestStripsURLFragment) |
113 { | 113 { |
114 TrackExceptionState exceptionState; | 114 TrackExceptionState exceptionState; |
115 String urlWithoutFragment = "http://www.example.com/"; | 115 String urlWithoutFragment = "http://www.example.com/"; |
116 String url = urlWithoutFragment + "#fragment"; | 116 String url = urlWithoutFragment + "#fragment"; |
117 Request* request = Request::create(scriptState(), url, exceptionState); | 117 Request* request = Request::create(getScriptState(), url, exceptionState); |
118 ASSERT(request); | 118 ASSERT(request); |
119 | 119 |
120 WebServiceWorkerRequest webRequest; | 120 WebServiceWorkerRequest webRequest; |
121 request->populateWebServiceWorkerRequest(webRequest); | 121 request->populateWebServiceWorkerRequest(webRequest); |
122 EXPECT_EQ(urlWithoutFragment, KURL(webRequest.url())); | 122 EXPECT_EQ(urlWithoutFragment, KURL(webRequest.url())); |
123 } | 123 } |
124 | 124 |
125 } // namespace | 125 } // namespace |
126 } // namespace blink | 126 } // namespace blink |
OLD | NEW |