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

Side by Side Diff: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp

Issue 2231523002: Make ResourceFetcher return Resources with LoadError instead of nullptrs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed webkit_unit_tests. Fixed most layout tests, rebaselineing rest. Created 4 years, 3 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 /* 1 /*
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org)
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 resource->setIdentifier(createUniqueIdentifier()); 368 resource->setIdentifier(createUniqueIdentifier());
369 resource->setCacheIdentifier(cacheIdentifier); 369 resource->setCacheIdentifier(cacheIdentifier);
370 resource->finish(); 370 resource->finish();
371 371
372 if (!substituteData.isValid()) 372 if (!substituteData.isValid())
373 memoryCache()->add(resource); 373 memoryCache()->add(resource);
374 374
375 return resource; 375 return resource;
376 } 376 }
377 377
378 Resource* ResourceFetcher::resourceForBlockedRequest(const FetchRequest& request , const ResourceFactory& factory)
379 {
380 Resource* resource = factory.create(request.resourceRequest(), request.optio ns(), request.charset());
381 resource->error(ResourceError::cancelledDueToAccessCheckError(request.url()) );
382 return resource;
383 }
384
378 void ResourceFetcher::moveCachedNonBlockingResourceToBlocking(Resource* resource , const FetchRequest& request) 385 void ResourceFetcher::moveCachedNonBlockingResourceToBlocking(Resource* resource , const FetchRequest& request)
379 { 386 {
380 // TODO(yoav): Test that non-blocking resources (video/audio/track) continue to not-block even after being preloaded and discovered. 387 // TODO(yoav): Test that non-blocking resources (video/audio/track) continue to not-block even after being preloaded and discovered.
381 if (resource && resource->loader() && resource->isLoadEventBlockingResourceT ype() && resource->isLinkPreload() && !request.forPreload()) { 388 if (resource && resource->loader() && resource->isLoadEventBlockingResourceT ype() && resource->isLinkPreload() && !request.forPreload()) {
382 m_nonBlockingLoaders.remove(resource->loader()); 389 m_nonBlockingLoaders.remove(resource->loader());
383 m_loaders.add(resource->loader()); 390 m_loaders.add(resource->loader());
384 } 391 }
385 } 392 }
386 393
387 void ResourceFetcher::updateMemoryCacheStats(Resource* resource, RevalidationPol icy policy, const FetchRequest& request, const ResourceFactory& factory, bool i sStaticData) const 394 void ResourceFetcher::updateMemoryCacheStats(Resource* resource, RevalidationPol icy policy, const FetchRequest& request, const ResourceFactory& factory, bool i sStaticData) const
(...skipping 24 matching lines...) Expand all
412 if (request.resourceRequest().httpHeaderField("Upgrade-Insecure-Requests") ! = AtomicString("1")) 419 if (request.resourceRequest().httpHeaderField("Upgrade-Insecure-Requests") ! = AtomicString("1"))
413 context().upgradeInsecureRequest(request.mutableResourceRequest()); 420 context().upgradeInsecureRequest(request.mutableResourceRequest());
414 context().addClientHintsIfNecessary(request); 421 context().addClientHintsIfNecessary(request);
415 context().addCSPHeaderIfNecessary(factory.type(), request); 422 context().addCSPHeaderIfNecessary(factory.type(), request);
416 423
417 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace Event(request.url())); 424 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace Event(request.url()));
418 425
419 if (!request.url().isValid()) 426 if (!request.url().isValid())
420 return nullptr; 427 return nullptr;
421 428
422 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques t.forPreload(), request.getOriginRestriction())) 429 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques t.forPreload(), request.getOriginRestriction())) {
423 return nullptr; 430 DCHECK(!substituteData.forceSynchronousLoad());
431 return resourceForBlockedRequest(request, factory);
432 }
424 433
425 unsigned long identifier = createUniqueIdentifier(); 434 unsigned long identifier = createUniqueIdentifier();
426 request.mutableResourceRequest().setPriority(computeLoadPriority(factory.typ e(), request, ResourcePriority::NotVisible)); 435 request.mutableResourceRequest().setPriority(computeLoadPriority(factory.typ e(), request, ResourcePriority::NotVisible));
427 initializeResourceRequest(request.mutableResourceRequest(), factory.type(), request.defer()); 436 initializeResourceRequest(request.mutableResourceRequest(), factory.type(), request.defer());
428 context().willStartLoadingResource(identifier, request.mutableResourceReques t(), factory.type()); 437 context().willStartLoadingResource(identifier, request.mutableResourceReques t(), factory.type());
429 if (!request.url().isValid()) 438 if (!request.url().isValid())
430 return nullptr; 439 return nullptr;
431 440
432 if (!request.forPreload()) { 441 if (!request.forPreload()) {
433 V8DOMActivityLogger* activityLogger = nullptr; 442 V8DOMActivityLogger* activityLogger = nullptr;
(...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 visitor->trace(m_context); 1357 visitor->trace(m_context);
1349 visitor->trace(m_archive); 1358 visitor->trace(m_archive);
1350 visitor->trace(m_loaders); 1359 visitor->trace(m_loaders);
1351 visitor->trace(m_nonBlockingLoaders); 1360 visitor->trace(m_nonBlockingLoaders);
1352 visitor->trace(m_documentResources); 1361 visitor->trace(m_documentResources);
1353 visitor->trace(m_preloads); 1362 visitor->trace(m_preloads);
1354 visitor->trace(m_resourceTimingInfoMap); 1363 visitor->trace(m_resourceTimingInfoMap);
1355 } 1364 }
1356 1365
1357 } // namespace blink 1366 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698