// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SCRIPT_CACHED_METADATA_HANDLER_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SCRIPT_CACHED_METADATA_HANDLER_H_ #include <memory> #include "third_party/blink/renderer/platform/bindings/parkable_string.h" #include "third_party/blink/renderer/platform/loader/fetch/url_loader/cached_metadata_handler.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/forward.h" #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h" namespace mojo_base { class BigBuffer; } namespace blink { class CachedMetadata; class CachedMetadataSender; // ScriptCachedMetadataHandler should be created when a response is received, // and can be used independently from its Resource. // - It doesn't have any references to the Resource. Necessary data are captured // from the Resource when the handler is created. // - It is not affected by Resource's revalidation on MemoryCache. The validity // of the handler is solely checked by |response_url_| and |response_time_| // (not by Resource) by the browser process, and the cached metadata written to // the handler is rejected if e.g. the disk cache entry has been updated and the // handler refers to an older response. class PLATFORM_EXPORT ScriptCachedMetadataHandler : public CachedMetadataHandler { … }; // The serialized header format for cached metadata which includes a hash of the // script text. This header is followed by a second header in the format defined // by CachedMetadataHeader, which is in turn followed by the data. struct CachedMetadataHeaderWithHash { … }; class PLATFORM_EXPORT ScriptCachedMetadataHandlerWithHashing final : public ScriptCachedMetadataHandler { … }; // Describes a few interesting states of the ScriptCachedMetadataHandler when // GetCachedMetadata() is called. These values are written to logs. New enum // values can be added, but existing enums must never be renumbered or deleted // and reused. enum class StateOnGet : int { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_SCRIPT_CACHED_METADATA_HANDLER_H_