Merge "Remove unused code to instantiate bpfNetMaps" into main
diff --git a/framework/Android.bp b/framework/Android.bp
index d6ee759..f66bc60 100644
--- a/framework/Android.bp
+++ b/framework/Android.bp
@@ -162,7 +162,6 @@
     srcs: [":httpclient_api_sources"],
     static_libs: [
         "com.android.net.http.flags-aconfig-java",
-        "modules-utils-expresslog",
     ],
     libs: [
         "androidx.annotation_annotation",
diff --git a/service/src/com/android/server/L2capNetworkProvider.java b/service/src/com/android/server/L2capNetworkProvider.java
index e3becd6..d0b0603 100644
--- a/service/src/com/android/server/L2capNetworkProvider.java
+++ b/service/src/com/android/server/L2capNetworkProvider.java
@@ -95,9 +95,8 @@
     private final BlanketReservationOffer mBlanketOffer;
     private final Set<ReservedServerOffer> mReservedServerOffers = new ArraySet<>();
     private final ClientOffer mClientOffer;
-    // mBluetoothManager guaranteed non-null when read on handler thread after start() is called
-    @Nullable
-    private BluetoothManager mBluetoothManager;
+    private final BluetoothManager mBluetoothManager;
+    private final boolean mIsSupported;
 
     // Note: IFNAMSIZ is 16.
     private static final String TUN_IFNAME = "l2cap-tun";
@@ -681,6 +680,8 @@
         mProvider = mDeps.getNetworkProvider(context, mHandlerThread.getLooper());
         mBlanketOffer = new BlanketReservationOffer();
         mClientOffer = new ClientOffer();
+        mBluetoothManager = context.getSystemService(BluetoothManager.class);
+        mIsSupported = mContext.getPackageManager().hasSystemFeature(FEATURE_BLUETOOTH_LE);
     }
 
     /**
@@ -689,17 +690,19 @@
      * Called on CS Handler thread.
      */
     public void start() {
+        if (!mIsSupported) {
+            // In order to make mHandler final, the HandlerThread needs to be started before
+            // HandlerThread.getLooper() is called during the construction of the Handler.
+            mHandlerThread.quitSafely();
+            try {
+                mHandlerThread.join();
+            } catch (InterruptedException e) {
+                // join() interrupted. Do nothing.
+            }
+            return;
+        }
+
         mHandler.post(() -> {
-            final PackageManager pm = mContext.getPackageManager();
-            if (!pm.hasSystemFeature(FEATURE_BLUETOOTH_LE)) {
-                return;
-            }
-            mBluetoothManager = mContext.getSystemService(BluetoothManager.class);
-            if (mBluetoothManager == null) {
-                // Can this ever happen?
-                Log.wtf(TAG, "BluetoothManager not found");
-                return;
-            }
             mContext.getSystemService(ConnectivityManager.class).registerNetworkProvider(mProvider);
             mProvider.registerNetworkOffer(BlanketReservationOffer.SCORE,
                     BlanketReservationOffer.CAPABILITIES, mHandler::post, mBlanketOffer);