OSDN Git Service

AdapterService: enforce new user restriction for disallowing Bluetooth.
authorLenka Trochtova <ltrochtova@google.com>
Fri, 2 Dec 2016 11:46:22 +0000 (12:46 +0100)
committerLenka Trochtova <ltrochtova@google.com>
Tue, 6 Dec 2016 09:23:42 +0000 (10:23 +0100)
Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.UserRestrictionsTest
Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases --test com.android.cts.devicepolicy.DeviceOwnerTest#testBluetoothRestriction

Bug: 32895300

Change-Id: I832b9c7d6427dfd977a6f0ee73c860234c1e2347

src/com/android/bluetooth/btservice/AdapterService.java

index 3f194a6..c8accf7 100644 (file)
@@ -52,6 +52,8 @@ import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
 import android.os.SystemClock;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.util.Base64;
@@ -205,6 +207,7 @@ public class AdapterService extends Service {
     private PowerManager mPowerManager;
     private PowerManager.WakeLock mWakeLock;
     private String mWakeLockName;
+    private UserManager mUserManager;
 
     private ProfileObserver mProfileObserver;
 
@@ -536,6 +539,7 @@ public class AdapterService extends Service {
         getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDNAME);
         mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
         mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
         mBatteryStats = IBatteryStats.Stub.asInterface(ServiceManager.getService(
                 BatteryStats.SERVICE_NAME));
 
@@ -1497,6 +1501,12 @@ public class AdapterService extends Service {
      public synchronized boolean enable(boolean quietMode) {
          enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, "Need BLUETOOTH ADMIN permission");
 
+         // Enforce the user restriction for disallowing Bluetooth if it was set.
+         if (mUserManager.hasUserRestriction(UserManager.DISALLOW_BLUETOOTH, UserHandle.SYSTEM)) {
+            debugLog("enable() called when Bluetooth was disallowed");
+            return false;
+         }
+
          debugLog("enable() - Enable called with quiet mode status =  " + mQuietmode);
          mQuietmode = quietMode;
          Message m = mAdapterStateMachine.obtainMessage(AdapterState.BLE_TURN_ON);