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

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

Issue 1802123002: Unify Resource loading status tracking (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 9 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) 2006 Samuel Weinig (sam.weinig@gmail.com) 4 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
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 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 XSLStyleSheet, 70 XSLStyleSheet,
71 LinkPrefetch, 71 LinkPrefetch,
72 LinkPreload, 72 LinkPreload,
73 TextTrack, 73 TextTrack,
74 ImportResource, 74 ImportResource,
75 Media, // Audio or video file requested by a HTML5 media element 75 Media, // Audio or video file requested by a HTML5 media element
76 Manifest 76 Manifest
77 }; 77 };
78 78
79 enum Status { 79 enum Status {
80 Unknown, // let cache decide what to do with it 80 NotStarted,
81 Pending, // only partially loaded 81 LoadStartScheduled, // scheduled but not yet started, only used by fonts .
82 Cached, // regular case 82 Pending, // load in progress
83 Cached, // load completed successfully
83 LoadError, 84 LoadError,
84 DecodeError 85 DecodeError
85 }; 86 };
86 87
87 // Exposed for testing. 88 // Exposed for testing.
88 static PassRefPtrWillBeRawPtr<Resource> create(const ResourceRequest& reques t, Type type, const ResourceLoaderOptions& options = ResourceLoaderOptions()) 89 static PassRefPtrWillBeRawPtr<Resource> create(const ResourceRequest& reques t, Type type, const ResourceLoaderOptions& options = ResourceLoaderOptions())
89 { 90 {
90 return adoptRefWillBeNoop(new Resource(request, type, options)); 91 return adoptRefWillBeNoop(new Resource(request, type, options));
91 } 92 }
92 virtual ~Resource(); 93 virtual ~Resource();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 unsigned count() const { return m_clients.size(); } 148 unsigned count() const { return m_clients.size(); }
148 149
149 Status getStatus() const { return static_cast<Status>(m_status); } 150 Status getStatus() const { return static_cast<Status>(m_status); }
150 void setStatus(Status status) { m_status = status; } 151 void setStatus(Status status) { m_status = status; }
151 152
152 size_t size() const { return encodedSize() + decodedSize() + overheadSize(); } 153 size_t size() const { return encodedSize() + decodedSize() + overheadSize(); }
153 size_t encodedSize() const { return m_encodedSize; } 154 size_t encodedSize() const { return m_encodedSize; }
154 size_t decodedSize() const { return m_decodedSize; } 155 size_t decodedSize() const { return m_decodedSize; }
155 size_t overheadSize() const; 156 size_t overheadSize() const;
156 157
157 bool isLoaded() const { return !m_loading; } // FIXME. Method name is inaccu rate. Loading might not have started yet. 158 bool isLoaded() const { return m_status > Pending; }
158 159
159 bool isLoading() const { return m_loading; } 160 bool isLoading() const { return m_status == Pending; }
160 void setLoading(bool b) { m_loading = b; } 161 bool stillNeedsLoad() const { return m_status < Pending; }
161 virtual bool stillNeedsLoad() const { return false; }
162 162
163 ResourceLoader* loader() const { return m_loader.get(); } 163 ResourceLoader* loader() const { return m_loader.get(); }
164 164
165 virtual bool isImage() const { return false; } 165 virtual bool isImage() const { return false; }
166 bool shouldBlockLoadEvent() const; 166 bool shouldBlockLoadEvent() const;
167 bool isLoadEventBlockingResourceType() const; 167 bool isLoadEventBlockingResourceType() const;
168 168
169 // Computes the status of an object after loading. 169 // Computes the status of an object after loading.
170 // Updates the expire date on the cache entry file 170 // Updates the expire date on the cache entry file
171 void setLoadFinishTime(double finishTime) { m_loadFinishTime = finishTime; } 171 void setLoadFinishTime(double finishTime) { m_loadFinishTime = finishTime; }
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 348
349 unsigned long m_identifier; 349 unsigned long m_identifier;
350 350
351 size_t m_encodedSize; 351 size_t m_encodedSize;
352 size_t m_decodedSize; 352 size_t m_decodedSize;
353 unsigned m_preloadCount; 353 unsigned m_preloadCount;
354 354
355 String m_cacheIdentifier; 355 String m_cacheIdentifier;
356 356
357 unsigned m_preloadResult : 2; // PreloadResult 357 unsigned m_preloadResult : 2; // PreloadResult
358 unsigned m_requestedFromNetworkingLayer : 1;
359
360 unsigned m_loading : 1;
361
362 unsigned m_type : 4; // Type 358 unsigned m_type : 4; // Type
363 unsigned m_status : 3; // Status 359 unsigned m_status : 3; // Status
364 360
365 unsigned m_needsSynchronousCacheHit : 1; 361 unsigned m_needsSynchronousCacheHit : 1;
366 unsigned m_linkPreload : 1; 362 unsigned m_linkPreload : 1;
367 363
368 // Ordered list of all redirects followed while fetching this resource. 364 // Ordered list of all redirects followed while fetching this resource.
369 Vector<RedirectPair> m_redirectChain; 365 Vector<RedirectPair> m_redirectChain;
370 }; 366 };
371 367
372 class ResourceFactory { 368 class ResourceFactory {
373 STACK_ALLOCATED(); 369 STACK_ALLOCATED();
374 public: 370 public:
375 virtual PassRefPtrWillBeRawPtr<Resource> create(const ResourceRequest&, cons t ResourceLoaderOptions&, const String&) const = 0; 371 virtual PassRefPtrWillBeRawPtr<Resource> create(const ResourceRequest&, cons t ResourceLoaderOptions&, const String&) const = 0;
376 Resource::Type type() const { return m_type; } 372 Resource::Type type() const { return m_type; }
377 373
378 protected: 374 protected:
379 ResourceFactory(Resource::Type type) : m_type(type) { } 375 ResourceFactory(Resource::Type type) : m_type(type) { }
380 376
381 Resource::Type m_type; 377 Resource::Type m_type;
382 }; 378 };
383 379
384 #define DEFINE_RESOURCE_TYPE_CASTS(typeName) \ 380 #define DEFINE_RESOURCE_TYPE_CASTS(typeName) \
385 DEFINE_TYPE_CASTS(typeName##Resource, Resource, resource, resource->getType( ) == Resource::typeName, resource.getType() == Resource::typeName); \ 381 DEFINE_TYPE_CASTS(typeName##Resource, Resource, resource, resource->getType( ) == Resource::typeName, resource.getType() == Resource::typeName); \
386 inline typeName##Resource* to##typeName##Resource(const RefPtrWillBeRawPtr<R esource>& ptr) { return to##typeName##Resource(ptr.get()); } 382 inline typeName##Resource* to##typeName##Resource(const RefPtrWillBeRawPtr<R esource>& ptr) { return to##typeName##Resource(ptr.get()); }
387 383
388 } // namespace blink 384 } // namespace blink
389 385
390 #endif 386 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698