forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttp_auth_cache_copier.cc
42 lines (33 loc) · 1.4 KB
/
http_auth_cache_copier.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/network/http_auth_cache_copier.h"
#include "base/logging.h"
#include "net/http/http_auth_cache.h"
namespace network {
HttpAuthCacheCopier::HttpAuthCacheCopier() = default;
HttpAuthCacheCopier::~HttpAuthCacheCopier() = default;
base::UnguessableToken HttpAuthCacheCopier::SaveHttpAuthCache(
const net::HttpAuthCache& cache) {
base::UnguessableToken key = base::UnguessableToken::Create();
auto cache_it = caches_.emplace(std::make_pair(
key, std::make_unique<net::HttpAuthCache>(
cache.key_server_entries_by_network_isolation_key())));
DCHECK(cache_it.second);
cache_it.first->second->CopyProxyEntriesFrom(cache);
return key;
}
void HttpAuthCacheCopier::LoadHttpAuthCache(const base::UnguessableToken& key,
net::HttpAuthCache* cache) {
auto it = caches_.find(key);
if (it == caches_.end()) {
DLOG(ERROR) << "Unknown HttpAuthCache key: " << key;
return;
}
// Source and destination caches must have the same configuration.
DCHECK_EQ(cache->key_server_entries_by_network_isolation_key(),
it->second->key_server_entries_by_network_isolation_key());
cache->CopyProxyEntriesFrom(*it->second);
caches_.erase(it);
}
} // namespace network