Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: webkit/plugins/ppapi/url_request_info_unittest.cc

Issue 5996003: Revert "Revert 69755 - Move the NPAPI files from webkit/glue/plugins to webkit/plugins/npapi" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/plugin_switches.cc ('k') | webkit/support/platform_support_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 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 "third_party/WebKit/WebKit/chromium/public/WebFrame.h"
6 #include "third_party/WebKit/WebKit/chromium/public/WebFrameClient.h"
7 #include "third_party/WebKit/WebKit/chromium/public/WebURLRequest.h"
8 #include "third_party/WebKit/WebKit/chromium/public/WebView.h"
9
10 #include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
11 #include "webkit/plugins/ppapi/ppb_url_request_info_impl.h"
12 #include "webkit/plugins/ppapi/ppapi_unittest.h"
13
14 using WebKit::WebCString;
15 using WebKit::WebFrame;
16 using WebKit::WebFrameClient;
17 using WebKit::WebString;
18 using WebKit::WebView;
19 using WebKit::WebURL;
20 using WebKit::WebURLRequest;
21
22 namespace {
23
24 bool IsExpected(const WebCString& web_string, const char* expected) {
25 const char* result = web_string.data();
26 return strcmp(result, expected) == 0;
27 }
28
29 bool IsExpected(const WebString& web_string, const char* expected) {
30 return IsExpected(web_string.utf8(), expected);
31 }
32
33 bool IsNullOrEmpty(const WebString& web_string) {
34 return web_string.isNull() || web_string.isEmpty();
35 }
36
37 // The base class destructor is protected, so derive.
38 class TestWebFrameClient : public WebFrameClient {
39 };
40
41 } // namespace
42
43 namespace webkit {
44 namespace ppapi {
45
46 class URLRequestInfoTest : public PpapiUnittest {
47 public:
48 URLRequestInfoTest() : info_(new PPB_URLRequestInfo_Impl(module())) {
49 }
50
51 static void SetUpTestCase() {
52 web_view_ = WebView::create(0, 0);
53 web_view_->initializeMainFrame(&web_frame_client_);
54 WebURL web_url(GURL(""));
55 WebURLRequest url_request;
56 url_request.initialize();
57 url_request.setURL(web_url);
58 frame_ = web_view_->mainFrame();
59 frame_->loadRequest(url_request);
60 }
61
62 static void TearDownTestCase() {
63 web_view_->close();
64 }
65
66 bool GetDownloadToFile() {
67 WebURLRequest web_request = info_->ToWebURLRequest(frame_);
68 return web_request.downloadToFile();
69 }
70
71 WebCString GetURL() {
72 WebURLRequest web_request = info_->ToWebURLRequest(frame_);
73 return web_request.url().spec();
74 }
75
76 WebString GetMethod() {
77 WebURLRequest web_request = info_->ToWebURLRequest(frame_);
78 return web_request.httpMethod();
79 }
80
81 WebString GetHeaderValue(const char* field) {
82 WebURLRequest web_request = info_->ToWebURLRequest(frame_);
83 return web_request.httpHeaderField(WebString::fromUTF8(field));
84 }
85
86 scoped_refptr<PPB_URLRequestInfo_Impl> info_;
87
88 static TestWebFrameClient web_frame_client_;
89 static WebView* web_view_;
90 static WebFrame* frame_;
91 };
92
93 TestWebFrameClient URLRequestInfoTest::web_frame_client_;
94 WebView* URLRequestInfoTest::web_view_;
95 WebFrame* URLRequestInfoTest::frame_;
96
97 TEST_F(URLRequestInfoTest, GetInterface) {
98 const PPB_URLRequestInfo* interface = info_->GetInterface();
99 ASSERT_TRUE(interface);
100 ASSERT_TRUE(interface->Create);
101 ASSERT_TRUE(interface->IsURLRequestInfo);
102 ASSERT_TRUE(interface->SetProperty);
103 ASSERT_TRUE(interface->AppendDataToBody);
104 ASSERT_TRUE(interface->AppendFileToBody);
105 ASSERT_TRUE(interface->Create);
106 ASSERT_TRUE(interface->Create);
107 }
108
109 TEST_F(URLRequestInfoTest, AsURLRequestInfo) {
110 ASSERT_EQ(info_, info_->AsPPB_URLRequestInfo_Impl());
111 }
112
113 TEST_F(URLRequestInfoTest, StreamToFile) {
114 info_->SetStringProperty(PP_URLREQUESTPROPERTY_URL, "http://www.google.com");
115
116 ASSERT_FALSE(GetDownloadToFile());
117
118 ASSERT_TRUE(info_->SetBooleanProperty(
119 PP_URLREQUESTPROPERTY_STREAMTOFILE, true));
120 ASSERT_TRUE(GetDownloadToFile());
121
122 ASSERT_TRUE(info_->SetBooleanProperty(
123 PP_URLREQUESTPROPERTY_STREAMTOFILE, false));
124 ASSERT_FALSE(GetDownloadToFile());
125 }
126
127 TEST_F(URLRequestInfoTest, FollowRedirects) {
128 ASSERT_TRUE(info_->follow_redirects());
129
130 ASSERT_TRUE(info_->SetBooleanProperty(
131 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, false));
132 ASSERT_FALSE(info_->follow_redirects());
133
134 ASSERT_TRUE(info_->SetBooleanProperty(
135 PP_URLREQUESTPROPERTY_FOLLOWREDIRECTS, true));
136 ASSERT_TRUE(info_->follow_redirects());
137 }
138
139 TEST_F(URLRequestInfoTest, RecordDownloadProgress) {
140 ASSERT_FALSE(info_->record_download_progress());
141
142 ASSERT_TRUE(info_->SetBooleanProperty(
143 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, true));
144 ASSERT_TRUE(info_->record_download_progress());
145
146 ASSERT_TRUE(info_->SetBooleanProperty(
147 PP_URLREQUESTPROPERTY_RECORDDOWNLOADPROGRESS, false));
148 ASSERT_FALSE(info_->record_download_progress());
149 }
150
151 TEST_F(URLRequestInfoTest, RecordUploadProgress) {
152 ASSERT_FALSE(info_->record_upload_progress());
153
154 ASSERT_TRUE(info_->SetBooleanProperty(
155 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, true));
156 ASSERT_TRUE(info_->record_upload_progress());
157
158 ASSERT_TRUE(info_->SetBooleanProperty(
159 PP_URLREQUESTPROPERTY_RECORDUPLOADPROGRESS, false));
160 ASSERT_FALSE(info_->record_upload_progress());
161 }
162
163 TEST_F(URLRequestInfoTest, SetURL) {
164 // Test default URL is "about:blank".
165 ASSERT_TRUE(IsExpected(GetURL(), "about:blank"));
166
167 const char* url = "http://www.google.com/";
168 ASSERT_TRUE(info_->SetStringProperty(
169 PP_URLREQUESTPROPERTY_URL, url));
170 ASSERT_TRUE(IsExpected(GetURL(), url));
171 }
172
173 TEST_F(URLRequestInfoTest, SetMethod) {
174 // Test default method is "GET".
175 ASSERT_TRUE(IsExpected(GetMethod(), "GET"));
176 ASSERT_TRUE(info_->SetStringProperty(
177 PP_URLREQUESTPROPERTY_METHOD, "POST"));
178 ASSERT_TRUE(IsExpected(GetMethod(), "POST"));
179 }
180
181 TEST_F(URLRequestInfoTest, SetValidHeaders) {
182 // Test default header field.
183 ASSERT_TRUE(IsExpected(
184 GetHeaderValue("foo"), ""));
185 // Test that we can set a header field.
186 ASSERT_TRUE(info_->SetStringProperty(
187 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar"));
188 ASSERT_TRUE(IsExpected(
189 GetHeaderValue("foo"), "bar"));
190 // Test that we can set multiple header fields using \n delimiter.
191 ASSERT_TRUE(info_->SetStringProperty(
192 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\nbar: baz"));
193 ASSERT_TRUE(IsExpected(
194 GetHeaderValue("foo"), "bar"));
195 ASSERT_TRUE(IsExpected(
196 GetHeaderValue("bar"), "baz"));
197 }
198
199 TEST_F(URLRequestInfoTest, SetInvalidHeaders) {
200 const char* const kForbiddenHeaderFields[] = {
201 "accept-charset",
202 "accept-encoding",
203 "connection",
204 "content-length",
205 "cookie",
206 "cookie2",
207 "content-transfer-encoding",
208 "date",
209 "expect",
210 "host",
211 "keep-alive",
212 "origin",
213 "referer",
214 "te",
215 "trailer",
216 "transfer-encoding",
217 "upgrade",
218 "user-agent",
219 "via",
220
221 "proxy-foo", // Test for any header starting with proxy- or sec-.
222 "sec-foo",
223 };
224
225 // Test that no forbidden header fields can be set.
226 for (size_t i = 0; i < arraysize(kForbiddenHeaderFields); ++i) {
227 std::string headers(kForbiddenHeaderFields[i]);
228 headers.append(": foo");
229 ASSERT_FALSE(info_->SetStringProperty(
230 PP_URLREQUESTPROPERTY_HEADERS, headers.c_str()));
231 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue(kForbiddenHeaderFields[i])));
232 }
233
234 // Test that forbidden header can't be set in various ways.
235 ASSERT_FALSE(info_->SetStringProperty(
236 PP_URLREQUESTPROPERTY_HEADERS, "cookie : foo"));
237 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie")));
238
239 // Test that forbidden header can't be set with an allowed one.
240 ASSERT_FALSE(info_->SetStringProperty(
241 PP_URLREQUESTPROPERTY_HEADERS, "foo: bar\ncookie: foo"));
242 ASSERT_TRUE(IsNullOrEmpty(GetHeaderValue("cookie")));
243 }
244
245 // TODO(bbudge) Unit tests for AppendDataToBody, AppendFileToBody.
246
247 } // namespace ppapi
248 } // namespace webkit
249
OLDNEW
« no previous file with comments | « webkit/plugins/plugin_switches.cc ('k') | webkit/support/platform_support_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698