Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(274)

Side by Side Diff: chrome/browser/local_discovery/service_discovery_client_impl.cc

Issue 1653573003: Revert of Migrate Local Discovery from net::IPAddressNumber to net::IPAddress. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <utility> 5 #include <utility>
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 428 }
429 429
430 void ServiceResolverImpl::ARecordTransactionResponse( 430 void ServiceResolverImpl::ARecordTransactionResponse(
431 net::MDnsTransaction::Result status, const net::RecordParsed* record) { 431 net::MDnsTransaction::Result status, const net::RecordParsed* record) {
432 a_transaction_.reset(); 432 a_transaction_.reset();
433 433
434 if (status == net::MDnsTransaction::RESULT_RECORD) { 434 if (status == net::MDnsTransaction::RESULT_RECORD) {
435 DCHECK(record); 435 DCHECK(record);
436 service_staging_.ip_address = RecordToIPAddress(record); 436 service_staging_.ip_address = RecordToIPAddress(record);
437 } else { 437 } else {
438 service_staging_.ip_address = net::IPAddress(); 438 service_staging_.ip_address = net::IPAddressNumber();
439 } 439 }
440 440
441 address_resolved_ = true; 441 address_resolved_ = true;
442 AlertCallbackIfReady(); 442 AlertCallbackIfReady();
443 } 443 }
444 444
445 void ServiceResolverImpl::AlertCallbackIfReady() { 445 void ServiceResolverImpl::AlertCallbackIfReady() {
446 if (metadata_resolved_ && address_resolved_) { 446 if (metadata_resolved_ && address_resolved_) {
447 txt_transaction_.reset(); 447 txt_transaction_.reset();
448 srv_transaction_.reset(); 448 srv_transaction_.reset();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 } 486 }
487 487
488 net::HostPortPair ServiceResolverImpl::RecordToAddress( 488 net::HostPortPair ServiceResolverImpl::RecordToAddress(
489 const net::RecordParsed* record) const { 489 const net::RecordParsed* record) const {
490 DCHECK(record->type() == net::dns_protocol::kTypeSRV); 490 DCHECK(record->type() == net::dns_protocol::kTypeSRV);
491 const net::SrvRecordRdata* srv_rdata = record->rdata<net::SrvRecordRdata>(); 491 const net::SrvRecordRdata* srv_rdata = record->rdata<net::SrvRecordRdata>();
492 DCHECK(srv_rdata); 492 DCHECK(srv_rdata);
493 return net::HostPortPair(srv_rdata->target(), srv_rdata->port()); 493 return net::HostPortPair(srv_rdata->target(), srv_rdata->port());
494 } 494 }
495 495
496 net::IPAddress ServiceResolverImpl::RecordToIPAddress( 496 const net::IPAddressNumber& ServiceResolverImpl::RecordToIPAddress(
497 const net::RecordParsed* record) const { 497 const net::RecordParsed* record) const {
498 DCHECK(record->type() == net::dns_protocol::kTypeA); 498 DCHECK(record->type() == net::dns_protocol::kTypeA);
499 const net::ARecordRdata* a_rdata = record->rdata<net::ARecordRdata>(); 499 const net::ARecordRdata* a_rdata = record->rdata<net::ARecordRdata>();
500 DCHECK(a_rdata); 500 DCHECK(a_rdata);
501 return net::IPAddress(a_rdata->address()); 501 return a_rdata->address();
502 } 502 }
503 503
504 LocalDomainResolverImpl::LocalDomainResolverImpl( 504 LocalDomainResolverImpl::LocalDomainResolverImpl(
505 const std::string& domain, 505 const std::string& domain,
506 net::AddressFamily address_family, 506 net::AddressFamily address_family,
507 const IPAddressCallback& callback, 507 const IPAddressCallback& callback,
508 net::MDnsClient* mdns_client) 508 net::MDnsClient* mdns_client)
509 : domain_(domain), address_family_(address_family), callback_(callback), 509 : domain_(domain), address_family_(address_family), callback_(callback),
510 transactions_finished_(0), mdns_client_(mdns_client) { 510 transactions_finished_(0), mdns_client_(mdns_client) {
511 } 511 }
(...skipping 26 matching lines...) Expand all
538 base::Unretained(this))); 538 base::Unretained(this)));
539 } 539 }
540 540
541 void LocalDomainResolverImpl::OnTransactionComplete( 541 void LocalDomainResolverImpl::OnTransactionComplete(
542 net::MDnsTransaction::Result result, const net::RecordParsed* record) { 542 net::MDnsTransaction::Result result, const net::RecordParsed* record) {
543 transactions_finished_++; 543 transactions_finished_++;
544 544
545 if (result == net::MDnsTransaction::RESULT_RECORD) { 545 if (result == net::MDnsTransaction::RESULT_RECORD) {
546 if (record->type() == net::dns_protocol::kTypeA) { 546 if (record->type() == net::dns_protocol::kTypeA) {
547 const net::ARecordRdata* rdata = record->rdata<net::ARecordRdata>(); 547 const net::ARecordRdata* rdata = record->rdata<net::ARecordRdata>();
548 address_ipv4_ = net::IPAddress(rdata->address()); 548 address_ipv4_ = rdata->address();
549 } else { 549 } else {
550 DCHECK_EQ(net::dns_protocol::kTypeAAAA, record->type()); 550 DCHECK_EQ(net::dns_protocol::kTypeAAAA, record->type());
551 const net::AAAARecordRdata* rdata = record->rdata<net::AAAARecordRdata>(); 551 const net::AAAARecordRdata* rdata = record->rdata<net::AAAARecordRdata>();
552 address_ipv6_ = net::IPAddress(rdata->address()); 552 address_ipv6_ = rdata->address();
553 } 553 }
554 } 554 }
555 555
556 if (transactions_finished_ == 1 && 556 if (transactions_finished_ == 1 &&
557 address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) { 557 address_family_ == net::ADDRESS_FAMILY_UNSPECIFIED) {
558 timeout_callback_.Reset(base::Bind( 558 timeout_callback_.Reset(base::Bind(
559 &LocalDomainResolverImpl::SendResolvedAddresses, 559 &LocalDomainResolverImpl::SendResolvedAddresses,
560 base::Unretained(this))); 560 base::Unretained(this)));
561 561
562 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 562 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
563 FROM_HERE, timeout_callback_.callback(), 563 FROM_HERE, timeout_callback_.callback(),
564 base::TimeDelta::FromMilliseconds(kLocalDomainSecondAddressTimeoutMs)); 564 base::TimeDelta::FromMilliseconds(kLocalDomainSecondAddressTimeoutMs));
565 } else if (transactions_finished_ == 2 565 } else if (transactions_finished_ == 2
566 || address_family_ != net::ADDRESS_FAMILY_UNSPECIFIED) { 566 || address_family_ != net::ADDRESS_FAMILY_UNSPECIFIED) {
567 SendResolvedAddresses(); 567 SendResolvedAddresses();
568 } 568 }
569 } 569 }
570 570
571 bool LocalDomainResolverImpl::IsSuccess() { 571 bool LocalDomainResolverImpl::IsSuccess() {
572 return address_ipv4_.IsValid() || address_ipv6_.IsValid(); 572 return !address_ipv4_.empty() || !address_ipv6_.empty();
573 } 573 }
574 574
575 void LocalDomainResolverImpl::SendResolvedAddresses() { 575 void LocalDomainResolverImpl::SendResolvedAddresses() {
576 transaction_a_.reset(); 576 transaction_a_.reset();
577 transaction_aaaa_.reset(); 577 transaction_aaaa_.reset();
578 timeout_callback_.Cancel(); 578 timeout_callback_.Cancel();
579 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_); 579 callback_.Run(IsSuccess(), address_ipv4_, address_ipv6_);
580 } 580 }
581 581
582 } // namespace local_discovery 582 } // namespace local_discovery
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698