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 3// found in the LICENSE file. 4 5#ifndef EXTENSIONS_BROWSER_API_DNS_DNS_API_H_ 6#define EXTENSIONS_BROWSER_API_DNS_DNS_API_H_ 7 8#include <string> 9 10#include "extensions/browser/extension_function.h" 11#include "net/base/address_list.h" 12#include "net/base/completion_callback.h" 13#include "net/dns/host_resolver.h" 14 15namespace content { 16class ResourceContext; 17} 18 19namespace extensions { 20 21class DnsResolveFunction : public AsyncExtensionFunction { 22 public: 23 DECLARE_EXTENSION_FUNCTION("dns.resolve", DNS_RESOLVE) 24 25 DnsResolveFunction(); 26 27 protected: 28 virtual ~DnsResolveFunction(); 29 30 // ExtensionFunction: 31 virtual bool RunAsync() OVERRIDE; 32 33 void WorkOnIOThread(); 34 void RespondOnUIThread(); 35 36 private: 37 void OnLookupFinished(int result); 38 39 std::string hostname_; 40 41 // Not owned. 42 content::ResourceContext* resource_context_; 43 44 bool response_; // The value sent in SendResponse(). 45 46 scoped_ptr<net::HostResolver::RequestHandle> request_handle_; 47 scoped_ptr<net::AddressList> addresses_; 48}; 49 50} // namespace extensions 51 52#endif // EXTENSIONS_BROWSER_API_DNS_DNS_API_H_ 53