• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)14 SharedDictionaryIsolationKey::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)29 SharedDictionaryIsolationKey::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)42 SharedDictionaryIsolationKey::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