OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/at_exit.h" | 8 #include "base/at_exit.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "chrome/browser/chrome_plugin_service_filter.h" | 10 #include "chrome/browser/chrome_plugin_service_filter.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 pdf_path_, &info); | 155 pdf_path_, &info); |
156 ASSERT_EQ(want_loaded, is_loaded); | 156 ASSERT_EQ(want_loaded, is_loaded); |
157 } | 157 } |
158 | 158 |
159 void SetupRequest(net::URLRequest* request) { | 159 void SetupRequest(net::URLRequest* request) { |
160 content::ResourceRequestInfo::AllocateForTesting(request, | 160 content::ResourceRequestInfo::AllocateForTesting(request, |
161 ResourceType::MAIN_FRAME, | 161 ResourceType::MAIN_FRAME, |
162 &resource_context_, | 162 &resource_context_, |
163 -1, | 163 -1, |
164 -1); | 164 -1); |
165 request->set_context(resource_context_.GetRequestContext()); | |
166 } | 165 } |
167 | 166 |
168 protected: | 167 protected: |
169 base::ShadowingAtExitManager at_exit_manager_; // Deletes PluginService. | 168 base::ShadowingAtExitManager at_exit_manager_; // Deletes PluginService. |
170 MessageLoopForIO message_loop_; | 169 MessageLoopForIO message_loop_; |
171 content::TestBrowserThread ui_thread_; | 170 content::TestBrowserThread ui_thread_; |
172 content::TestBrowserThread file_thread_; | 171 content::TestBrowserThread file_thread_; |
173 content::TestBrowserThread io_thread_; | 172 content::TestBrowserThread io_thread_; |
174 webkit::npapi::MockPluginList plugin_list_; | 173 webkit::npapi::MockPluginList plugin_list_; |
175 TestingPrefService prefs_; | 174 TestingPrefService prefs_; |
176 scoped_refptr<PluginPrefs> plugin_prefs_; | 175 scoped_refptr<PluginPrefs> plugin_prefs_; |
177 net::URLRequestJobFactory job_factory_; | 176 net::URLRequestJobFactory job_factory_; |
178 const net::URLRequestJobFactory* old_factory_; | 177 const net::URLRequestJobFactory* old_factory_; |
179 TestDelegate test_delegate_; | 178 TestDelegate test_delegate_; |
180 FilePath pdf_path_; | 179 FilePath pdf_path_; |
181 content::MockResourceContext resource_context_; | 180 content::MockResourceContext resource_context_; |
182 }; | 181 }; |
183 | 182 |
184 TEST_F(GViewRequestInterceptorTest, DoNotInterceptHtml) { | 183 TEST_F(GViewRequestInterceptorTest, DoNotInterceptHtml) { |
185 net::URLRequest request(GURL(kHtmlUrl), &test_delegate_); | 184 net::URLRequest request( |
| 185 GURL(kHtmlUrl), &test_delegate_, resource_context_.GetRequestContext()); |
186 SetupRequest(&request); | 186 SetupRequest(&request); |
187 request.Start(); | 187 request.Start(); |
188 MessageLoop::current()->Run(); | 188 MessageLoop::current()->Run(); |
189 EXPECT_EQ(0, test_delegate_.received_redirect_count()); | 189 EXPECT_EQ(0, test_delegate_.received_redirect_count()); |
190 EXPECT_EQ(GURL(kHtmlUrl), request.url()); | 190 EXPECT_EQ(GURL(kHtmlUrl), request.url()); |
191 } | 191 } |
192 | 192 |
193 TEST_F(GViewRequestInterceptorTest, DoNotInterceptDownload) { | 193 TEST_F(GViewRequestInterceptorTest, DoNotInterceptDownload) { |
194 net::URLRequest request(GURL(kPdfUrl), &test_delegate_); | 194 net::URLRequest request( |
| 195 GURL(kPdfUrl), &test_delegate_, resource_context_.GetRequestContext()); |
195 SetupRequest(&request); | 196 SetupRequest(&request); |
196 request.set_load_flags(net::LOAD_IS_DOWNLOAD); | 197 request.set_load_flags(net::LOAD_IS_DOWNLOAD); |
197 request.Start(); | 198 request.Start(); |
198 MessageLoop::current()->Run(); | 199 MessageLoop::current()->Run(); |
199 EXPECT_EQ(0, test_delegate_.received_redirect_count()); | 200 EXPECT_EQ(0, test_delegate_.received_redirect_count()); |
200 EXPECT_EQ(GURL(kPdfUrl), request.url()); | 201 EXPECT_EQ(GURL(kPdfUrl), request.url()); |
201 } | 202 } |
202 | 203 |
203 TEST_F(GViewRequestInterceptorTest, DoNotInterceptPdfWhenEnabled) { | 204 TEST_F(GViewRequestInterceptorTest, DoNotInterceptPdfWhenEnabled) { |
204 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(true)); | 205 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(true)); |
205 plugin_prefs_->EnablePlugin(true, pdf_path_, MessageLoop::QuitClosure()); | 206 plugin_prefs_->EnablePlugin(true, pdf_path_, MessageLoop::QuitClosure()); |
206 MessageLoop::current()->Run(); | 207 MessageLoop::current()->Run(); |
207 | 208 |
208 net::URLRequest request(GURL(kPdfUrl), &test_delegate_); | 209 net::URLRequest request( |
| 210 GURL(kPdfUrl), &test_delegate_, resource_context_.GetRequestContext()); |
209 SetupRequest(&request); | 211 SetupRequest(&request); |
210 request.Start(); | 212 request.Start(); |
211 MessageLoop::current()->Run(); | 213 MessageLoop::current()->Run(); |
212 EXPECT_EQ(0, test_delegate_.received_redirect_count()); | 214 EXPECT_EQ(0, test_delegate_.received_redirect_count()); |
213 EXPECT_EQ(GURL(kPdfUrl), request.url()); | 215 EXPECT_EQ(GURL(kPdfUrl), request.url()); |
214 } | 216 } |
215 | 217 |
216 TEST_F(GViewRequestInterceptorTest, InterceptPdfWhenDisabled) { | 218 TEST_F(GViewRequestInterceptorTest, InterceptPdfWhenDisabled) { |
217 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(true)); | 219 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(true)); |
218 plugin_prefs_->EnablePlugin(false, pdf_path_, MessageLoop::QuitClosure()); | 220 plugin_prefs_->EnablePlugin(false, pdf_path_, MessageLoop::QuitClosure()); |
219 MessageLoop::current()->Run(); | 221 MessageLoop::current()->Run(); |
220 | 222 |
221 net::URLRequest request(GURL(kPdfUrl), &test_delegate_); | 223 net::URLRequest request( |
| 224 GURL(kPdfUrl), &test_delegate_, resource_context_.GetRequestContext()); |
222 SetupRequest(&request); | 225 SetupRequest(&request); |
223 request.Start(); | 226 request.Start(); |
224 MessageLoop::current()->Run(); | 227 MessageLoop::current()->Run(); |
225 EXPECT_EQ(1, test_delegate_.received_redirect_count()); | 228 EXPECT_EQ(1, test_delegate_.received_redirect_count()); |
226 EXPECT_EQ(GURL(kPdfUrlIntercepted), request.url()); | 229 EXPECT_EQ(GURL(kPdfUrlIntercepted), request.url()); |
227 } | 230 } |
228 | 231 |
229 #if !defined(GOOGLE_CHROME_BUILD) | 232 #if !defined(GOOGLE_CHROME_BUILD) |
230 // Official builds have pdf plugin by default, and we cannot unload it, so the | 233 // Official builds have pdf plugin by default, and we cannot unload it, so the |
231 // test fails. Since pdf plugin is always present, we don't need to run this | 234 // test fails. Since pdf plugin is always present, we don't need to run this |
232 // test. | 235 // test. |
233 TEST_F(GViewRequestInterceptorTest, InterceptPdfWithNoPlugin) { | 236 TEST_F(GViewRequestInterceptorTest, InterceptPdfWithNoPlugin) { |
234 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); | 237 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); |
235 | 238 |
236 net::URLRequest request(GURL(kPdfUrl), &test_delegate_); | 239 net::URLRequest request( |
| 240 GURL(kPdfUrl), &test_delegate_, resource_context_.GetRequestContext()); |
237 SetupRequest(&request); | 241 SetupRequest(&request); |
238 request.Start(); | 242 request.Start(); |
239 MessageLoop::current()->Run(); | 243 MessageLoop::current()->Run(); |
240 EXPECT_EQ(1, test_delegate_.received_redirect_count()); | 244 EXPECT_EQ(1, test_delegate_.received_redirect_count()); |
241 EXPECT_EQ(GURL(kPdfUrlIntercepted), request.url()); | 245 EXPECT_EQ(GURL(kPdfUrlIntercepted), request.url()); |
242 } | 246 } |
243 #endif | 247 #endif |
244 | 248 |
245 TEST_F(GViewRequestInterceptorTest, InterceptPowerpoint) { | 249 TEST_F(GViewRequestInterceptorTest, InterceptPowerpoint) { |
246 net::URLRequest request(GURL(kPptUrl), &test_delegate_); | 250 net::URLRequest request( |
| 251 GURL(kPptUrl), &test_delegate_, resource_context_.GetRequestContext()); |
247 SetupRequest(&request); | 252 SetupRequest(&request); |
248 request.Start(); | 253 request.Start(); |
249 MessageLoop::current()->Run(); | 254 MessageLoop::current()->Run(); |
250 EXPECT_EQ(1, test_delegate_.received_redirect_count()); | 255 EXPECT_EQ(1, test_delegate_.received_redirect_count()); |
251 EXPECT_EQ(GURL(kPptUrlIntercepted), request.url()); | 256 EXPECT_EQ(GURL(kPptUrlIntercepted), request.url()); |
252 } | 257 } |
253 | 258 |
254 TEST_F(GViewRequestInterceptorTest, DoNotInterceptPost) { | 259 TEST_F(GViewRequestInterceptorTest, DoNotInterceptPost) { |
255 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); | 260 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); |
256 | 261 |
257 net::URLRequest request(GURL(kPdfUrl), &test_delegate_); | 262 net::URLRequest request( |
| 263 GURL(kPdfUrl), &test_delegate_, resource_context_.GetRequestContext()); |
258 SetupRequest(&request); | 264 SetupRequest(&request); |
259 request.set_method("POST"); | 265 request.set_method("POST"); |
260 request.Start(); | 266 request.Start(); |
261 MessageLoop::current()->Run(); | 267 MessageLoop::current()->Run(); |
262 EXPECT_EQ(0, test_delegate_.received_redirect_count()); | 268 EXPECT_EQ(0, test_delegate_.received_redirect_count()); |
263 EXPECT_EQ(GURL(kPdfUrl), request.url()); | 269 EXPECT_EQ(GURL(kPdfUrl), request.url()); |
264 } | 270 } |
265 | 271 |
266 TEST_F(GViewRequestInterceptorTest, DoNotInterceptBlob) { | 272 TEST_F(GViewRequestInterceptorTest, DoNotInterceptBlob) { |
267 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); | 273 ASSERT_NO_FATAL_FAILURE(SetPDFPluginLoadedState(false)); |
268 | 274 |
269 net::URLRequest request(GURL(kPdfBlob), &test_delegate_); | 275 net::URLRequest request( |
| 276 GURL(kPdfBlob), &test_delegate_, resource_context_.GetRequestContext()); |
270 SetupRequest(&request); | 277 SetupRequest(&request); |
271 request.Start(); | 278 request.Start(); |
272 MessageLoop::current()->Run(); | 279 MessageLoop::current()->Run(); |
273 EXPECT_EQ(0, test_delegate_.received_redirect_count()); | 280 EXPECT_EQ(0, test_delegate_.received_redirect_count()); |
274 EXPECT_EQ(GURL(kPdfBlob), request.url()); | 281 EXPECT_EQ(GURL(kPdfBlob), request.url()); |
275 } | 282 } |
276 | 283 |
277 } // namespace | 284 } // namespace |
278 | 285 |
279 } // namespace chromeos | 286 } // namespace chromeos |
OLD | NEW |