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

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

Issue 2327643003: Replace ASSERT*() with DCHECK*() in core/fetch/ and core/loader/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ASSERT_UNUSED 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) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 { 130 {
131 visitor->trace(m_resource); 131 visitor->trace(m_resource);
132 CachedMetadataHandler::trace(visitor); 132 CachedMetadataHandler::trace(visitor);
133 } 133 }
134 134
135 void Resource::CachedMetadataHandlerImpl::setCachedMetadata(uint32_t dataTypeID, const char* data, size_t size, CachedMetadataHandler::CacheType cacheType) 135 void Resource::CachedMetadataHandlerImpl::setCachedMetadata(uint32_t dataTypeID, const char* data, size_t size, CachedMetadataHandler::CacheType cacheType)
136 { 136 {
137 // Currently, only one type of cached metadata per resource is supported. 137 // Currently, only one type of cached metadata per resource is supported.
138 // If the need arises for multiple types of metadata per resource this could 138 // If the need arises for multiple types of metadata per resource this could
139 // be enhanced to store types of metadata in a map. 139 // be enhanced to store types of metadata in a map.
140 ASSERT(!m_cachedMetadata); 140 DCHECK(!m_cachedMetadata);
141 m_cachedMetadata = CachedMetadata::create(dataTypeID, data, size); 141 m_cachedMetadata = CachedMetadata::create(dataTypeID, data, size);
142 if (cacheType == CachedMetadataHandler::SendToPlatform) 142 if (cacheType == CachedMetadataHandler::SendToPlatform)
143 sendToPlatform(); 143 sendToPlatform();
144 } 144 }
145 145
146 void Resource::CachedMetadataHandlerImpl::clearCachedMetadata(CachedMetadataHand ler::CacheType cacheType) 146 void Resource::CachedMetadataHandlerImpl::clearCachedMetadata(CachedMetadataHand ler::CacheType cacheType)
147 { 147 {
148 m_cachedMetadata.clear(); 148 m_cachedMetadata.clear();
149 if (cacheType == CachedMetadataHandler::SendToPlatform) 149 if (cacheType == CachedMetadataHandler::SendToPlatform)
150 sendToPlatform(); 150 sendToPlatform();
151 } 151 }
152 152
153 PassRefPtr<CachedMetadata> Resource::CachedMetadataHandlerImpl::cachedMetadata(u int32_t dataTypeID) const 153 PassRefPtr<CachedMetadata> Resource::CachedMetadataHandlerImpl::cachedMetadata(u int32_t dataTypeID) const
154 { 154 {
155 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) 155 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID)
156 return nullptr; 156 return nullptr;
157 return m_cachedMetadata.get(); 157 return m_cachedMetadata.get();
158 } 158 }
159 159
160 String Resource::CachedMetadataHandlerImpl::encoding() const 160 String Resource::CachedMetadataHandlerImpl::encoding() const
161 { 161 {
162 return m_resource->encoding(); 162 return m_resource->encoding();
163 } 163 }
164 164
165 void Resource::CachedMetadataHandlerImpl::setSerializedCachedMetadata(const char * data, size_t size) 165 void Resource::CachedMetadataHandlerImpl::setSerializedCachedMetadata(const char * data, size_t size)
166 { 166 {
167 // We only expect to receive cached metadata from the platform once. 167 // We only expect to receive cached metadata from the platform once.
168 // If this triggers, it indicates an efficiency problem which is most 168 // If this triggers, it indicates an efficiency problem which is most
169 // likely unexpected in code designed to improve performance. 169 // likely unexpected in code designed to improve performance.
170 ASSERT(!m_cachedMetadata); 170 DCHECK(!m_cachedMetadata);
171 m_cachedMetadata = CachedMetadata::createFromSerializedData(data, size); 171 m_cachedMetadata = CachedMetadata::createFromSerializedData(data, size);
172 } 172 }
173 173
174 void Resource::CachedMetadataHandlerImpl::sendToPlatform() 174 void Resource::CachedMetadataHandlerImpl::sendToPlatform()
175 { 175 {
176 if (m_cachedMetadata) { 176 if (m_cachedMetadata) {
177 const Vector<char>& serializedData = m_cachedMetadata->serializedData(); 177 const Vector<char>& serializedData = m_cachedMetadata->serializedData();
178 Platform::current()->cacheMetadata(response().url(), response().response Time(), serializedData.data(), serializedData.size()); 178 Platform::current()->cacheMetadata(response().url(), response().response Time(), serializedData.data(), serializedData.size());
179 } else { 179 } else {
180 Platform::current()->cacheMetadata(response().url(), response().response Time(), nullptr, 0); 180 Platform::current()->cacheMetadata(response().url(), response().response Time(), nullptr, 0);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 , m_status(NotStarted) 299 , m_status(NotStarted)
300 , m_needsSynchronousCacheHit(false) 300 , m_needsSynchronousCacheHit(false)
301 , m_linkPreload(false) 301 , m_linkPreload(false)
302 , m_isRevalidating(false) 302 , m_isRevalidating(false)
303 , m_isAlive(false) 303 , m_isAlive(false)
304 , m_options(options) 304 , m_options(options)
305 , m_responseTimestamp(currentTime()) 305 , m_responseTimestamp(currentTime())
306 , m_cancelTimer(this, &Resource::cancelTimerFired) 306 , m_cancelTimer(this, &Resource::cancelTimerFired)
307 , m_resourceRequest(request) 307 , m_resourceRequest(request)
308 { 308 {
309 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum. 309 DCHECK(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum.
yhirano 2016/09/12 04:33:12 DCHECK_EQ
hiroshige 2016/09/13 08:43:19 Done.
310 InstanceCounters::incrementCounter(InstanceCounters::ResourceCounter); 310 InstanceCounters::incrementCounter(InstanceCounters::ResourceCounter);
311 311
312 // Currently we support the metadata caching only for HTTP family. 312 // Currently we support the metadata caching only for HTTP family.
313 if (m_resourceRequest.url().protocolIsInHTTPFamily()) 313 if (m_resourceRequest.url().protocolIsInHTTPFamily())
314 m_cacheHandler = CachedMetadataHandlerImpl::create(this); 314 m_cacheHandler = CachedMetadataHandlerImpl::create(this);
315 MemoryCoordinator::instance().registerClient(this); 315 MemoryCoordinator::instance().registerClient(this);
316 } 316 }
317 317
318 Resource::~Resource() 318 Resource::~Resource()
319 { 319 {
320 InstanceCounters::decrementCounter(InstanceCounters::ResourceCounter); 320 InstanceCounters::decrementCounter(InstanceCounters::ResourceCounter);
321 } 321 }
322 322
323 DEFINE_TRACE(Resource) 323 DEFINE_TRACE(Resource)
324 { 324 {
325 visitor->trace(m_loader); 325 visitor->trace(m_loader);
326 visitor->trace(m_cacheHandler); 326 visitor->trace(m_cacheHandler);
327 visitor->trace(m_clients); 327 visitor->trace(m_clients);
328 visitor->trace(m_clientsAwaitingCallback); 328 visitor->trace(m_clientsAwaitingCallback);
329 visitor->trace(m_finishedClients); 329 visitor->trace(m_finishedClients);
330 MemoryCoordinatorClient::trace(visitor); 330 MemoryCoordinatorClient::trace(visitor);
331 } 331 }
332 332
333 void Resource::setLoader(ResourceLoader* loader) 333 void Resource::setLoader(ResourceLoader* loader)
334 { 334 {
335 RELEASE_ASSERT(!m_loader); 335 CHECK(!m_loader);
336 ASSERT(stillNeedsLoad()); 336 DCHECK(stillNeedsLoad());
337 m_loader = loader; 337 m_loader = loader;
338 m_status = Pending; 338 m_status = Pending;
339 } 339 }
340 340
341 void Resource::checkNotify() 341 void Resource::checkNotify()
342 { 342 {
343 notifyClientsInternal(MarkFinishedOption::ShouldMarkFinished); 343 notifyClientsInternal(MarkFinishedOption::ShouldMarkFinished);
344 } 344 }
345 345
346 void Resource::notifyClientsInternal(MarkFinishedOption markFinishedOption) 346 void Resource::notifyClientsInternal(MarkFinishedOption markFinishedOption)
(...skipping 14 matching lines...) Expand all
361 if (m_clients.contains(client)) { 361 if (m_clients.contains(client)) {
362 m_finishedClients.add(client); 362 m_finishedClients.add(client);
363 m_clients.remove(client); 363 m_clients.remove(client);
364 } 364 }
365 } 365 }
366 366
367 void Resource::appendData(const char* data, size_t length) 367 void Resource::appendData(const char* data, size_t length)
368 { 368 {
369 TRACE_EVENT0("blink", "Resource::appendData"); 369 TRACE_EVENT0("blink", "Resource::appendData");
370 DCHECK(!m_isRevalidating); 370 DCHECK(!m_isRevalidating);
371 ASSERT(!errorOccurred()); 371 DCHECK(!errorOccurred());
372 if (m_options.dataBufferingPolicy == DoNotBufferData) 372 if (m_options.dataBufferingPolicy == DoNotBufferData)
373 return; 373 return;
374 if (m_data) 374 if (m_data)
375 m_data->append(data, length); 375 m_data->append(data, length);
376 else 376 else
377 m_data = SharedBuffer::create(data, length); 377 m_data = SharedBuffer::create(data, length);
378 setEncodedSize(m_data->size()); 378 setEncodedSize(m_data->size());
379 } 379 }
380 380
381 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer) 381 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer)
382 { 382 {
383 DCHECK(!m_isRevalidating); 383 DCHECK(!m_isRevalidating);
384 ASSERT(!errorOccurred()); 384 DCHECK(!errorOccurred());
385 ASSERT(m_options.dataBufferingPolicy == BufferData); 385 DCHECK(m_options.dataBufferingPolicy == BufferData);
yhirano 2016/09/12 04:33:11 DCHECK_EQ
hiroshige 2016/09/13 08:43:19 Done.
386 m_data = resourceBuffer; 386 m_data = resourceBuffer;
387 setEncodedSize(m_data->size()); 387 setEncodedSize(m_data->size());
388 } 388 }
389 389
390 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) 390 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy)
391 { 391 {
392 m_options.dataBufferingPolicy = dataBufferingPolicy; 392 m_options.dataBufferingPolicy = dataBufferingPolicy;
393 m_data.clear(); 393 m_data.clear();
394 setEncodedSize(0); 394 setEncodedSize(0);
395 } 395 }
396 396
397 void Resource::error(const ResourceError& error) 397 void Resource::error(const ResourceError& error)
398 { 398 {
399 ASSERT(!error.isNull()); 399 DCHECK(!error.isNull());
400 m_error = error; 400 m_error = error;
401 m_isRevalidating = false; 401 m_isRevalidating = false;
402 402
403 if (m_error.isCancellation() || !isPreloaded()) 403 if (m_error.isCancellation() || !isPreloaded())
404 memoryCache()->remove(this); 404 memoryCache()->remove(this);
405 405
406 if (!errorOccurred()) 406 if (!errorOccurred())
407 setStatus(LoadError); 407 setStatus(LoadError);
408 ASSERT(errorOccurred()); 408 DCHECK(errorOccurred());
409 m_data.clear(); 409 m_data.clear();
410 m_loader = nullptr; 410 m_loader = nullptr;
411 checkNotify(); 411 checkNotify();
412 } 412 }
413 413
414 void Resource::finish(double loadFinishTime) 414 void Resource::finish(double loadFinishTime)
415 { 415 {
416 DCHECK(!m_isRevalidating); 416 DCHECK(!m_isRevalidating);
417 m_loadFinishTime = loadFinishTime; 417 m_loadFinishTime = loadFinishTime;
418 if (!errorOccurred()) 418 if (!errorOccurred())
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 } 573 }
574 setResponse(response); 574 setResponse(response);
575 String encoding = response.textEncodingName(); 575 String encoding = response.textEncodingName();
576 if (!encoding.isNull()) 576 if (!encoding.isNull())
577 setEncoding(encoding); 577 setEncoding(encoding);
578 } 578 }
579 579
580 void Resource::setSerializedCachedMetadata(const char* data, size_t size) 580 void Resource::setSerializedCachedMetadata(const char* data, size_t size)
581 { 581 {
582 DCHECK(!m_isRevalidating); 582 DCHECK(!m_isRevalidating);
583 ASSERT(!m_response.isNull()); 583 DCHECK(!m_response.isNull());
584 if (m_cacheHandler) 584 if (m_cacheHandler)
585 m_cacheHandler->setSerializedCachedMetadata(data, size); 585 m_cacheHandler->setSerializedCachedMetadata(data, size);
586 } 586 }
587 587
588 CachedMetadataHandler* Resource::cacheHandler() 588 CachedMetadataHandler* Resource::cacheHandler()
589 { 589 {
590 return m_cacheHandler.get(); 590 return m_cacheHandler.get();
591 } 591 }
592 592
593 593
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 if (!m_loader) 744 if (!m_loader)
745 return; 745 return;
746 if (m_type == Raw) 746 if (m_type == Raw)
747 cancelTimerFired(&m_cancelTimer); 747 cancelTimerFired(&m_cancelTimer);
748 else if (!m_cancelTimer.isActive()) 748 else if (!m_cancelTimer.isActive())
749 m_cancelTimer.startOneShot(0, BLINK_FROM_HERE); 749 m_cancelTimer.startOneShot(0, BLINK_FROM_HERE);
750 } 750 }
751 751
752 void Resource::cancelTimerFired(TimerBase* timer) 752 void Resource::cancelTimerFired(TimerBase* timer)
753 { 753 {
754 ASSERT_UNUSED(timer, timer == &m_cancelTimer); 754 ALLOW_UNUSED_LOCAL(timer);
yhirano 2016/09/12 04:33:12 Is this needed? DCHECK requires its expectation as
hiroshige 2016/09/13 08:43:19 I put ALLOW_UNUSED_LOCAL() based on a comment in A
tkent 2016/09/13 08:50:52 AFAIK we don't need to add ALLOW_UNUSED_LOCAL() on
hiroshige 2016/09/13 09:30:51 Thanks! I'll create a separate CL to fix Assertion
755 DCHECK(timer == &m_cancelTimer);
yhirano 2016/09/12 04:33:12 DCHECK_EQ
hiroshige 2016/09/13 08:43:19 Done.
755 if (!hasClientsOrObservers() && m_loader) 756 if (!hasClientsOrObservers() && m_loader)
756 m_loader->cancel(); 757 m_loader->cancel();
757 } 758 }
758 759
759 void Resource::setDecodedSize(size_t decodedSize) 760 void Resource::setDecodedSize(size_t decodedSize)
760 { 761 {
761 if (decodedSize == m_decodedSize) 762 if (decodedSize == m_decodedSize)
762 return; 763 return;
763 size_t oldSize = size(); 764 size_t oldSize = size();
764 m_decodedSize = decodedSize; 765 m_decodedSize = decodedSize;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 didAddClient(client); 804 didAddClient(client);
804 } 805 }
805 806
806 // It is still possible for the above loop to finish a new client synchronou sly. 807 // It is still possible for the above loop to finish a new client synchronou sly.
807 // If there's no client waiting we should deschedule. 808 // If there's no client waiting we should deschedule.
808 bool scheduled = ResourceCallback::callbackHandler().isScheduled(this); 809 bool scheduled = ResourceCallback::callbackHandler().isScheduled(this);
809 if (scheduled && m_clientsAwaitingCallback.isEmpty()) 810 if (scheduled && m_clientsAwaitingCallback.isEmpty())
810 ResourceCallback::callbackHandler().cancel(this); 811 ResourceCallback::callbackHandler().cancel(this);
811 812
812 // Prevent the case when there are clients waiting but no callback scheduled . 813 // Prevent the case when there are clients waiting but no callback scheduled .
813 ASSERT(m_clientsAwaitingCallback.isEmpty() || scheduled); 814 DCHECK(m_clientsAwaitingCallback.isEmpty() || scheduled);
814 } 815 }
815 816
816 void Resource::prune() 817 void Resource::prune()
817 { 818 {
818 destroyDecodedDataIfPossible(); 819 destroyDecodedDataIfPossible();
819 } 820 }
820 821
821 void Resource::prepareToSuspend() 822 void Resource::prepareToSuspend()
822 { 823 {
823 prune(); 824 prune();
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
1032 return "Link prefetch resource"; 1033 return "Link prefetch resource";
1033 case Resource::TextTrack: 1034 case Resource::TextTrack:
1034 return "Text track"; 1035 return "Text track";
1035 case Resource::ImportResource: 1036 case Resource::ImportResource:
1036 return "Imported resource"; 1037 return "Imported resource";
1037 case Resource::Media: 1038 case Resource::Media:
1038 return "Media"; 1039 return "Media";
1039 case Resource::Manifest: 1040 case Resource::Manifest:
1040 return "Manifest"; 1041 return "Manifest";
1041 } 1042 }
1042 ASSERT_NOT_REACHED(); 1043 NOTREACHED();
1043 return initatorTypeNameToString(initiatorInfo.name); 1044 return initatorTypeNameToString(initiatorInfo.name);
1044 } 1045 }
1045 1046
1046 bool Resource::shouldBlockLoadEvent() const 1047 bool Resource::shouldBlockLoadEvent() const
1047 { 1048 {
1048 return !m_linkPreload && isLoadEventBlockingResourceType(); 1049 return !m_linkPreload && isLoadEventBlockingResourceType();
1049 } 1050 }
1050 1051
1051 bool Resource::isLoadEventBlockingResourceType() const 1052 bool Resource::isLoadEventBlockingResourceType() const
1052 { 1053 {
1053 switch (m_type) { 1054 switch (m_type) {
1054 case Resource::MainResource: 1055 case Resource::MainResource:
1055 case Resource::Image: 1056 case Resource::Image:
1056 case Resource::CSSStyleSheet: 1057 case Resource::CSSStyleSheet:
1057 case Resource::Script: 1058 case Resource::Script:
1058 case Resource::Font: 1059 case Resource::Font:
1059 case Resource::SVGDocument: 1060 case Resource::SVGDocument:
1060 case Resource::XSLStyleSheet: 1061 case Resource::XSLStyleSheet:
1061 case Resource::ImportResource: 1062 case Resource::ImportResource:
1062 return true; 1063 return true;
1063 case Resource::Raw: 1064 case Resource::Raw:
1064 case Resource::LinkPrefetch: 1065 case Resource::LinkPrefetch:
1065 case Resource::TextTrack: 1066 case Resource::TextTrack:
1066 case Resource::Media: 1067 case Resource::Media:
1067 case Resource::Manifest: 1068 case Resource::Manifest:
1068 return false; 1069 return false;
1069 } 1070 }
1070 ASSERT_NOT_REACHED(); 1071 NOTREACHED();
1071 return false; 1072 return false;
1072 } 1073 }
1073 1074
1074 } // namespace blink 1075 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698