OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 package org.chromium.net; | 5 package org.chromium.net; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 | 8 |
9 import org.chromium.base.ObserverList; | 9 import org.chromium.base.ObserverList; |
10 import org.chromium.base.annotations.CalledByNative; | 10 import org.chromium.base.annotations.CalledByNative; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
104 * Returns the singleton instance. | 104 * Returns the singleton instance. |
105 */ | 105 */ |
106 public static NetworkChangeNotifier getInstance() { | 106 public static NetworkChangeNotifier getInstance() { |
107 assert sInstance != null; | 107 assert sInstance != null; |
108 return sInstance; | 108 return sInstance; |
109 } | 109 } |
110 | 110 |
111 /** | 111 /** |
112 * Enables auto detection of the current network state based on notification s from the system. | 112 * Enables auto detection of the current network state based on notification s from the system. |
113 * Note that passing true here requires the embedding app have the platform ACCESS_NETWORK_STATE | 113 * Note that passing true here requires the embedding app have the platform ACCESS_NETWORK_STATE |
114 * permission. | 114 * permission. Also note that in this case the auto detection is enabled bas ed on the status of |
115 * the application (@see ApplicationStatus). | |
115 * | 116 * |
116 * @param shouldAutoDetect true if the NetworkChangeNotifier should listen f or system changes in | 117 * @param shouldAutoDetect true if the NetworkChangeNotifier should listen f or system changes in |
117 * network connectivity. | 118 * network connectivity. |
118 */ | 119 */ |
119 public static void setAutoDetectConnectivityState(boolean shouldAutoDetect) { | 120 public static void setAutoDetectConnectivityState(boolean shouldAutoDetect) { |
120 getInstance().setAutoDetectConnectivityStateInternal(shouldAutoDetect, f alse); | 121 getInstance().setAutoDetectConnectivityStateInternal( |
121 } | 122 shouldAutoDetect, new RegistrationPolicyApplicationStatus()); |
122 | |
123 private void destroyAutoDetector() { | |
124 if (mAutoDetector != null) { | |
125 mAutoDetector.destroy(); | |
126 mAutoDetector = null; | |
127 } | |
128 } | 123 } |
129 | 124 |
130 /** | 125 /** |
131 * Registers to always receive network change notifications no matter if | 126 * Registers to always receive network change notifications no matter if |
132 * the app is in the background or foreground. | 127 * the app is in the background or foreground. |
133 * Note that in normal circumstances, chrome embedders should use | 128 * Note that in normal circumstances, chrome embedders should use |
134 * {@code setAutoDetectConnectivityState} to listen to network changes only | 129 * {@code setAutoDetectConnectivityState} to listen to network changes only |
135 * when the app is in the foreground, because network change observers | 130 * when the app is in the foreground, because network change observers |
136 * might perform expensive work depending on the network connectivity. | 131 * might perform expensive work depending on the network connectivity. |
137 */ | 132 */ |
138 public static void registerToReceiveNotificationsAlways() { | 133 public static void registerToReceiveNotificationsAlways() { |
139 getInstance().setAutoDetectConnectivityStateInternal(true, true); | 134 getInstance().setAutoDetectConnectivityStateInternal( |
135 true, new RegistrationPolicyAlwaysRegister()); | |
136 } | |
137 | |
138 /** | |
139 * Registers to receive network change notification based on the provided re gistration policy. | |
140 */ | |
141 public static void setAutoDetectConnectivityState(RegistrationPolicy policy) { | |
142 getInstance().setAutoDetectConnectivityStateInternal(true, policy); | |
143 } | |
144 | |
145 private void destroyAutoDetector() { | |
146 if (mAutoDetector != null) { | |
147 mAutoDetector.destroy(); | |
148 mAutoDetector = null; | |
149 } | |
140 } | 150 } |
141 | 151 |
142 private void setAutoDetectConnectivityStateInternal( | 152 private void setAutoDetectConnectivityStateInternal( |
143 boolean shouldAutoDetect, boolean alwaysWatchForChanges) { | 153 boolean shouldAutoDetect, RegistrationPolicy policy) { |
pauljensen
2015/10/01 12:06:36
It looks like you refactored the body of this func
timvolodine
2015/10/05 17:26:45
sure no problem, this is not essential anyway. don
| |
144 if (shouldAutoDetect) { | 154 if (!shouldAutoDetect) { |
145 if (mAutoDetector == null) { | |
146 mAutoDetector = new NetworkChangeNotifierAutoDetect( | |
147 new NetworkChangeNotifierAutoDetect.Observer() { | |
148 @Override | |
149 public void onConnectionTypeChanged(int newConnectionTyp e) { | |
150 updateCurrentConnectionType(newConnectionType); | |
151 } | |
152 @Override | |
153 public void onMaxBandwidthChanged(double maxBandwidthMbp s) { | |
154 updateCurrentMaxBandwidth(maxBandwidthMbps); | |
155 } | |
156 }, | |
157 mContext, | |
158 alwaysWatchForChanges); | |
159 final NetworkChangeNotifierAutoDetect.NetworkState networkState = | |
160 mAutoDetector.getCurrentNetworkState(); | |
161 updateCurrentConnectionType(mAutoDetector.getCurrentConnectionTy pe(networkState)); | |
162 updateCurrentMaxBandwidth(mAutoDetector.getCurrentMaxBandwidthIn Mbps(networkState)); | |
163 } | |
164 } else { | |
165 destroyAutoDetector(); | 155 destroyAutoDetector(); |
156 return; | |
166 } | 157 } |
158 if (mAutoDetector != null) return; | |
159 | |
160 mAutoDetector = | |
161 new NetworkChangeNotifierAutoDetect(new NetworkChangeNotifierAut oDetect.Observer() { | |
162 @Override | |
163 public void onConnectionTypeChanged(int newConnectionType) { | |
164 updateCurrentConnectionType(newConnectionType); | |
165 } | |
166 @Override | |
167 public void onMaxBandwidthChanged(double maxBandwidthMbps) { | |
168 updateCurrentMaxBandwidth(maxBandwidthMbps); | |
169 } | |
170 }, mContext, policy); | |
171 final NetworkChangeNotifierAutoDetect.NetworkState networkState = | |
172 mAutoDetector.getCurrentNetworkState(); | |
173 updateCurrentConnectionType(mAutoDetector.getCurrentConnectionType(netwo rkState)); | |
174 updateCurrentMaxBandwidth(mAutoDetector.getCurrentMaxBandwidthInMbps(net workState)); | |
167 } | 175 } |
168 | 176 |
169 /** | 177 /** |
170 * Updates the perceived network state when not auto-detecting changes to co nnectivity. | 178 * Updates the perceived network state when not auto-detecting changes to co nnectivity. |
171 * | 179 * |
172 * @param networkAvailable True if the NetworkChangeNotifier should perceive a "connected" | 180 * @param networkAvailable True if the NetworkChangeNotifier should perceive a "connected" |
173 * state, false implies "disconnected". | 181 * state, false implies "disconnected". |
174 */ | 182 */ |
175 @CalledByNative | 183 @CalledByNative |
176 public static void forceConnectivityState(boolean networkAvailable) { | 184 public static void forceConnectivityState(boolean networkAvailable) { |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
257 | 265 |
258 /** | 266 /** |
259 * Checks if there currently is connectivity. | 267 * Checks if there currently is connectivity. |
260 */ | 268 */ |
261 public static boolean isOnline() { | 269 public static boolean isOnline() { |
262 int connectionType = getInstance().getCurrentConnectionType(); | 270 int connectionType = getInstance().getCurrentConnectionType(); |
263 return connectionType != ConnectionType.CONNECTION_UNKNOWN | 271 return connectionType != ConnectionType.CONNECTION_UNKNOWN |
264 && connectionType != ConnectionType.CONNECTION_NONE; | 272 && connectionType != ConnectionType.CONNECTION_NONE; |
265 } | 273 } |
266 } | 274 } |
OLD | NEW |