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

Side by Side Diff: chrome/browser/extensions/extension_protocols_unittest.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months 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
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory>
7 #include <string> 8 #include <string>
8 9
9 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
10 #include "base/macros.h" 11 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/strings/string_number_conversions.h" 13 #include "base/strings/string_number_conversions.h"
14 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/common/chrome_paths.h" 16 #include "chrome/common/chrome_paths.h"
17 #include "content/public/browser/resource_request_info.h" 17 #include "content/public/browser/resource_request_info.h"
18 #include "content/public/test/mock_resource_context.h" 18 #include "content/public/test/mock_resource_context.h"
19 #include "content/public/test/test_browser_thread_bundle.h" 19 #include "content/public/test/test_browser_thread_bundle.h"
20 #include "extensions/browser/extension_protocols.h" 20 #include "extensions/browser/extension_protocols.h"
21 #include "extensions/browser/info_map.h" 21 #include "extensions/browser/info_map.h"
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 // the result. If |extension| hasn't already been added to 153 // the result. If |extension| hasn't already been added to
154 // |extension_info_map_|, this will add it. 154 // |extension_info_map_|, this will add it.
155 net::URLRequestStatus::Status DoRequest(const Extension& extension, 155 net::URLRequestStatus::Status DoRequest(const Extension& extension,
156 const std::string& relative_path) { 156 const std::string& relative_path) {
157 if (!extension_info_map_->extensions().Contains(extension.id())) { 157 if (!extension_info_map_->extensions().Contains(extension.id())) {
158 extension_info_map_->AddExtension(&extension, 158 extension_info_map_->AddExtension(&extension,
159 base::Time::Now(), 159 base::Time::Now(),
160 false, // incognito_enabled 160 false, // incognito_enabled
161 false); // notifications_disabled 161 false); // notifications_disabled
162 } 162 }
163 scoped_ptr<net::URLRequest> request( 163 std::unique_ptr<net::URLRequest> request(
164 resource_context_.GetRequestContext()->CreateRequest( 164 resource_context_.GetRequestContext()->CreateRequest(
165 extension.GetResourceURL(relative_path), 165 extension.GetResourceURL(relative_path), net::DEFAULT_PRIORITY,
166 net::DEFAULT_PRIORITY,
167 &test_delegate_)); 166 &test_delegate_));
168 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 167 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
169 return request->status().status(); 168 return request->status().status();
170 } 169 }
171 170
172 protected: 171 protected:
173 content::TestBrowserThreadBundle thread_bundle_; 172 content::TestBrowserThreadBundle thread_bundle_;
174 scoped_refptr<InfoMap> extension_info_map_; 173 scoped_refptr<InfoMap> extension_info_map_;
175 net::URLRequestJobFactoryImpl job_factory_; 174 net::URLRequestJobFactoryImpl job_factory_;
176 const net::URLRequestJobFactory* old_factory_; 175 const net::URLRequestJobFactory* old_factory_;
(...skipping 30 matching lines...) Expand all
207 scoped_refptr<Extension> extension = 206 scoped_refptr<Extension> extension =
208 CreateTestExtension(cases[i].name, cases[i].incognito_split_mode); 207 CreateTestExtension(cases[i].name, cases[i].incognito_split_mode);
209 extension_info_map_->AddExtension( 208 extension_info_map_->AddExtension(
210 extension.get(), base::Time::Now(), cases[i].incognito_enabled, false); 209 extension.get(), base::Time::Now(), cases[i].incognito_enabled, false);
211 210
212 // First test a main frame request. 211 // First test a main frame request.
213 { 212 {
214 // It doesn't matter that the resource doesn't exist. If the resource 213 // It doesn't matter that the resource doesn't exist. If the resource
215 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request 214 // is blocked, we should see ADDRESS_UNREACHABLE. Otherwise, the request
216 // should just fail because the file doesn't exist. 215 // should just fail because the file doesn't exist.
217 scoped_ptr<net::URLRequest> request( 216 std::unique_ptr<net::URLRequest> request(
218 resource_context_.GetRequestContext()->CreateRequest( 217 resource_context_.GetRequestContext()->CreateRequest(
219 extension->GetResourceURL("404.html"), 218 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY,
220 net::DEFAULT_PRIORITY,
221 &test_delegate_)); 219 &test_delegate_));
222 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 220 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
223 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 221 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
224 222
225 if (cases[i].should_allow_main_frame_load) { 223 if (cases[i].should_allow_main_frame_load) {
226 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << 224 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) <<
227 cases[i].name; 225 cases[i].name;
228 } else { 226 } else {
229 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << 227 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) <<
230 cases[i].name; 228 cases[i].name;
231 } 229 }
232 } 230 }
233 231
234 // Now do a subframe request. 232 // Now do a subframe request.
235 { 233 {
236 scoped_ptr<net::URLRequest> request( 234 std::unique_ptr<net::URLRequest> request(
237 resource_context_.GetRequestContext()->CreateRequest( 235 resource_context_.GetRequestContext()->CreateRequest(
238 extension->GetResourceURL("404.html"), 236 extension->GetResourceURL("404.html"), net::DEFAULT_PRIORITY,
239 net::DEFAULT_PRIORITY,
240 &test_delegate_)); 237 &test_delegate_));
241 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 238 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
242 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 239 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
243 240
244 if (cases[i].should_allow_sub_frame_load) { 241 if (cases[i].should_allow_sub_frame_load) {
245 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) << 242 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()) <<
246 cases[i].name; 243 cases[i].name;
247 } else { 244 } else {
248 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) << 245 EXPECT_EQ(net::ERR_ADDRESS_UNREACHABLE, request->status().error()) <<
249 cases[i].name; 246 cases[i].name;
(...skipping 19 matching lines...) Expand all
269 SetProtocolHandler(false); 266 SetProtocolHandler(false);
270 267
271 scoped_refptr<Extension> extension = CreateWebStoreExtension(); 268 scoped_refptr<Extension> extension = CreateWebStoreExtension();
272 extension_info_map_->AddExtension(extension.get(), 269 extension_info_map_->AddExtension(extension.get(),
273 base::Time::Now(), 270 base::Time::Now(),
274 false, 271 false,
275 false); 272 false);
276 273
277 // First test it with the extension enabled. 274 // First test it with the extension enabled.
278 { 275 {
279 scoped_ptr<net::URLRequest> request( 276 std::unique_ptr<net::URLRequest> request(
280 resource_context_.GetRequestContext()->CreateRequest( 277 resource_context_.GetRequestContext()->CreateRequest(
281 extension->GetResourceURL("webstore_icon_16.png"), 278 extension->GetResourceURL("webstore_icon_16.png"),
282 net::DEFAULT_PRIORITY, 279 net::DEFAULT_PRIORITY, &test_delegate_));
283 &test_delegate_));
284 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 280 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
285 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 281 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
286 CheckForContentLengthHeader(request.get()); 282 CheckForContentLengthHeader(request.get());
287 } 283 }
288 284
289 // And then test it with the extension disabled. 285 // And then test it with the extension disabled.
290 extension_info_map_->RemoveExtension(extension->id(), 286 extension_info_map_->RemoveExtension(extension->id(),
291 UnloadedExtensionInfo::REASON_DISABLE); 287 UnloadedExtensionInfo::REASON_DISABLE);
292 { 288 {
293 scoped_ptr<net::URLRequest> request( 289 std::unique_ptr<net::URLRequest> request(
294 resource_context_.GetRequestContext()->CreateRequest( 290 resource_context_.GetRequestContext()->CreateRequest(
295 extension->GetResourceURL("webstore_icon_16.png"), 291 extension->GetResourceURL("webstore_icon_16.png"),
296 net::DEFAULT_PRIORITY, 292 net::DEFAULT_PRIORITY, &test_delegate_));
297 &test_delegate_));
298 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 293 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
299 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 294 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
300 CheckForContentLengthHeader(request.get()); 295 CheckForContentLengthHeader(request.get());
301 } 296 }
302 } 297 }
303 298
304 // Tests that a URL request for resource from an extension returns a few 299 // Tests that a URL request for resource from an extension returns a few
305 // expected response headers. 300 // expected response headers.
306 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) { 301 TEST_F(ExtensionProtocolTest, ResourceRequestResponseHeaders) {
307 // Register a non-incognito extension protocol handler. 302 // Register a non-incognito extension protocol handler.
308 SetProtocolHandler(false); 303 SetProtocolHandler(false);
309 304
310 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension(); 305 scoped_refptr<Extension> extension = CreateTestResponseHeaderExtension();
311 extension_info_map_->AddExtension(extension.get(), 306 extension_info_map_->AddExtension(extension.get(),
312 base::Time::Now(), 307 base::Time::Now(),
313 false, 308 false,
314 false); 309 false);
315 310
316 { 311 {
317 scoped_ptr<net::URLRequest> request( 312 std::unique_ptr<net::URLRequest> request(
318 resource_context_.GetRequestContext()->CreateRequest( 313 resource_context_.GetRequestContext()->CreateRequest(
319 extension->GetResourceURL("test.dat"), 314 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
320 net::DEFAULT_PRIORITY,
321 &test_delegate_)); 315 &test_delegate_));
322 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 316 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
323 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 317 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
324 318
325 // Check that cache-related headers are set. 319 // Check that cache-related headers are set.
326 std::string etag; 320 std::string etag;
327 request->GetResponseHeaderByName("ETag", &etag); 321 request->GetResponseHeaderByName("ETag", &etag);
328 EXPECT_TRUE(base::StartsWith(etag, "\"", base::CompareCase::SENSITIVE)); 322 EXPECT_TRUE(base::StartsWith(etag, "\"", base::CompareCase::SENSITIVE));
329 EXPECT_TRUE(base::EndsWith(etag, "\"", base::CompareCase::SENSITIVE)); 323 EXPECT_TRUE(base::EndsWith(etag, "\"", base::CompareCase::SENSITIVE));
330 324
(...skipping 16 matching lines...) Expand all
347 SetProtocolHandler(false); 341 SetProtocolHandler(false);
348 342
349 scoped_refptr<Extension> extension = CreateTestExtension("foo", false); 343 scoped_refptr<Extension> extension = CreateTestExtension("foo", false);
350 extension_info_map_->AddExtension(extension.get(), 344 extension_info_map_->AddExtension(extension.get(),
351 base::Time::Now(), 345 base::Time::Now(),
352 false, 346 false,
353 false); 347 false);
354 348
355 // All MAIN_FRAME and SUB_FRAME requests should succeed. 349 // All MAIN_FRAME and SUB_FRAME requests should succeed.
356 { 350 {
357 scoped_ptr<net::URLRequest> request( 351 std::unique_ptr<net::URLRequest> request(
358 resource_context_.GetRequestContext()->CreateRequest( 352 resource_context_.GetRequestContext()->CreateRequest(
359 extension->GetResourceURL("test.dat"), 353 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
360 net::DEFAULT_PRIORITY,
361 &test_delegate_)); 354 &test_delegate_));
362 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME); 355 StartRequest(request.get(), content::RESOURCE_TYPE_MAIN_FRAME);
363 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 356 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
364 } 357 }
365 { 358 {
366 scoped_ptr<net::URLRequest> request( 359 std::unique_ptr<net::URLRequest> request(
367 resource_context_.GetRequestContext()->CreateRequest( 360 resource_context_.GetRequestContext()->CreateRequest(
368 extension->GetResourceURL("test.dat"), 361 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
369 net::DEFAULT_PRIORITY,
370 &test_delegate_)); 362 &test_delegate_));
371 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME); 363 StartRequest(request.get(), content::RESOURCE_TYPE_SUB_FRAME);
372 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 364 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
373 } 365 }
374 366
375 // And subresource types, such as media, should fail. 367 // And subresource types, such as media, should fail.
376 { 368 {
377 scoped_ptr<net::URLRequest> request( 369 std::unique_ptr<net::URLRequest> request(
378 resource_context_.GetRequestContext()->CreateRequest( 370 resource_context_.GetRequestContext()->CreateRequest(
379 extension->GetResourceURL("test.dat"), 371 extension->GetResourceURL("test.dat"), net::DEFAULT_PRIORITY,
380 net::DEFAULT_PRIORITY,
381 &test_delegate_)); 372 &test_delegate_));
382 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA); 373 StartRequest(request.get(), content::RESOURCE_TYPE_MEDIA);
383 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 374 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
384 } 375 }
385 } 376 }
386 377
387 378
388 TEST_F(ExtensionProtocolTest, MetadataFolder) { 379 TEST_F(ExtensionProtocolTest, MetadataFolder) {
389 SetProtocolHandler(false); 380 SetProtocolHandler(false);
390 381
(...skipping 15 matching lines...) Expand all
406 DoRequest(*extension, relative_path.AsUTF8Unsafe())); 397 DoRequest(*extension, relative_path.AsUTF8Unsafe()));
407 398
408 // Loading "/_metadata/a.txt" should also fail. 399 // Loading "/_metadata/a.txt" should also fail.
409 relative_path = base::FilePath(kMetadataFolder).AppendASCII("a.txt"); 400 relative_path = base::FilePath(kMetadataFolder).AppendASCII("a.txt");
410 EXPECT_TRUE(base::PathExists(extension_dir.Append(relative_path))); 401 EXPECT_TRUE(base::PathExists(extension_dir.Append(relative_path)));
411 EXPECT_EQ(net::URLRequestStatus::FAILED, 402 EXPECT_EQ(net::URLRequestStatus::FAILED,
412 DoRequest(*extension, relative_path.AsUTF8Unsafe())); 403 DoRequest(*extension, relative_path.AsUTF8Unsafe()));
413 } 404 }
414 405
415 } // namespace extensions 406 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698