@Override public synchronized ServiceCall callAsync(String url, String method, Map<String, String> headers, CallTemplate callTemplate, ServiceCallback serviceCallback) { Call call = new Call(mDecoratedApi, url, method, headers, callTemplate, serviceCallback); if (mNetworkStateHelper.isNetworkConnected()) { call.run(); } else { mCalls.add(call); AppCenterLog.debug(LOG_TAG, "Call triggered with no network connectivity, waiting network to become available..."); } return call; }
/** * Handle network state update on API level < 21. */ private synchronized void handleNetworkStateUpdate() { /* * This code is used to notify listeners only when the network state goes from * connected to disconnected and vice versa * (without duplicate calls, the sequence will be consistent). */ String previousNetworkType = mNetworkType; updateNetworkType(); boolean networkTypeChanged = previousNetworkType == null ? mNetworkType != null : !previousNetworkType.equals(mNetworkType); if (networkTypeChanged) { boolean connected = isNetworkConnected(); if (connected && previousNetworkType != null) { notifyNetworkStateUpdated(false); } notifyNetworkStateUpdated(connected); } }
@Test public void permissionDenied() { when(mConnectivityManager.getActiveNetworkInfo()).thenThrow(new SecurityException()); NetworkStateHelper helper = new NetworkStateHelper(mContext); assertFalse(helper.isNetworkConnected()); }
@Test public void networkStates() { for (NetworkInfo.State state : NetworkInfo.State.values()) { NetworkInfo networkInfo = mock(NetworkInfo.class); when(mConnectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); when(networkInfo.isConnected()).thenReturn(state == NetworkInfo.State.CONNECTED); NetworkStateHelper helper = new NetworkStateHelper(mContext); assertEquals(state == NetworkInfo.State.CONNECTED, helper.isNetworkConnected()); } }
@Test public void permissionDenied() { doThrow(new SecurityException()) .when(mConnectivityManager) .registerNetworkCallback(any(NetworkRequest.class), any(ConnectivityManager.NetworkCallback.class)); assertFalse(new NetworkStateHelper(mContext).isNetworkConnected()); }
when(networkStateHelper.isNetworkConnected()).thenReturn(true);
when(networkStateHelper.isNetworkConnected()).thenReturn(false).thenReturn(true);
when(networkStateHelper.isNetworkConnected()).thenReturn(false).thenReturn(true);
@Test public void nullNetworkInfo() { NetworkStateHelper helper = new NetworkStateHelper(mContext); assertFalse(helper.isNetworkConnected()); }
if (!NetworkStateHelper.getSharedInstance(activity).isNetworkConnected()) { AppCenterLog.info(LOG_TAG, "Postpone enabling in app updates via browser as network is disconnected."); Distribute.getInstance().completeWorkflow();
when(networkStateHelper.isNetworkConnected()).thenReturn(true);
@Test public void initialState() { assertFalse(new NetworkStateHelper(mContext).isNetworkConnected()); }
@Test public void postponeBrowserIfNoNetwork() throws Exception { when(mPackageManager.getPackageInfo(DistributeUtils.TESTER_APP_PACKAGE_NAME, 0)).thenThrow(new PackageManager.NameNotFoundException()); /* Check browser not opened if no network. */ when(mNetworkStateHelper.isNetworkConnected()).thenReturn(false); start(); Distribute.getInstance().onActivityResumed(mActivity); verifyStatic(never()); BrowserUtils.openBrowser(anyString(), any(Activity.class)); /* If network comes back, we don't open network unless we restart app. */ when(mNetworkStateHelper.isNetworkConnected()).thenReturn(true); Distribute.getInstance().onActivityPaused(mActivity); Distribute.getInstance().onActivityResumed(mActivity); verifyStatic(never()); BrowserUtils.openBrowser(anyString(), any(Activity.class)); /* Restart should open browser if still have network. */ when(UUIDUtils.randomUUID()).thenReturn(UUID.randomUUID()); restartResumeLauncher(mActivity); verifyStatic(); BrowserUtils.openBrowser(anyString(), any(Activity.class)); }
when(networkStateHelper.isNetworkConnected()).thenReturn(true);
when(mNetworkStateHelper.isNetworkConnected()).thenReturn(false); restartProcessAndSdk(); Distribute.getInstance().onActivityResumed(mock(Activity.class));
verify(listener).onNetworkStateUpdated(true); verify(listener, never()).onNetworkStateUpdated(false); assertTrue(helper.isNetworkConnected()); verify(listener2).onNetworkStateUpdated(false); verify(listener2).onNetworkStateUpdated(true); assertTrue(helper.isNetworkConnected()); receiver.onReceive(mContext, intent); verify(listener3).onNetworkStateUpdated(false); assertFalse(helper.isNetworkConnected()); receiver.onReceive(mContext, intent); verify(listener3, never()).onNetworkStateUpdated(true); assertTrue(helper.isNetworkConnected()); assertFalse(helper.isNetworkConnected()); verify(mContext).unregisterReceiver(receiver); assertTrue(helper.isNetworkConnected()); verify(mContext, times(2)).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class));
verify(listener).onNetworkStateUpdated(true); verify(listener, never()).onNetworkStateUpdated(false); assertTrue(helper.isNetworkConnected()); verify(listener2).onNetworkStateUpdated(false); verify(listener2).onNetworkStateUpdated(true); assertTrue(helper.isNetworkConnected()); Network network2 = mock(Network.class); callback.getValue().onAvailable(network2); assertTrue(helper.isNetworkConnected()); verify(listener3).onNetworkStateUpdated(false); verify(listener3).onNetworkStateUpdated(true); assertTrue(helper.isNetworkConnected()); assertFalse(helper.isNetworkConnected()); callback.getValue().onAvailable(network); verifyNoMoreInteractions(listener3); assertTrue(helper.isNetworkConnected()); assertFalse(helper.isNetworkConnected()); verify(mConnectivityManager).unregisterNetworkCallback(callback.getValue()); assertFalse(helper.isNetworkConnected()); network = mock(Network.class); callback.getValue().onAvailable(network); assertTrue(helper.isNetworkConnected());
when(mNetworkStateHelper.isNetworkConnected()).thenReturn(false); restartProcessAndSdk(); Distribute.getInstance().onActivityResumed(mock(Activity.class)); when(mNetworkStateHelper.isNetworkConnected()).thenReturn(true); serviceCallbackRef.get().onCallSucceeded("mock"); when(mNetworkStateHelper.isNetworkConnected()).thenReturn(false); restartProcessAndSdk(); Distribute.getInstance().onActivityResumed(mock(Activity.class)); when(mNetworkStateHelper.isNetworkConnected()).thenReturn(true); serviceCallbackRef.get().onCallSucceeded("mock");
NetworkStateHelper.getSharedInstance(mContext).isNetworkConnected() && downloadState == DOWNLOAD_STATE_AVAILABLE) { cancelPreviousTasks();