1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/extras/shared_dictionary/shared_dictionary_isolation_key.h" 6 7 #include "net/base/isolation_info.h" 8 #include "net/base/network_isolation_key.h" 9 10 namespace net { 11 12 // static 13 std::optional<SharedDictionaryIsolationKey> MaybeCreate(const net::IsolationInfo & isolation_info)14SharedDictionaryIsolationKey::MaybeCreate( 15 const net::IsolationInfo& isolation_info) { 16 if (!isolation_info.frame_origin() || 17 isolation_info.frame_origin()->opaque() || 18 !isolation_info.top_frame_origin() || 19 isolation_info.top_frame_origin()->opaque() || 20 isolation_info.nonce().has_value()) { 21 return std::nullopt; 22 } 23 return SharedDictionaryIsolationKey( 24 *isolation_info.frame_origin(), 25 net::SchemefulSite(*isolation_info.top_frame_origin())); 26 } 27 28 // static 29 std::optional<SharedDictionaryIsolationKey> MaybeCreate(const NetworkIsolationKey & network_isolation_key,const std::optional<url::Origin> & frame_origin)30SharedDictionaryIsolationKey::MaybeCreate( 31 const NetworkIsolationKey& network_isolation_key, 32 const std::optional<url::Origin>& frame_origin) { 33 if (!frame_origin || frame_origin->opaque() || 34 !network_isolation_key.GetTopFrameSite() || 35 network_isolation_key.GetTopFrameSite()->opaque() || 36 network_isolation_key.GetNonce().has_value()) { 37 return std::nullopt; 38 } 39 return SharedDictionaryIsolationKey(*frame_origin, 40 *network_isolation_key.GetTopFrameSite()); 41 } 42 SharedDictionaryIsolationKey(const url::Origin & frame_origin,const net::SchemefulSite & top_frame_site)43SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 44 const url::Origin& frame_origin, 45 const net::SchemefulSite& top_frame_site) 46 : frame_origin_(frame_origin), top_frame_site_(top_frame_site) { 47 CHECK(!frame_origin.opaque()); 48 CHECK(!top_frame_site.opaque()); 49 } 50 51 SharedDictionaryIsolationKey::~SharedDictionaryIsolationKey() = default; 52 53 SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 54 const SharedDictionaryIsolationKey& other) = default; 55 56 SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 57 SharedDictionaryIsolationKey&& other) = default; 58 59 SharedDictionaryIsolationKey& SharedDictionaryIsolationKey::operator=( 60 const SharedDictionaryIsolationKey& other) = default; 61 62 SharedDictionaryIsolationKey& SharedDictionaryIsolationKey::operator=( 63 SharedDictionaryIsolationKey&& other) = default; 64 65 } // namespace net 66