// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_BASE_NETWORK_ISOLATION_KEY_H_ #define NET_BASE_NETWORK_ISOLATION_KEY_H_ #include <optional> #include <string> #include "base/types/pass_key.h" #include "base/unguessable_token.h" #include "net/base/net_export.h" #include "net/base/schemeful_site.h" namespace url { class Origin; } namespace network::mojom { class NonEmptyNetworkIsolationKeyDataView; } namespace net { class CookiePartitionKey; class NetworkAnonymizationKey; } namespace net { // NetworkIsolationKey (NIK) is used to partition shared network state based on // the context in which the requests were made. It is used to divide the HTTP // cache, while the NetworkAnonymizationKey is used for most other network // state. // // The NetworkIsolationKey uses the "triple-key" scheme to partition the HTTP // cache. The key has the following properties: // `top_frame_site` -> the schemeful site of the top level page. // `frame_site ` -> the schemeful site of the frame. class NET_EXPORT NetworkIsolationKey { … }; NET_EXPORT std::ostream& operator<<(std::ostream& os, const NetworkIsolationKey& nak); } // namespace net #endif // NET_BASE_NETWORK_ISOLATION_KEY_H_