- add sources.
[platform/framework/web/crosswalk.git] / src / remoting / host / dns_blackhole_checker.h
1 // Copyright (c) 2012 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 REMOTING_HOST_DNS_BLACKHOLE_CHECKER_H_
6 #define REMOTING_HOST_DNS_BLACKHOLE_CHECKER_H_
7
8 #include "net/url_request/url_fetcher_delegate.h"
9
10 #include "base/callback.h"
11
12 namespace net {
13 class URLRequestContextGetter;
14 }  // namespace net
15
16 namespace remoting {
17
18 // This is the default prefix that is prepended to the kTalkGadgetUrl to form
19 // the complete talkgadget URL used by the host. Policy settings allow admins
20 // to change the prefix that is used.
21 extern const char kDefaultHostTalkGadgetPrefix[];
22
23 class DnsBlackholeChecker : public net::URLFetcherDelegate {
24  public:
25   DnsBlackholeChecker(
26       scoped_refptr<net::URLRequestContextGetter> url_request_context_getter,
27       std::string talkgadget_prefix);
28   virtual ~DnsBlackholeChecker();
29
30   // net::URLFetcherDelegate interface.
31   virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
32
33   // Initiates a check the verify that the host talkgadget has not been "DNS
34   // blackholed" to prevent connections. If this is called again before the
35   // callback has been called, then the second call is ignored.
36   void CheckForDnsBlackhole(const base::Callback<void(bool)>& callback);
37
38  private:
39   // URL request context getter to use to create the URL fetcher.
40   scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_;
41
42   // URL fetcher used to verify access to the host talkgadget.
43   scoped_ptr<net::URLFetcher> url_fetcher_;
44
45   // The string pre-pended to '.talkgadget.google.com' to create the full
46   // talkgadget domain name for the host.
47   std::string talkgadget_prefix_;
48
49   // Called with the results of the connection check.
50   base::Callback<void(bool)> callback_;
51
52   DISALLOW_COPY_AND_ASSIGN(DnsBlackholeChecker);
53 };
54
55 }  // namespace remoting
56
57 #endif  // REMOTING_HOST_DNS_BLACKHOLE_CHECKER_H_