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()17TestDnsConfigService::TestDnsConfigService() 18 : DnsConfigService(base::FilePath::StringPieceType() /* hosts_file_path */, 19 std::nullopt /* config_change_delay */) {} 20 21 TestDnsConfigService::~TestDnsConfigService() = default; 22 StartWatching()23bool TestDnsConfigService::StartWatching() { 24 return true; 25 } 26 RefreshConfig()27void 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)36HostsReadingTestDnsConfigService::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()44void HostsReadingTestDnsConfigService::ReadHostsNow() { 45 hosts_reader_->WorkNow(); 46 } 47 StartWatching()48bool HostsReadingTestDnsConfigService::StartWatching() { 49 watcher_->Watch(); 50 return true; 51 } 52 HostsReader(TestDnsConfigService & service,HostsParserFactory hosts_parser_factory)53HostsReadingTestDnsConfigService::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()64HostsReadingTestDnsConfigService::HostsReader::CreateWorkItem() { 65 return std::make_unique<WorkItem>(hosts_parser_factory_.Run()); 66 } 67 Watcher(DnsConfigService & service)68HostsReadingTestDnsConfigService::Watcher::Watcher(DnsConfigService& service) 69 : DnsConfigService::Watcher(service) {} 70 71 HostsReadingTestDnsConfigService::Watcher::~Watcher() = default; 72 TriggerHostsChangeNotification(bool success)73void HostsReadingTestDnsConfigService::Watcher::TriggerHostsChangeNotification( 74 bool success) { 75 CHECK(watch_started_); 76 OnHostsChanged(success); 77 } 78 Watch()79bool HostsReadingTestDnsConfigService::Watcher::Watch() { 80 watch_started_ = true; 81 return true; 82 } 83 84 } // namespace net 85