| 660 | } |
| 661 | |
| 662 | v8::Local<v8::Promise> Session::ResolveHost( |
| 663 | std::string host, |
| 664 | std::optional<network::mojom::ResolveHostParametersPtr> params) { |
| 665 | gin_helper::Promise<gin_helper::Dictionary> promise(isolate_); |
| 666 | v8::Local<v8::Promise> handle = promise.GetHandle(); |
| 667 | |
| 668 | auto fn = base::MakeRefCounted<ResolveHostFunction>( |
| 669 | browser_context(), std::move(host), |
| 670 | params ? std::move(params.value()) : nullptr, |
| 671 | base::BindOnce( |
| 672 | [](gin_helper::Promise<gin_helper::Dictionary> promise, |
| 673 | int64_t net_error, const std::optional<net::AddressList>& addrs) { |
| 674 | if (net_error < 0) { |
| 675 | promise.RejectWithErrorMessage(net::ErrorToString(net_error)); |
| 676 | } else { |
| 677 | DCHECK(addrs.has_value() && !addrs->empty()); |
| 678 | |
| 679 | v8::HandleScope handle_scope(promise.isolate()); |
| 680 | auto dict = |
| 681 | gin_helper::Dictionary::CreateEmpty(promise.isolate()); |
| 682 | dict.Set("endpoints", addrs->endpoints()); |
| 683 | promise.Resolve(dict); |
| 684 | } |
| 685 | }, |
| 686 | std::move(promise))); |
| 687 | |
| 688 | fn->Run(); |
| 689 | |
| 690 | return handle; |
| 691 | } |
| 692 | |
| 693 | v8::Local<v8::Promise> Session::GetCacheSize() { |
| 694 | gin_helper::Promise<int64_t> promise(isolate_); |