OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ppapi/thunk/thunk.h" | 5 #include "ppapi/thunk/thunk.h" |
6 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 6 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
7 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrameClient.h" | 7 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrameClient.h" |
8 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" | 8 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" |
9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 9 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" | 10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 WebString GetMethod() { | 83 WebString GetMethod() { |
84 WebURLRequest web_request = info_->ToWebURLRequest(frame_); | 84 WebURLRequest web_request = info_->ToWebURLRequest(frame_); |
85 return web_request.httpMethod(); | 85 return web_request.httpMethod(); |
86 } | 86 } |
87 | 87 |
88 WebString GetHeaderValue(const char* field) { | 88 WebString GetHeaderValue(const char* field) { |
89 WebURLRequest web_request = info_->ToWebURLRequest(frame_); | 89 WebURLRequest web_request = info_->ToWebURLRequest(frame_); |
90 return web_request.httpHeaderField(WebString::fromUTF8(field)); | 90 return web_request.httpHeaderField(WebString::fromUTF8(field)); |
91 } | 91 } |
92 | 92 |
| 93 bool SetBooleanProperty(PP_URLRequestProperty prop, bool b) { |
| 94 info_->SetBooleanProperty(prop, b); |
| 95 } |
| 96 bool SetStringProperty(PP_URLRequestProperty prop, const std::string& s) { |
| 97 info_->SetStringProperty(prop, s); |
| 98 } |
| 99 |
93 scoped_refptr<PPB_URLRequestInfo_Impl> info_; | 100 scoped_refptr<PPB_URLRequestInfo_Impl> info_; |
94 | 101 |
95 static TestWebFrameClient web_frame_client_; | 102 static TestWebFrameClient web_frame_client_; |
96 static WebView* web_view_; | 103 static WebView* web_view_; |
97 static WebFrame* frame_; | 104 static WebFrame* frame_; |
98 }; | 105 }; |
99 | 106 |
100 TestWebFrameClient URLRequestInfoTest::web_frame_client_; | 107 TestWebFrameClient URLRequestInfoTest::web_frame_client_; |
101 WebView* URLRequestInfoTest::web_view_; | 108 WebView* URLRequestInfoTest::web_view_; |
102 WebFrame* URLRequestInfoTest::frame_; | 109 WebFrame* URLRequestInfoTest::frame_; |
103 | 110 |
104 TEST_F(URLRequestInfoTest, GetInterface) { | 111 TEST_F(URLRequestInfoTest, GetInterface) { |
105 const PPB_URLRequestInfo* interface = | 112 const PPB_URLRequestInfo* interface = |
106 ::ppapi::thunk::GetPPB_URLRequestInfo_Thunk(); | 113 ::ppapi::thunk::GetPPB_URLRequestInfo_Thunk(); |
107 ASSERT_TRUE(interface); | 114 ASSERT_TRUE(interface); |
108 ASSERT_TRUE(interface->Create); | 115 ASSERT_TRUE(interface->Create); |
109 ASSERT_TRUE(interface->IsURLRequestInfo); | 116 ASSERT_TRUE(interface->IsURLRequestInfo); |
110 ASSERT_TRUE(interface->SetProperty); | 117 ASSERT_TRUE(interface->SetProperty); |
111 ASSERT_TRUE(interface->AppendDataToBody); | 118 ASSERT_TRUE(interface->AppendDataToBody); |
112 ASSERT_TRUE(interface->AppendFileToBody); | 119 ASSERT_TRUE(interface->AppendFileToBody); |
113 ASSERT_TRUE(interface->Create); | 120 ASSERT_TRUE(interface->Create); |
114 ASSERT_TRUE(interface->Create); | 121 ASSERT_TRUE(interface->Create); |
115 } | 122 } |
116 | 123 |
117 TEST_F(URLRequestInfoTest, AsURLRequestInfo) { | 124 TEST_F(URLRequestInfoTest, AsURLRequestInfo) { |
118 ASSERT_EQ(info_, info_->AsPPB_URLRequestInfo_API()); | 125 ASSERT_EQ(info_, info_->AsPPB_URLRequestInfo_API()); |
119 } | 126 } |
120 | 127 |
121 TEST_F(URLRequestInfoTest, StreamToFile) { | 128 TEST_F(URLRequestInfoTest, StreamToFile) { |
122 info_->SetStringProperty(PP_URLREQUESTPROPERTY_URL, "http://www.google.com"); | 129 SetStringProperty(PP_URLREQUESTPROPERTY_URL, "http://www.google.com"); |
123 | 130 |
124 ASSERT_FALSE(GetDownloadToFile()); | 131 ASSERT_FALSE(GetDownloadToFile()); |
125 | 132 |
126 ASSERT_TRUE(info_->SetBooleanProperty( | 133 ASSERT_TRUE(SetBooleanProperty( |
127 PP_URLREQUESTPROPERTY_STREAMTOFILE, true)); | 134 PP_URLREQUESTPROPERTY_STREAMTOFILE, true)); |
128 ASSERT_TRUE(GetDownloadToFile()); | 135 ASSERT_TRUE(GetDownloadToFile()); |
129 | 136 |
130 ASSERT_TRUE(info_->SetBooleanProperty( | 137 ASSERT_TRUE(SetBooleanProperty( |
131 PP_URLREQUESTPROPERTY_STREAMTOFILE, false)); | 138 PP_URLREQUESTPROPERTY_STREAMTOFILE, false)); |
132 ASSERT_FALSE(GetDownloadToFile()); | 139 ASSERT_FALSE(GetDownloadToFile()); |
133 } | 140 } |
134 | 141 |
135 TEST_F(URLRequestInfoTest, FollowRedirects) { | 142 TEST_F(URLRequestInfoTest, FollowRedirects) { |
136 ASSERT_TRUE(info_->follow_redirects()); | 143 ASSERT_TRUE(info_->follow_redirects()); |
137 | 144 |
138 ASSERT_TRUE(info_->SetBooleanProperty( | 145 ASSERT_TRUE(SetBooleanProperty( |
139 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, false)); | 146 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, false)); |
140 ASSERT_FALSE(info_->follow_redirects()); | 147 ASSERT_FALSE(info_->follow_redirects()); |
141 | 148 |
142 ASSERT_TRUE(info_->SetBooleanProperty( | 149 ASSERT_TRUE(SetBooleanProperty( |
143 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, true)); | 150 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, true)); |
144 ASSERT_TRUE(info_->follow_redirects()); | 151 ASSERT_TRUE(info_->follow_redirects()); |
145 } | 152 } |
146 | 153 |
147 TEST_F(URLRequestInfoTest, RecordDownloadProgress) { | 154 TEST_F(URLRequestInfoTest, RecordDownloadProgress) { |
148 ASSERT_FALSE(info_->record_download_progress()); | 155 ASSERT_FALSE(info_->record_download_progress()); |
149 | 156 |
150 ASSERT_TRUE(info_->SetBooleanProperty( | 157 ASSERT_TRUE(SetBooleanProperty( |
151 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, true)); | 158 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, true)); |
152 ASSERT_TRUE(info_->record_download_progress()); | 159 ASSERT_TRUE(info_->record_download_progress()); |
153 | 160 |
154 ASSERT_TRUE(info_->SetBooleanProperty( | 161 ASSERT_TRUE(SetBooleanProperty( |
155 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, false)); | 162 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, false)); |
156 ASSERT_FALSE(info_->record_download_progress()); | 163 ASSERT_FALSE(info_->record_download_progress()); |
157 } | 164 } |
158 | 165 |
159 TEST_F(URLRequestInfoTest, RecordUploadProgress) { | 166 TEST_F(URLRequestInfoTest, RecordUploadProgress) { |
160 ASSERT_FALSE(info_->record_upload_progress()); | 167 ASSERT_FALSE(info_->record_upload_progress()); |
161 | 168 |
162 ASSERT_TRUE(info_->SetBooleanProperty( | 169 ASSERT_TRUE(SetBooleanProperty( |
163 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, true)); | 170 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, true)); |
164 ASSERT_TRUE(info_->record_upload_progress()); | 171 ASSERT_TRUE(info_->record_upload_progress()); |
165 | 172 |
166 ASSERT_TRUE(info_->SetBooleanProperty( | 173 ASSERT_TRUE(SetBooleanProperty( |
167 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, false)); | 174 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, false)); |
168 ASSERT_FALSE(info_->record_upload_progress()); | 175 ASSERT_FALSE(info_->record_upload_progress()); |
169 } | 176 } |
170 | 177 |
171 TEST_F(URLRequestInfoTest, AllowCrossOriginRequests) { | 178 TEST_F(URLRequestInfoTest, AllowCrossOriginRequests) { |
172 ASSERT_FALSE(info_->allow_cross_origin_requests()); | 179 ASSERT_FALSE(info_->allow_cross_origin_requests()); |
173 | 180 |
174 ASSERT_TRUE(info_->SetBooleanProperty( | 181 ASSERT_TRUE(SetBooleanProperty( |
175 PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, true)); | 182 PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, true)); |
176 ASSERT_TRUE(info_->allow_cross_origin_requests()); | 183 ASSERT_TRUE(info_->allow_cross_origin_requests()); |
177 | 184 |
178 ASSERT_TRUE(info_->SetBooleanProperty( | 185 ASSERT_TRUE(SetBooleanProperty( |
179 PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, false)); | 186 PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS, false)); |
180 ASSERT_FALSE(info_->allow_cross_origin_requests()); | 187 ASSERT_FALSE(info_->allow_cross_origin_requests()); |
181 } | 188 } |
182 | 189 |
183 TEST_F(URLRequestInfoTest, AllowCredentials) { | 190 TEST_F(URLRequestInfoTest, AllowCredentials) { |
184 ASSERT_FALSE(info_->allow_credentials()); | 191 ASSERT_FALSE(info_->allow_credentials()); |
185 | 192 |
186 ASSERT_TRUE(info_->SetBooleanProperty( | 193 ASSERT_TRUE(SetBooleanProperty( |
187 PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, true)); | 194 PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, true)); |
188 ASSERT_TRUE(info_->allow_credentials()); | 195 ASSERT_TRUE(info_->allow_credentials()); |
189 | 196 |
190 ASSERT_TRUE(info_->SetBooleanProperty( | 197 ASSERT_TRUE(SetBooleanProperty( |
191 PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, false)); | 198 PP_URLREQUESTPROPERTY_ALLOWCREDENTIALS, false)); |
192 ASSERT_FALSE(info_->allow_credentials()); | 199 ASSERT_FALSE(info_->allow_credentials()); |
193 } | 200 } |
194 | 201 |
195 TEST_F(URLRequestInfoTest, SetURL) { | 202 TEST_F(URLRequestInfoTest, SetURL) { |
196 // Test default URL is "about:blank". | 203 // Test default URL is "about:blank". |
197 ASSERT_TRUE(IsExpected(GetURL(), "about:blank")); | 204 ASSERT_TRUE(IsExpected(GetURL(), "about:blank")); |
198 | 205 |
199 const char* url = "http://www.google.com/"; | 206 const char* url = "http://www.google.com/"; |
200 ASSERT_TRUE(info_->SetStringProperty( | 207 ASSERT_TRUE(SetStringProperty( |
201 PP_URLREQUESTPROPERTY_URL, url)); | 208 PP_URLREQUESTPROPERTY_URL, url)); |
202 ASSERT_TRUE(IsExpected(GetURL(), url)); | 209 ASSERT_TRUE(IsExpected(GetURL(), url)); |
203 } | 210 } |
204 | 211 |
205 TEST_F(URLRequestInfoTest, JavascriptURL) { | 212 TEST_F(URLRequestInfoTest, JavascriptURL) { |
206 const char* url = "javascript:foo = bar"; | 213 const char* url = "javascript:foo = bar"; |
207 ASSERT_FALSE(info_->RequiresUniversalAccess()); | 214 ASSERT_FALSE(info_->RequiresUniversalAccess()); |
208 info_->SetStringProperty(PP_URLREQUESTPROPERTY_URL, url); | 215 SetStringProperty(PP_URLREQUESTPROPERTY_URL, url); |
209 ASSERT_TRUE(info_->RequiresUniversalAccess()); | 216 ASSERT_TRUE(info_->RequiresUniversalAccess()); |
210 } | 217 } |
211 | 218 |
212 TEST_F(URLRequestInfoTest, SetMethod) { | 219 TEST_F(URLRequestInfoTest, SetMethod) { |
213 // Test default method is "GET". | 220 // Test default method is "GET". |
214 ASSERT_TRUE(IsExpected(GetMethod(), "GET")); | 221 ASSERT_TRUE(IsExpected(GetMethod(), "GET")); |
215 ASSERT_TRUE(info_->SetStringProperty( | 222 ASSERT_TRUE(SetStringProperty( |
216 PP_URLREQUESTPROPERTY_METHOD, "POST")); | 223 PP_URLREQUESTPROPERTY_METHOD, "POST")); |
217 ASSERT_TRUE(IsExpected(GetMethod(), "POST")); | 224 ASSERT_TRUE(IsExpected(GetMethod(), "POST")); |
218 | 225 |
219 // Test that method names are converted to upper case. | 226 // Test that method names are converted to upper case. |
220 ASSERT_TRUE(info_->SetStringProperty( | 227 ASSERT_TRUE(SetStringProperty( |
221 PP_URLREQUESTPROPERTY_METHOD, "get")); | 228 PP_URLREQUESTPROPERTY_METHOD, "get")); |
222 ASSERT_TRUE(IsExpected(GetMethod(), "GET")); | 229 ASSERT_TRUE(IsExpected(GetMethod(), "GET")); |
223 ASSERT_TRUE(info_->SetStringProperty( | 230 ASSERT_TRUE(SetStringProperty( |
224 PP_URLREQUESTPROPERTY_METHOD, "post")); | 231 PP_URLREQUESTPROPERTY_METHOD, "post")); |
225 ASSERT_TRUE(IsExpected(GetMethod(), "POST")); | 232 ASSERT_TRUE(IsExpected(GetMethod(), "POST")); |
226 } | 233 } |
227 | 234 |
228 TEST_F(URLRequestInfoTest, SetInvalidMethod) { | 235 TEST_F(URLRequestInfoTest, SetInvalidMethod) { |
229 ASSERT_FALSE(info_->SetStringProperty( | 236 ASSERT_FALSE(SetStringProperty( |
230 PP_URLREQUESTPROPERTY_METHOD, "CONNECT")); | 237 PP_URLREQUESTPROPERTY_METHOD, "CONNECT")); |
231 ASSERT_FALSE(info_->SetStringProperty( | 238 ASSERT_FALSE(SetStringProperty( |
232 PP_URLREQUESTPROPERTY_METHOD, "connect")); | 239 PP_URLREQUESTPROPERTY_METHOD, "connect")); |
233 ASSERT_FALSE(info_->SetStringProperty( | 240 ASSERT_FALSE(SetStringProperty( |
234 PP_URLREQUESTPROPERTY_METHOD, "TRACE")); | 241 PP_URLREQUESTPROPERTY_METHOD, "TRACE")); |
235 ASSERT_FALSE(info_->SetStringProperty( | 242 ASSERT_FALSE(SetStringProperty( |
236 PP_URLREQUESTPROPERTY_METHOD, "trace")); | 243 PP_URLREQUESTPROPERTY_METHOD, "trace")); |
237 ASSERT_FALSE(info_->SetStringProperty( | 244 ASSERT_FALSE(SetStringProperty( |
238 PP_URLREQUESTPROPERTY_METHOD, "TRACK")); | 245 PP_URLREQUESTPROPERTY_METHOD, "TRACK")); |
239 ASSERT_FALSE(info_->SetStringProperty( | 246 ASSERT_FALSE(SetStringProperty( |
240 PP_URLREQUESTPROPERTY_METHOD, "track")); | 247 PP_URLREQUESTPROPERTY_METHOD, "track")); |
241 | 248 |
242 ASSERT_FALSE(info_->SetStringProperty( | 249 ASSERT_FALSE(SetStringProperty( |
243 PP_URLREQUESTPROPERTY_METHOD, "POST\x0d\x0ax-csrf-token:\x20test1234")); | 250 PP_URLREQUESTPROPERTY_METHOD, "POST\x0d\x0ax-csrf-token:\x20test1234")); |
244 } | 251 } |
245 | 252 |
246 TEST_F(URLRequestInfoTest, SetValidHeaders) { | 253 TEST_F(URLRequestInfoTest, SetValidHeaders) { |
247 // Test default header field. | 254 // Test default header field. |
248 ASSERT_TRUE(IsExpected( | 255 ASSERT_TRUE(IsExpected( |
249 GetHeaderValue("foo"), "")); | 256 GetHeaderValue("foo"), "")); |
250 // Test that we can set a header field. | 257 // Test that we can set a header field. |
251 ASSERT_TRUE(info_->SetStringProperty( | 258 ASSERT_TRUE(SetStringProperty( |
252 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar")); | 259 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar")); |
253 ASSERT_TRUE(IsExpected( | 260 ASSERT_TRUE(IsExpected( |
254 GetHeaderValue("foo"), "bar")); | 261 GetHeaderValue("foo"), "bar")); |
255 // Test that we can set multiple header fields using \n delimiter. | 262 // Test that we can set multiple header fields using \n delimiter. |
256 ASSERT_TRUE(info_->SetStringProperty( | 263 ASSERT_TRUE(SetStringProperty( |
257 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\nbar: baz")); | 264 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\nbar: baz")); |
258 ASSERT_TRUE(IsExpected( | 265 ASSERT_TRUE(IsExpected( |
259 GetHeaderValue("foo"), "bar")); | 266 GetHeaderValue("foo"), "bar")); |
260 ASSERT_TRUE(IsExpected( | 267 ASSERT_TRUE(IsExpected( |
261 GetHeaderValue("bar"), "baz")); | 268 GetHeaderValue("bar"), "baz")); |
262 } | 269 } |
263 | 270 |
264 TEST_F(URLRequestInfoTest, SetInvalidHeaders) { | 271 TEST_F(URLRequestInfoTest, SetInvalidHeaders) { |
265 const char* const kForbiddenHeaderFields[] = { | 272 const char* const kForbiddenHeaderFields[] = { |
266 "accept-charset", | 273 "accept-charset", |
(...skipping 17 matching lines...) Expand all Loading... |
284 "via", | 291 "via", |
285 | 292 |
286 "proxy-foo", // Test for any header starting with proxy- or sec-. | 293 "proxy-foo", // Test for any header starting with proxy- or sec-. |
287 "sec-foo", | 294 "sec-foo", |
288 }; | 295 }; |
289 | 296 |
290 // Test that no forbidden header fields can be set. | 297 // Test that no forbidden header fields can be set. |
291 for (size_t i = 0; i < arraysize(kForbiddenHeaderFields); ++i) { | 298 for (size_t i = 0; i < arraysize(kForbiddenHeaderFields); ++i) { |
292 std::string headers(kForbiddenHeaderFields[i]); | 299 std::string headers(kForbiddenHeaderFields[i]); |
293 headers.append(": foo"); | 300 headers.append(": foo"); |
294 ASSERT_FALSE(info_->SetStringProperty( | 301 ASSERT_FALSE(SetStringProperty( |
295 PP_URLREQUESTPROPERTY_HEADERS, headers.c_str())); | 302 PP_URLREQUESTPROPERTY_HEADERS, headers.c_str())); |
296 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue(kForbiddenHeaderFields[i]))); | 303 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue(kForbiddenHeaderFields[i]))); |
297 } | 304 } |
298 | 305 |
299 // Test that forbidden header can't be set in various ways. | 306 // Test that forbidden header can't be set in various ways. |
300 ASSERT_FALSE(info_->SetStringProperty( | 307 ASSERT_FALSE(SetStringProperty( |
301 PP_URLREQUESTPROPERTY_HEADERS, "cookie : foo")); | 308 PP_URLREQUESTPROPERTY_HEADERS, "cookie : foo")); |
302 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie"))); | 309 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie"))); |
303 | 310 |
304 // Test that forbidden header can't be set with an allowed one. | 311 // Test that forbidden header can't be set with an allowed one. |
305 ASSERT_FALSE(info_->SetStringProperty( | 312 ASSERT_FALSE(SetStringProperty( |
306 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\ncookie: foo")); | 313 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\ncookie: foo")); |
307 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie"))); | 314 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie"))); |
308 } | 315 } |
309 | 316 |
310 // TODO(bbudge) Unit tests for AppendDataToBody, AppendFileToBody. | 317 // TODO(bbudge) Unit tests for AppendDataToBody, AppendFileToBody. |
311 | 318 |
312 } // namespace ppapi | 319 } // namespace ppapi |
313 } // namespace webkit | 320 } // namespace webkit |
314 | 321 |
OLD | NEW |