dns_api.h revision effb81e5f8246d0db0270817048dc992db66e9fb
1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef EXTENSIONS_BROWSER_API_DNS_DNS_API_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define EXTENSIONS_BROWSER_API_DNS_DNS_API_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/browser/extension_function.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/address_list.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/completion_callback.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "net/dns/host_resolver.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace content {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass ResourceContext;
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DnsResolveFunction : public AsyncExtensionFunction {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DECLARE_EXTENSION_FUNCTION("dns.resolve", DNS_RESOLVE)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DnsResolveFunction();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~DnsResolveFunction();
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ExtensionFunction:
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool RunImpl() OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void WorkOnIOThread();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RespondOnUIThread();
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnLookupFinished(int result);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string hostname_;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  // Not owned.
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  content::ResourceContext* resource_context_;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  bool response_;  // The value sent in SendResponse().
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<net::HostResolver::RequestHandle> request_handle_;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<net::AddressList> addresses_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // EXTENSIONS_BROWSER_API_DNS_DNS_API_H_
53