OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ | 5 #ifndef CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ |
6 #define CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ | 6 #define CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ |
7 | 7 |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
11 #include "net/base/network_change_notifier.h" | 11 #include "net/base/network_change_notifier.h" |
12 #include "net/url_request/url_request.h" | 12 #include "net/url_request/url_request.h" |
13 | 13 |
14 class GURL; | 14 class GURL; |
15 | 15 |
16 namespace base { | 16 namespace base { |
17 class MessageLoopProxy; | 17 class MessageLoopProxy; |
18 } | 18 } |
19 | 19 |
20 namespace net { | 20 namespace net { |
21 class SSLInfo; | |
21 class URLRequestContext; | 22 class URLRequestContext; |
22 } | 23 } |
23 | 24 |
24 namespace chromecast { | 25 namespace chromecast { |
25 | 26 |
26 // Simple class to check network connectivity by sending a HEAD http request | 27 // Simple class to check network connectivity by sending a HEAD http request |
27 // to given url. | 28 // to given url. |
28 class ConnectivityChecker | 29 class ConnectivityChecker |
29 : public base::RefCountedThreadSafe<ConnectivityChecker>, | 30 : public base::RefCountedThreadSafe<ConnectivityChecker>, |
30 public net::URLRequest::Delegate, | 31 public net::URLRequest::Delegate, |
(...skipping 27 matching lines...) Expand all Loading... | |
58 | 59 |
59 protected: | 60 protected: |
60 ~ConnectivityChecker() override; | 61 ~ConnectivityChecker() override; |
61 | 62 |
62 private: | 63 private: |
63 friend class base::RefCountedThreadSafe<ConnectivityChecker>; | 64 friend class base::RefCountedThreadSafe<ConnectivityChecker>; |
64 | 65 |
65 // UrlRequest::Delegate implementation: | 66 // UrlRequest::Delegate implementation: |
66 void OnResponseStarted(net::URLRequest* request) override; | 67 void OnResponseStarted(net::URLRequest* request) override; |
67 void OnReadCompleted(net::URLRequest* request, int bytes_read) override; | 68 void OnReadCompleted(net::URLRequest* request, int bytes_read) override; |
69 void OnSSLCertificateError(net::URLRequest* request, | |
70 const net::SSLInfo& ssl_info, | |
71 bool fatal) override; | |
72 void OnUrlRequestError(); | |
derekjchow1
2015/05/19 17:08:47
Move this away from URLRequest::Delegate methods.
wzhong
2015/05/19 17:27:05
Done.
| |
68 | 73 |
69 // Initializes ConnectivityChecker | 74 // Initializes ConnectivityChecker |
70 void Initialize(); | 75 void Initialize(); |
71 | 76 |
72 // NetworkChangeNotifier::ConnectionTypeObserver implementation: | 77 // NetworkChangeNotifier::ConnectionTypeObserver implementation: |
73 void OnConnectionTypeChanged( | 78 void OnConnectionTypeChanged( |
74 net::NetworkChangeNotifier::ConnectionType type) override; | 79 net::NetworkChangeNotifier::ConnectionType type) override; |
75 | 80 |
76 // net::NetworkChangeNotifier::IPAddressObserver implementation: | 81 // net::NetworkChangeNotifier::IPAddressObserver implementation: |
77 void OnIPAddressChanged() override; | 82 void OnIPAddressChanged() override; |
78 | 83 |
79 // Cancels current connectivity checking in progress. | 84 // Cancels current connectivity checking in progress. |
80 void Cancel(); | 85 void Cancel(); |
81 | 86 |
82 // Sets connectivity and alerts observers if it has changed | 87 // Sets connectivity and alerts observers if it has changed |
83 void SetConnectivity(bool connected); | 88 void SetConnectivity(bool connected); |
84 | 89 |
85 scoped_ptr<GURL> connectivity_check_url_; | 90 scoped_ptr<GURL> connectivity_check_url_; |
86 scoped_ptr<net::URLRequestContext> url_request_context_; | 91 scoped_ptr<net::URLRequestContext> url_request_context_; |
87 scoped_ptr<net::URLRequest> url_request_; | 92 scoped_ptr<net::URLRequest> url_request_; |
88 const scoped_refptr<ObserverListThreadSafe<ConnectivityObserver> > | 93 const scoped_refptr<ObserverListThreadSafe<ConnectivityObserver> > |
89 connectivity_observer_list_; | 94 connectivity_observer_list_; |
90 const scoped_refptr<base::MessageLoopProxy> loop_proxy_; | 95 const scoped_refptr<base::MessageLoopProxy> loop_proxy_; |
91 bool connected_; | 96 bool connected_; |
92 unsigned int bad_responses_; | 97 // Number of connectivity check errors. |
98 unsigned int check_errors_; | |
93 | 99 |
94 DISALLOW_COPY_AND_ASSIGN(ConnectivityChecker); | 100 DISALLOW_COPY_AND_ASSIGN(ConnectivityChecker); |
95 }; | 101 }; |
96 | 102 |
97 } // namespace chromecast | 103 } // namespace chromecast |
98 | 104 |
99 #endif // CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ | 105 #endif // CHROMECAST_NET_CONNECTIVITY_CHECKER_H_ |
OLD | NEW |