Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: talk/app/webrtc/java/android/org/webrtc/NetworkMonitor.java

Issue 1556743002: Bind a socket to a network if the network handle is set. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix a compiling issue for Windows Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2015 Google Inc. 3 * Copyright 2015 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 11 matching lines...) Expand all
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 package org.webrtc; 28 package org.webrtc;
29 29
30 import static org.webrtc.NetworkMonitorAutoDetect.ConnectionType; 30 import static org.webrtc.NetworkMonitorAutoDetect.ConnectionType;
31 import static org.webrtc.NetworkMonitorAutoDetect.INVALID_NET_ID; 31 import static org.webrtc.NetworkMonitorAutoDetect.INVALID_NET_ID;
32 import static org.webrtc.NetworkMonitorAutoDetect.NetworkInformation;
32 33
33 import android.content.Context; 34 import android.content.Context;
34 import android.util.Log; 35 import android.util.Log;
35 36
36 import java.util.ArrayList; 37 import java.util.ArrayList;
37 38
38 /** 39 /**
39 * Borrowed from Chromium's src/net/android/java/src/org/chromium/net/NetworkCha ngeNotifier.java 40 * Borrowed from Chromium's src/net/android/java/src/org/chromium/net/NetworkCha ngeNotifier.java
40 * 41 *
41 * Triggers updates to the underlying network state from OS networking events. 42 * Triggers updates to the underlying network state from OS networking events.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 destroyAutoDetector(); 150 destroyAutoDetector();
150 return; 151 return;
151 } 152 }
152 if (autoDetector == null) { 153 if (autoDetector == null) {
153 autoDetector = new NetworkMonitorAutoDetect( 154 autoDetector = new NetworkMonitorAutoDetect(
154 new NetworkMonitorAutoDetect.Observer() { 155 new NetworkMonitorAutoDetect.Observer() {
155 @Override 156 @Override
156 public void onConnectionTypeChanged(ConnectionType newConnectionType) { 157 public void onConnectionTypeChanged(ConnectionType newConnectionType) {
157 updateCurrentConnectionType(newConnectionType); 158 updateCurrentConnectionType(newConnectionType);
158 } 159 }
160 public void onNetworkConnect(NetworkInformation networkInfo) {
161 updateNetworkInformation(networkInfo);
162 }
159 }, 163 },
160 applicationContext); 164 applicationContext);
161 final NetworkMonitorAutoDetect.NetworkState networkState = 165 final NetworkMonitorAutoDetect.NetworkState networkState =
162 autoDetector.getCurrentNetworkState(); 166 autoDetector.getCurrentNetworkState();
163 updateCurrentConnectionType(autoDetector.getCurrentConnectionType(networkS tate)); 167 updateCurrentConnectionType(autoDetector.getConnectionType(networkState));
164 } 168 }
165 } 169 }
166 170
167 private void updateCurrentConnectionType(ConnectionType newConnectionType) { 171 private void updateCurrentConnectionType(ConnectionType newConnectionType) {
168 currentConnectionType = newConnectionType; 172 currentConnectionType = newConnectionType;
169 notifyObserversOfConnectionTypeChange(newConnectionType); 173 notifyObserversOfConnectionTypeChange(newConnectionType);
170 } 174 }
171 175
172 /** 176 /**
173 * Alerts all observers of a connection change. 177 * Alerts all observers of a connection change.
174 */ 178 */
175 private void notifyObserversOfConnectionTypeChange(ConnectionType newConnectio nType) { 179 private void notifyObserversOfConnectionTypeChange(ConnectionType newConnectio nType) {
176 for (long nativeObserver : nativeNetworkObservers) { 180 for (long nativeObserver : nativeNetworkObservers) {
177 nativeNotifyConnectionTypeChanged(nativeObserver); 181 nativeNotifyConnectionTypeChanged(nativeObserver);
178 } 182 }
179 for (NetworkObserver observer : networkObservers) { 183 for (NetworkObserver observer : networkObservers) {
180 observer.onConnectionTypeChanged(newConnectionType); 184 observer.onConnectionTypeChanged(newConnectionType);
181 } 185 }
182 } 186 }
183 187
188 private void updateNetworkInformation(NetworkInformation networkInfo) {
189 for (long nativeObserver : nativeNetworkObservers) {
190 nativeNotifyOfNetworkConnect(nativeObserver, networkInfo);
191 }
192 }
193
184 /** 194 /**
185 * Adds an observer for any connection type changes. 195 * Adds an observer for any connection type changes.
186 */ 196 */
187 public static void addNetworkObserver(NetworkObserver observer) { 197 public static void addNetworkObserver(NetworkObserver observer) {
188 getInstance().addNetworkObserverInternal(observer); 198 getInstance().addNetworkObserverInternal(observer);
189 } 199 }
190 200
191 private void addNetworkObserverInternal(NetworkObserver observer) { 201 private void addNetworkObserverInternal(NetworkObserver observer) {
192 networkObservers.add(observer); 202 networkObservers.add(observer);
193 } 203 }
(...skipping 15 matching lines...) Expand all
209 public static boolean isOnline() { 219 public static boolean isOnline() {
210 ConnectionType connectionType = getInstance().getCurrentConnectionType(); 220 ConnectionType connectionType = getInstance().getCurrentConnectionType();
211 return connectionType != ConnectionType.CONNECTION_UNKNOWN 221 return connectionType != ConnectionType.CONNECTION_UNKNOWN
212 && connectionType != ConnectionType.CONNECTION_NONE; 222 && connectionType != ConnectionType.CONNECTION_NONE;
213 } 223 }
214 224
215 private native long nativeCreateNetworkMonitor(); 225 private native long nativeCreateNetworkMonitor();
216 226
217 private native void nativeNotifyConnectionTypeChanged(long nativePtr); 227 private native void nativeNotifyConnectionTypeChanged(long nativePtr);
218 228
229 private native void nativeNotifyOfNetworkConnect(long nativePtr, NetworkInform ation networkInfo);
230
219 // For testing only. 231 // For testing only.
220 static void resetInstanceForTests(Context context) { 232 static void resetInstanceForTests(Context context) {
221 instance = new NetworkMonitor(context); 233 instance = new NetworkMonitor(context);
222 } 234 }
223 235
224 // For testing only. 236 // For testing only.
225 public static NetworkMonitorAutoDetect getAutoDetectorForTest() { 237 public static NetworkMonitorAutoDetect getAutoDetectorForTest() {
226 return getInstance().autoDetector; 238 return getInstance().autoDetector;
227 } 239 }
228 } 240 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698