xref: /aosp_15_r20/external/cronet/net/dns/test_dns_config_service.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2019 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/dns/test_dns_config_service.h"
6 
7 #include <memory>
8 #include <optional>
9 #include <utility>
10 
11 #include "base/check.h"
12 #include "base/files/file_path.h"
13 #include "net/dns/dns_hosts.h"
14 
15 namespace net {
16 
TestDnsConfigService()17 TestDnsConfigService::TestDnsConfigService()
18     : DnsConfigService(base::FilePath::StringPieceType() /* hosts_file_path */,
19                        std::nullopt /* config_change_delay */) {}
20 
21 TestDnsConfigService::~TestDnsConfigService() = default;
22 
StartWatching()23 bool TestDnsConfigService::StartWatching() {
24   return true;
25 }
26 
RefreshConfig()27 void TestDnsConfigService::RefreshConfig() {
28   DCHECK(config_for_refresh_);
29   InvalidateConfig();
30   InvalidateHosts();
31   OnConfigRead(config_for_refresh_.value());
32   OnHostsRead(config_for_refresh_.value().hosts);
33   config_for_refresh_ = std::nullopt;
34 }
35 
HostsReadingTestDnsConfigService(HostsParserFactory hosts_parser_factory)36 HostsReadingTestDnsConfigService::HostsReadingTestDnsConfigService(
37     HostsParserFactory hosts_parser_factory)
38     : hosts_reader_(
39           std::make_unique<HostsReader>(*this,
40                                         std::move(hosts_parser_factory))) {}
41 
42 HostsReadingTestDnsConfigService::~HostsReadingTestDnsConfigService() = default;
43 
ReadHostsNow()44 void HostsReadingTestDnsConfigService::ReadHostsNow() {
45   hosts_reader_->WorkNow();
46 }
47 
StartWatching()48 bool HostsReadingTestDnsConfigService::StartWatching() {
49   watcher_->Watch();
50   return true;
51 }
52 
HostsReader(TestDnsConfigService & service,HostsParserFactory hosts_parser_factory)53 HostsReadingTestDnsConfigService::HostsReader::HostsReader(
54     TestDnsConfigService& service,
55     HostsParserFactory hosts_parser_factory)
56     : DnsConfigService::HostsReader(
57           /*hosts_file_path=*/base::FilePath::StringPieceType(),
58           service),
59       hosts_parser_factory_(std::move(hosts_parser_factory)) {}
60 
61 HostsReadingTestDnsConfigService::HostsReader::~HostsReader() = default;
62 
63 std::unique_ptr<SerialWorker::WorkItem>
CreateWorkItem()64 HostsReadingTestDnsConfigService::HostsReader::CreateWorkItem() {
65   return std::make_unique<WorkItem>(hosts_parser_factory_.Run());
66 }
67 
Watcher(DnsConfigService & service)68 HostsReadingTestDnsConfigService::Watcher::Watcher(DnsConfigService& service)
69     : DnsConfigService::Watcher(service) {}
70 
71 HostsReadingTestDnsConfigService::Watcher::~Watcher() = default;
72 
TriggerHostsChangeNotification(bool success)73 void HostsReadingTestDnsConfigService::Watcher::TriggerHostsChangeNotification(
74     bool success) {
75   CHECK(watch_started_);
76   OnHostsChanged(success);
77 }
78 
Watch()79 bool HostsReadingTestDnsConfigService::Watcher::Watch() {
80   watch_started_ = true;
81   return true;
82 }
83 
84 }  // namespace net
85