| 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 |