Block access to Hotspot/Tethering when Airplane in ON

Block the access to Tethering option via Quick Settings
tile when either Airplane or Datasaver is turned ON.

Issue: PRJ8901-1237
Issue: FP3-A11#188
Issue: FP3-A11#233
Change-Id: I0ded76ed70b7acb35224ffc3426356cb4ebdc158
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index 796124f..7cbc97b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -22,6 +22,7 @@
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiManager;
 import android.os.UserManager;
+import android.provider.Settings.Global;
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
 import android.util.Log;
@@ -30,6 +31,7 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.systemui.R;
 import com.android.systemui.plugins.qs.QSTile.BooleanState;
+import com.android.systemui.qs.GlobalSetting;
 import com.android.systemui.qs.QSHost;
 import com.android.systemui.qs.tileimpl.QSTileImpl;
 import com.android.systemui.statusbar.policy.DataSaverController;
@@ -51,6 +53,8 @@
     private boolean mListening;
     private WifiManager mWifiManager;
 
+    private final GlobalSetting mAirplaneMode;
+
     @Inject
     public HotspotTile(QSHost host, HotspotController hotspotController,
             DataSaverController dataSaverController) {
@@ -60,6 +64,12 @@
         mHotspotController.observe(this, mCallbacks);
         mDataSaverController.observe(this, mCallbacks);
         mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+        mAirplaneMode = new GlobalSetting(mContext, mHandler, Global.AIRPLANE_MODE_ON) {
+            @Override
+            protected void handleValueChanged(int value) {
+                refreshState();
+            }
+        };
     }
 
     @Override
@@ -80,6 +90,7 @@
         if (listening) {
             refreshState();
         }
+        mAirplaneMode.setListening(listening);
     }
 
     @Override
@@ -95,7 +106,8 @@
     @Override
     protected void handleClick() {
         final boolean isEnabled = mState.value;
-        if (!isEnabled && mDataSaverController.isDataSaverEnabled()) {
+        if (mAirplaneMode.getValue() != 0
+            || (!isEnabled && mDataSaverController.isDataSaverEnabled())) {
             return;
         }
         // Immediately enter transient enabling state when turning hotspot on.
@@ -152,7 +164,8 @@
         state.expandedAccessibilityClassName = Switch.class.getName();
         state.contentDescription = state.label;
 
-        final boolean isTileUnavailable = isDataSaverEnabled;
+        boolean isAirplaneMode = mAirplaneMode.getValue() != 0;
+        final boolean isTileUnavailable = isAirplaneMode || isDataSaverEnabled;
         final boolean isTileActive = (state.value || state.isTransient);
 
         if (isTileUnavailable) {