summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hugo Benichi <hugobenichi@google.com> 2017-05-26 00:34:03 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-05-26 00:34:05 +0000
commit0388f0e47b9853437cdeebafc77d38e86606554b (patch)
tree64977dd5aa82375fa292aab2d92cc377e07f2f66
parent25ce41cf4c54eb2be721c7cdaede5d866181ffa0 (diff)
parent03f6e1d18a495fb2fe691db7537e944aba1f13cc (diff)
Merge changes If4deb106,Ib25d7658
* changes: NsdService: do not use ContentResolver directly @Ignore ConnectivityServiceTest#testRequestBenchmark
-rw-r--r--services/core/java/com/android/server/NsdService.java20
-rw-r--r--tests/net/java/com/android/server/ConnectivityServiceTest.java2
2 files changed, 17 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/NsdService.java b/services/core/java/com/android/server/NsdService.java
index 2158f60089d7..5f6bd59453ed 100644
--- a/services/core/java/com/android/server/NsdService.java
+++ b/services/core/java/com/android/server/NsdService.java
@@ -21,6 +21,7 @@ import android.content.ContentResolver;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.ContentObserver;
+import android.net.Uri;
import android.net.nsd.NsdServiceInfo;
import android.net.nsd.DnsSdTxtRecord;
import android.net.nsd.INsdManager;
@@ -96,16 +97,15 @@ public class NsdService extends INsdManager.Stub {
* Observes the NSD on/off setting, and takes action when changed.
*/
private void registerForNsdSetting() {
- ContentObserver contentObserver = new ContentObserver(this.getHandler()) {
+ final ContentObserver contentObserver = new ContentObserver(this.getHandler()) {
@Override
public void onChange(boolean selfChange) {
notifyEnabled(isNsdEnabled());
}
};
- mContext.getContentResolver().registerContentObserver(
- Settings.Global.getUriFor(Settings.Global.NSD_ON),
- false, contentObserver);
+ final Uri uri = Settings.Global.getUriFor(Settings.Global.NSD_ON);
+ mNsdSettings.registerContentObserver(uri, contentObserver);
}
NsdStateMachine(String name, Handler handler) {
@@ -885,13 +885,18 @@ public class NsdService extends INsdManager.Stub {
}
}
+ /**
+ * Interface which encapsulates dependencies of NsdService that are hard to mock, hard to
+ * override, or have side effects on global state in unit tests.
+ */
@VisibleForTesting
public interface NsdSettings {
boolean isEnabled();
void putEnabledStatus(boolean isEnabled);
+ void registerContentObserver(Uri uri, ContentObserver observer);
static NsdSettings makeDefault(Context context) {
- ContentResolver resolver = context.getContentResolver();
+ final ContentResolver resolver = context.getContentResolver();
return new NsdSettings() {
@Override
public boolean isEnabled() {
@@ -902,6 +907,11 @@ public class NsdService extends INsdManager.Stub {
public void putEnabledStatus(boolean isEnabled) {
Settings.Global.putInt(resolver, Settings.Global.NSD_ON, isEnabled ? 1 : 0);
}
+
+ @Override
+ public void registerContentObserver(Uri uri, ContentObserver observer) {
+ resolver.registerContentObserver(uri, false, observer);
+ }
};
}
}
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index 00b0f980d3cf..4fdbfe75da28 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -97,6 +97,7 @@ import com.android.server.connectivity.NetworkMonitor;
import com.android.server.connectivity.NetworkMonitor.CaptivePortalProbeResult;
import com.android.server.net.NetworkPinner;
+import org.junit.Ignore;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
@@ -2409,6 +2410,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
mCm.unregisterNetworkCallback(fgCallback);
}
+ @Ignore // This test has instrinsic chances of spurious failures: ignore for continuous testing.
@SmallTest
public void testRequestBenchmark() throws Exception {
// TODO: turn this unit test into a real benchmarking test.