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/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 IsolationInfo & isolation_info)14SharedDictionaryIsolationKey::MaybeCreate(const IsolationInfo& isolation_info) { 15 if (!isolation_info.frame_origin() || 16 isolation_info.frame_origin()->opaque() || 17 !isolation_info.top_frame_origin() || 18 isolation_info.top_frame_origin()->opaque() || 19 isolation_info.nonce().has_value()) { 20 return std::nullopt; 21 } 22 return SharedDictionaryIsolationKey( 23 *isolation_info.frame_origin(), 24 SchemefulSite(*isolation_info.top_frame_origin())); 25 } 26 27 // static 28 std::optional<SharedDictionaryIsolationKey> MaybeCreate(const NetworkIsolationKey & network_isolation_key,const std::optional<url::Origin> & frame_origin)29SharedDictionaryIsolationKey::MaybeCreate( 30 const NetworkIsolationKey& network_isolation_key, 31 const std::optional<url::Origin>& frame_origin) { 32 if (!frame_origin || frame_origin->opaque() || 33 !network_isolation_key.GetTopFrameSite() || 34 network_isolation_key.GetTopFrameSite()->opaque() || 35 network_isolation_key.GetNonce().has_value()) { 36 return std::nullopt; 37 } 38 return SharedDictionaryIsolationKey(*frame_origin, 39 *network_isolation_key.GetTopFrameSite()); 40 } 41 SharedDictionaryIsolationKey(const url::Origin & frame_origin,const SchemefulSite & top_frame_site)42SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 43 const url::Origin& frame_origin, 44 const SchemefulSite& top_frame_site) 45 : frame_origin_(frame_origin), top_frame_site_(top_frame_site) { 46 CHECK(!frame_origin.opaque()); 47 CHECK(!top_frame_site.opaque()); 48 } 49 50 SharedDictionaryIsolationKey::~SharedDictionaryIsolationKey() = default; 51 52 SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 53 const SharedDictionaryIsolationKey& other) = default; 54 55 SharedDictionaryIsolationKey::SharedDictionaryIsolationKey( 56 SharedDictionaryIsolationKey&& other) = default; 57 58 SharedDictionaryIsolationKey& SharedDictionaryIsolationKey::operator=( 59 const SharedDictionaryIsolationKey& other) = default; 60 61 SharedDictionaryIsolationKey& SharedDictionaryIsolationKey::operator=( 62 SharedDictionaryIsolationKey&& other) = default; 63 64 } // namespace net 65