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 15 namespace content { 16 class ResourceContext; 17 } 18 19 namespace extensions { 20 21 class 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