am 5751f816: Merge "Add contentobserver for nsd_on setting" into jb-dev

* commit '5751f816f06454ea48bc25f56051878e0ce82dc1':
  Add contentobserver for nsd_on setting
diff --git a/services/java/com/android/server/NsdService.java b/services/java/com/android/server/NsdService.java
index cc8e6a4..6ad8bd0 100644
--- a/services/java/com/android/server/NsdService.java
+++ b/services/java/com/android/server/NsdService.java
@@ -20,6 +20,7 @@
 import android.content.ContentResolver;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.database.ContentObserver;
 import android.net.nsd.NsdServiceInfo;
 import android.net.nsd.DnsSdTxtRecord;
 import android.net.nsd.INsdManager;
@@ -113,6 +114,26 @@
             return cmdToString(msg.what);
         }
 
+        /**
+         * Observes the NSD on/off setting, and takes action when changed.
+         */
+        private void registerForNsdSetting() {
+            ContentObserver contentObserver = new ContentObserver(this.getHandler()) {
+                @Override
+                    public void onChange(boolean selfChange) {
+                        if (isNsdEnabled()) {
+                            mNsdStateMachine.sendMessage(NsdManager.ENABLE);
+                        } else {
+                            mNsdStateMachine.sendMessage(NsdManager.DISABLE);
+                        }
+                    }
+            };
+
+            mContext.getContentResolver().registerContentObserver(
+                    Settings.Secure.getUriFor(Settings.Secure.NSD_ON),
+                    false, contentObserver);
+        }
+
         NsdStateMachine(String name) {
             super(name);
             addState(mDefaultState);
@@ -124,6 +145,7 @@
                 setInitialState(mDisabledState);
             }
             setProcessedMessagesSize(25);
+            registerForNsdSetting();
         }
 
         class DefaultState extends State {