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

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

Issue 929953002: CachedMetadata support for ServiceWorker script. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: incorporated tkent's comment Created 5 years, 10 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
« no previous file with comments | « Source/core/fetch/CachedMetadataHandler.h ('k') | Source/core/fetch/Resource.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 Boston, MA 02110-1301, USA. 20 Boston, MA 02110-1301, USA.
21 */ 21 */
22 22
23 #ifndef Resource_h 23 #ifndef Resource_h
24 #define Resource_h 24 #define Resource_h
25 25
26 #include "core/fetch/CachedMetadataHandler.h"
26 #include "core/fetch/ResourceLoaderOptions.h" 27 #include "core/fetch/ResourceLoaderOptions.h"
27 #include "platform/Timer.h" 28 #include "platform/Timer.h"
28 #include "platform/network/ResourceError.h" 29 #include "platform/network/ResourceError.h"
29 #include "platform/network/ResourceLoadPriority.h" 30 #include "platform/network/ResourceLoadPriority.h"
30 #include "platform/network/ResourceRequest.h" 31 #include "platform/network/ResourceRequest.h"
31 #include "platform/network/ResourceResponse.h" 32 #include "platform/network/ResourceResponse.h"
32 #include "public/platform/WebDataConsumerHandle.h" 33 #include "public/platform/WebDataConsumerHandle.h"
33 #include "wtf/HashCountedSet.h" 34 #include "wtf/HashCountedSet.h"
34 #include "wtf/HashSet.h" 35 #include "wtf/HashSet.h"
35 #include "wtf/OwnPtr.h" 36 #include "wtf/OwnPtr.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 }; 77 };
77 78
78 enum Status { 79 enum Status {
79 Unknown, // let cache decide what to do with it 80 Unknown, // let cache decide what to do with it
80 Pending, // only partially loaded 81 Pending, // only partially loaded
81 Cached, // regular case 82 Cached, // regular case
82 LoadError, 83 LoadError,
83 DecodeError 84 DecodeError
84 }; 85 };
85 86
86 enum MetadataCacheType {
87 SendToPlatform, // send cache data to blink::Platform::cacheMetadata
88 CacheLocally // cache only in Resource's member variables
89 };
90
91 Resource(const ResourceRequest&, Type); 87 Resource(const ResourceRequest&, Type);
92 #if ENABLE(OILPAN) 88 #if ENABLE(OILPAN)
93 virtual ~Resource(); 89 virtual ~Resource();
94 #else 90 #else
95 protected: 91 protected:
96 // Only deleteIfPossible should delete this. 92 // Only deleteIfPossible should delete this.
97 virtual ~Resource(); 93 virtual ~Resource();
98 public: 94 public:
99 #endif 95 #endif
100 virtual void dispose(); 96 virtual void dispose();
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 virtual void willFollowRedirect(ResourceRequest&, const ResourceResponse&); 187 virtual void willFollowRedirect(ResourceRequest&, const ResourceResponse&);
192 188
193 virtual void updateRequest(const ResourceRequest&) { } 189 virtual void updateRequest(const ResourceRequest&) { }
194 virtual void responseReceived(const ResourceResponse&, PassOwnPtr<WebDataCon sumerHandle>); 190 virtual void responseReceived(const ResourceResponse&, PassOwnPtr<WebDataCon sumerHandle>);
195 void setResponse(const ResourceResponse& response) { m_response = response; } 191 void setResponse(const ResourceResponse& response) { m_response = response; }
196 const ResourceResponse& response() const { return m_response; } 192 const ResourceResponse& response() const { return m_response; }
197 193
198 // Sets the serialized metadata retrieved from the platform's cache. 194 // Sets the serialized metadata retrieved from the platform's cache.
199 virtual void setSerializedCachedMetadata(const char*, size_t); 195 virtual void setSerializedCachedMetadata(const char*, size_t);
200 196
201 // Caches the given metadata in association with this resource and suggests 197 // This may return nullptr when the resource isn't cacheable.
202 // that the platform persist it. The dataTypeID is a pseudo-randomly chosen 198 CachedMetadataHandler* cacheHandler();
203 // identifier that is used to distinguish data generated by the caller.
204 void setCachedMetadata(unsigned dataTypeID, const char*, size_t, MetadataCac heType = SendToPlatform);
205
206 // Reset existing metadata, to allow setting new data.
207 void clearCachedMetadata(MetadataCacheType = CacheLocally);
208
209 // Returns cached metadata of the given type associated with this resource.
210 CachedMetadata* cachedMetadata(unsigned dataTypeID) const;
211 199
212 bool hasOneHandle() const; 200 bool hasOneHandle() const;
213 bool canDelete() const; 201 bool canDelete() const;
214 202
215 // List of acceptable MIME types separated by ",". 203 // List of acceptable MIME types separated by ",".
216 // A MIME type may contain a wildcard, e.g. "text/*". 204 // A MIME type may contain a wildcard, e.g. "text/*".
217 AtomicString accept() const { return m_accept; } 205 AtomicString accept() const { return m_accept; }
218 void setAccept(const AtomicString& accept) { m_accept = accept; } 206 void setAccept(const AtomicString& accept) { m_accept = accept; }
219 207
220 bool wasCanceled() const { return m_error.isCancellation(); } 208 bool wasCanceled() const { return m_error.isCancellation(); }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 RefPtrWillBeMember<ResourceLoader> m_loader; 332 RefPtrWillBeMember<ResourceLoader> m_loader;
345 ResourceLoaderOptions m_options; 333 ResourceLoaderOptions m_options;
346 334
347 ResourceResponse m_response; 335 ResourceResponse m_response;
348 double m_responseTimestamp; 336 double m_responseTimestamp;
349 337
350 RefPtr<SharedBuffer> m_data; 338 RefPtr<SharedBuffer> m_data;
351 Timer<Resource> m_cancelTimer; 339 Timer<Resource> m_cancelTimer;
352 340
353 private: 341 private:
342 class CacheHandler;
354 bool addClientToSet(ResourceClient*); 343 bool addClientToSet(ResourceClient*);
355 void cancelTimerFired(Timer<Resource>*); 344 void cancelTimerFired(Timer<Resource>*);
356 345
357 void revalidationSucceeded(const ResourceResponse&); 346 void revalidationSucceeded(const ResourceResponse&);
358 void revalidationFailed(); 347 void revalidationFailed();
359 348
360 bool unlock(); 349 bool unlock();
361 350
362 bool hasRightHandleCountApartFromCache(unsigned targetCount) const; 351 bool hasRightHandleCountApartFromCache(unsigned targetCount) const;
363 352
364 void failBeforeStarting(); 353 void failBeforeStarting();
365 354
355 void setCachedMetadata(unsigned dataTypeID, const char*, size_t, CachedMetad ataHandler::CacheType);
356 void clearCachedMetadata(CachedMetadataHandler::CacheType);
357 CachedMetadata* cachedMetadata(unsigned dataTypeID) const;
358
366 String m_fragmentIdentifierForRequest; 359 String m_fragmentIdentifierForRequest;
367 360
368 RefPtr<CachedMetadata> m_cachedMetadata; 361 RefPtr<CachedMetadata> m_cachedMetadata;
362 OwnPtr<CacheHandler> m_cacheHandler;
369 363
370 ResourceError m_error; 364 ResourceError m_error;
371 365
372 double m_loadFinishTime; 366 double m_loadFinishTime;
373 367
374 unsigned long m_identifier; 368 unsigned long m_identifier;
375 369
376 size_t m_encodedSize; 370 size_t m_encodedSize;
377 size_t m_decodedSize; 371 size_t m_decodedSize;
378 unsigned m_handleCount; 372 unsigned m_handleCount;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 const char* ResourceTypeName(Resource::Type); 416 const char* ResourceTypeName(Resource::Type);
423 #endif 417 #endif
424 418
425 #define DEFINE_RESOURCE_TYPE_CASTS(typeName) \ 419 #define DEFINE_RESOURCE_TYPE_CASTS(typeName) \
426 DEFINE_TYPE_CASTS(typeName##Resource, Resource, resource, resource->type() = = Resource::typeName, resource.type() == Resource::typeName); \ 420 DEFINE_TYPE_CASTS(typeName##Resource, Resource, resource, resource->type() = = Resource::typeName, resource.type() == Resource::typeName); \
427 inline typeName##Resource* to##typeName##Resource(const ResourcePtr<Resource >& ptr) { return to##typeName##Resource(ptr.get()); } 421 inline typeName##Resource* to##typeName##Resource(const ResourcePtr<Resource >& ptr) { return to##typeName##Resource(ptr.get()); }
428 422
429 } 423 }
430 424
431 #endif 425 #endif
OLDNEW
« no previous file with comments | « Source/core/fetch/CachedMetadataHandler.h ('k') | Source/core/fetch/Resource.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698