DO NOT MERGE - Merge Android 13

Bug: 242648940
Merged-In: I29de8eaaaa2d4404a9a1bb66bd8f6fda0afdb544
Change-Id: Ie56326fbbe3db40ef3fa8a289b3527f17c6be921
diff --git a/OWNERS b/OWNERS
index dc17b81..2011246 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,8 +1,6 @@
 brettchabot@google.com
-christianw@google.com
-jongerrish@google.com
+hoisie@google.com
 jplemieux@google.com
-justinklaassen@google.com
 leechou@google.com
 yukl@google.com
 tmfang@google.com
\ No newline at end of file
diff --git a/processor/sdks.txt b/processor/sdks.txt
index b9931ca..5444e46 100644
--- a/processor/sdks.txt
+++ b/processor/sdks.txt
@@ -13,3 +13,4 @@
 prebuilts/misc/common/robolectric/android-all/android-all-9plus-robolectric-5616371.jar
 prebuilts/misc/common/robolectric/android-all/android-all-10-robolectric-5803371.jar
 prebuilts/misc/common/robolectric/android-all/android-all-R-beta2-robolectric-6625208.jar
+prebuilts/misc/common/robolectric/android-all/android-all-S-beta3-robolectric-7541949.jar
diff --git a/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java b/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
index c7b986e..69afa64 100644
--- a/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
+++ b/robolectric/src/main/java/org/robolectric/internal/AndroidConfigurer.java
@@ -104,6 +104,10 @@
     // This results in an error where two __robo_data__ fields get added to the same object.
     builder.doNotInstrumentPackage("androidx.room.migration");
     builder.doNotInstrumentPackage("androidx.test");
+    // Robolectric instrumentation causes issues with
+    // androidx.lifecycle.viewmodel.MutableCreationExtras and androidx.lifecycle.ViewModelProvider
+    // constructor.
+    builder.doNotInstrumentPackage("androidx.lifecycle");
     builder.doNotInstrumentPackage("android.arch.persistence.room.migration");
     builder.doNotInstrumentPackage("android.support.test");
 
diff --git a/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java b/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
index 8c59354..901d518 100644
--- a/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
+++ b/robolectric/src/main/java/org/robolectric/internal/SdkConfig.java
@@ -33,6 +33,7 @@
               // BEGIN-INTERNAL
               // TODO: Update jar with final R release.
               addSdk(Build.VERSION_CODES.R, "R-beta2", "6625208", "REL");
+              addSdk(Build.VERSION_CODES.S, "S-beta3", "7541949", "REL");
               addSdk(Build.VERSION_CODES.CUR_DEVELOPMENT, "current", "r0", "ZZZ");
               // END-INTERNAL
             }
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
index 42e9f61..2734d60 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowBluetoothAdapterTest.java
@@ -2,12 +2,15 @@
 
 import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
 import static android.os.Build.VERSION_CODES.LOLLIPOP;
+import static android.os.Build.VERSION_CODES.S_V2;
+import static android.os.Build.VERSION_CODES.TIRAMISU;
 import static com.google.common.truth.Truth.assertThat;
 import static org.robolectric.Shadows.shadowOf;
 
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothStatusCodes;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import java.util.UUID;
 import org.junit.Before;
@@ -86,28 +89,65 @@
   }
 
   @Test
+  @Config(maxSdk = S_V2)
   public void scanMode_getAndSet_connectable() throws Exception {
-    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isTrue();
+    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isEqualTo(
+        true);
     assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
   }
 
   @Test
+  @Config(maxSdk = S_V2)
   public void scanMode_getAndSet_discoverable() throws Exception {
     assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE))
-        .isTrue();
+        .isEqualTo(true);
     assertThat(bluetoothAdapter.getScanMode())
         .isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
   }
 
   @Test
+  @Config(maxSdk = S_V2)
   public void scanMode_getAndSet_none() throws Exception {
-    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isTrue();
+    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isEqualTo(true);
     assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_NONE);
   }
 
   @Test
+  @Config(maxSdk = S_V2)
   public void scanMode_getAndSet_invalid() throws Exception {
-    assertThat(bluetoothAdapter.setScanMode(9999)).isFalse();
+    assertThat(bluetoothAdapter.setScanMode(9999)).isEqualTo(false);
+  }
+
+
+  @Test
+  @Config(minSdk = TIRAMISU)
+  public void scanMode_getAndSet_connectable_min_T() throws Exception {
+    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE)).isEqualTo(
+        BluetoothStatusCodes.SUCCESS);
+    assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
+  }
+
+  @Test
+  @Config(minSdk = TIRAMISU)
+  public void scanMode_getAndSet_discoverable_min_T() throws Exception {
+    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE))
+        .isEqualTo(BluetoothStatusCodes.SUCCESS);
+    assertThat(bluetoothAdapter.getScanMode())
+        .isEqualTo(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
+  }
+
+  @Test
+  @Config(minSdk = TIRAMISU)
+  public void scanMode_getAndSet_none_min_T() throws Exception {
+    assertThat(bluetoothAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_NONE)).isEqualTo(
+        BluetoothStatusCodes.SUCCESS);
+    assertThat(bluetoothAdapter.getScanMode()).isEqualTo(BluetoothAdapter.SCAN_MODE_NONE);
+  }
+
+  @Test
+  @Config(minSdk = TIRAMISU)
+  public void scanMode_getAndSet_invalid_min_T() throws Exception {
+    assertThat(bluetoothAdapter.setScanMode(9999)).isEqualTo(BluetoothStatusCodes.ERROR_UNKNOWN);
   }
 
   @Test
diff --git a/run_robolectric_module_tests.mk b/run_robolectric_module_tests.mk
index d65793d..f8d5840 100644
--- a/run_robolectric_module_tests.mk
+++ b/run_robolectric_module_tests.mk
@@ -53,6 +53,7 @@
   $(android_all_source_dir)/android-all-9-robolectric-4913185-2.jar:$(android_all_target_dir)/android-all-9-robolectric-4913185-2.jar \
   $(android_all_source_dir)/android-all-9plus-robolectric-5616371.jar:$(android_all_target_dir)/android-all-9plus-robolectric-5616371.jar \
   $(android_all_source_dir)/android-all-R-beta2-robolectric-6625208.jar:$(android_all_target_dir)/android-all-R-beta2-robolectric-6625208.jar \
+  $(android_all_source_dir)/android-all-S-beta3-robolectric-7541949.jar:$(android_all_target_dir)/android-all-S-beta3-robolectric-7541949.jar \
   $(local_android_all_source_jar):$(android_all_target_dir)/android-all-current-robolectric-r0.jar
 copy_android_all_jars := $(call copy-many-files, $(copy_android_all_jar_pairs))
 
diff --git a/run_robotests.mk b/run_robotests.mk
index 262e916..b5a6ee4 100644
--- a/run_robotests.mk
+++ b/run_robotests.mk
@@ -136,6 +136,7 @@
       $(android_all_lib_path)/android-all-9-robolectric-4913185-2.jar:$(my_robolectric_path)/android-all-9-robolectric-4913185-2.jar \
       $(android_all_lib_path)/android-all-10-robolectric-5803371.jar:$(my_robolectric_path)/android-all-10-robolectric-5803371.jar \
       $(android_all_lib_path)/android-all-R-beta2-robolectric-6625208.jar:$(my_robolectric_path)/android-all-R-beta2-robolectric-6625208.jar \
+      $(android_all_lib_path)/android-all-S-beta3-robolectric-7541949.jar:$(my_robolectric_path)/android-all-S-beta3-robolectric-7541949.jar \
       $(local_android_all_source_jar):$(my_robolectric_path)/android-all-current-robolectric-r0.jar
     copy_android_all_jars := $(call copy-many-files, $(copy_android_all_jar_pairs))
 
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
index f41493e..8291517 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowActivityThread.java
@@ -42,7 +42,7 @@
               throws Exception {
             if (method.getName().equals("getApplicationInfo")) {
               String packageName = (String) args[0];
-              int flags = (Integer) args[1];
+              int flags = ((Number) args[1]).intValue();
 
               if (packageName.equals(ShadowActivityThread.applicationInfo.packageName)) {
                 return ShadowActivityThread.applicationInfo;
@@ -57,7 +57,7 @@
               }
             } else if (method.getName().equals("getActivityInfo")) {
               ComponentName className = (ComponentName) args[0];
-              int flags = (Integer) args[1];
+              int flags = ((Number) args[1]).intValue();
 
               try {
                 return RuntimeEnvironment.application
@@ -68,7 +68,7 @@
               }
             } else if (method.getName().equals("getServiceInfo")) {
               ComponentName className = (ComponentName) args[0];
-              int flags = (Integer) args[1];
+              int flags = ((Number) args[1]).intValue();
 
               try {
                 return RuntimeEnvironment.application
@@ -78,7 +78,7 @@
                 throw new RemoteException(e.getMessage());
               }
             } else if (method.getName().equals("getInstalledApplications")) {
-              int flags = (Integer) args[0];
+              int flags = ((Number) args[0]).intValue();
               int userId = (Integer) args[1];
               return new ParceledListSlice<>(
                   RuntimeEnvironment.application
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
index e184e4d..ddfca82 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowBluetoothAdapter.java
@@ -2,6 +2,7 @@
 
 import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
 import static android.os.Build.VERSION_CODES.LOLLIPOP;
+import static android.os.Build.VERSION_CODES.TIRAMISU;
 
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothAdapter.LeScanCallback;
@@ -9,6 +10,7 @@
 import android.bluetooth.BluetoothProfile;
 import android.bluetooth.BluetoothServerSocket;
 import android.bluetooth.BluetoothSocket;
+import android.bluetooth.BluetoothStatusCodes;
 import android.os.ParcelUuid;
 import java.util.Collections;
 import java.util.HashMap;
@@ -18,9 +20,10 @@
 import java.util.UUID;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
+import org.robolectric.RuntimeEnvironment;
 
 @SuppressWarnings({"UnusedDeclaration"})
-@Implements(BluetoothAdapter.class)
+@Implements(value = BluetoothAdapter.class, looseSignatures = true)
 public class ShadowBluetoothAdapter {
   private static final int ADDRESS_LENGTH = 17;
 
@@ -140,15 +143,16 @@
   }
 
   @Implementation
-  protected boolean setScanMode(int scanMode) {
+  protected Object setScanMode(int scanMode) {
     if (scanMode != BluetoothAdapter.SCAN_MODE_CONNECTABLE
         && scanMode != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE
         && scanMode != BluetoothAdapter.SCAN_MODE_NONE) {
-      return false;
+        return (RuntimeEnvironment.getApiLevel() >= TIRAMISU) ?
+                BluetoothStatusCodes.ERROR_UNKNOWN : false;
     }
-
     this.scanMode = scanMode;
-    return true;
+    return (RuntimeEnvironment.getApiLevel() >= TIRAMISU) ?
+            BluetoothStatusCodes.SUCCESS : true;
   }
 
   @Implementation
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
index 2b29bdb..51cf6bb 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowContextImpl.java
@@ -242,6 +242,13 @@
   }
 
   @Implementation
+  protected Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
+            String broadcastPermission, Handler scheduler, int flags) {
+    return getShadowInstrumentation()
+        .registerReceiver(receiver, filter, broadcastPermission, scheduler, realContextImpl);
+  }
+
+  @Implementation
   protected Intent registerReceiver(
       BroadcastReceiver receiver,
       IntentFilter filter,
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
index 8f730a9..b9691d1 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowDisplayManagerGlobal.java
@@ -81,7 +81,7 @@
     }
 
     // @Override // todo: use @Implements/@Implementation for signature checking
-    public int[] getDisplayIds() throws RemoteException {
+    public int[] getDisplayIds(boolean includeDisabledDisplays) throws RemoteException {
       int[] ids = new int[displayInfos.size()];
       int i = 0;
       for (Integer displayId : displayInfos.keySet()) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
index d8a3011..56b93ba 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowPackageManager.java
@@ -53,11 +53,11 @@
 import android.content.pm.PackageParser.Component;
 import android.content.pm.PackageParser.Package;
 import android.content.pm.PackageStats;
-import android.content.pm.PackageUserState;
 import android.content.pm.PermissionGroupInfo;
 import android.content.pm.PermissionInfo;
 import android.content.pm.ResolveInfo;
 import android.content.pm.Signature;
+import android.content.pm.pkg.FrameworkPackageUserState;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
@@ -775,7 +775,7 @@
               0,
               0,
               new HashSet<String>(),
-              new PackageUserState());
+              FrameworkPackageUserState.DEFAULT);
     } else if (RuntimeEnvironment.getApiLevel() >= LOLLIPOP_MR1) {
       packageInfo =
           ReflectionHelpers.callStaticMethod(
@@ -788,7 +788,7 @@
               ReflectionHelpers.ClassParameter.from(long.class, 0L),
               ReflectionHelpers.ClassParameter.from(ArraySet.class, new ArraySet<>()),
               ReflectionHelpers.ClassParameter.from(
-                  PackageUserState.class, new PackageUserState()));
+                FrameworkPackageUserState.class, FrameworkPackageUserState.DEFAULT));
     } else if (RuntimeEnvironment.getApiLevel() >= JELLY_BEAN_MR1) {
       packageInfo =
           ReflectionHelpers.callStaticMethod(
@@ -801,7 +801,7 @@
               ReflectionHelpers.ClassParameter.from(long.class, 0L),
               ReflectionHelpers.ClassParameter.from(HashSet.class, new HashSet<>()),
               ReflectionHelpers.ClassParameter.from(
-                  PackageUserState.class, new PackageUserState()));
+                FrameworkPackageUserState.class, FrameworkPackageUserState.DEFAULT));
     } else {
       packageInfo =
           ReflectionHelpers.callStaticMethod(
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
index 224f016..61a4174 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowSystemServiceRegistry.java
@@ -22,7 +22,7 @@
 
     Class staticApplicationServiceFetcherClass = null;
     if (RuntimeEnvironment.getApiLevel() >= Build.VERSION_CODES.N
-       && RuntimeEnvironment.getApiLevel() < Build.VERSION_CODES.S) {
+      && RuntimeEnvironment.getApiLevel() < Build.VERSION_CODES.S) {
        staticApplicationServiceFetcherClass =
            classForName("android.app.SystemServiceRegistry$StaticApplicationContextServiceFetcher");
     } else if (RuntimeEnvironment.getApiLevel() == Build.VERSION_CODES.M) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
index 44996fa..e1625d1 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowUserManager.java
@@ -7,6 +7,7 @@
 import static android.os.Build.VERSION_CODES.N;
 import static android.os.Build.VERSION_CODES.N_MR1;
 import static android.os.Build.VERSION_CODES.R;
+import static android.os.Build.VERSION_CODES.TIRAMISU;
 
 import static org.robolectric.shadow.api.Shadow.directlyOn;
 
@@ -258,6 +259,12 @@
   protected boolean hasUserRestrictionForUser(String restrictionKey, UserHandle userHandle) {
     return hasUserRestriction(restrictionKey, userHandle);
   }
+
+  @Implementation(minSdk = TIRAMISU)
+  protected boolean hasUserRestrictionForUser(String restrictionKey, int userId) {
+    Bundle bundle = userRestrictions.get(userId);
+    return bundle != null && bundle.getBoolean(restrictionKey);
+  }
   // END-INTERNAL
 
   public void setUserRestriction(UserHandle userHandle, String restrictionKey, boolean value) {
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
index c42e507..ad17119 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowViewRootImpl.java
@@ -11,10 +11,11 @@
 import android.util.MergedConfiguration;
 import android.view.Display;
 import android.view.IWindowSession;
+import android.view.InsetsState;
 import android.view.ViewRootImpl;
 import android.view.WindowManager;
 import android.window.ClientWindowFrames;
-import java.util.ArrayList;
+
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
@@ -23,6 +24,8 @@
 import org.robolectric.util.ReflectionHelpers;
 import org.robolectric.util.ReflectionHelpers.ClassParameter;
 
+import java.util.ArrayList;
+
 @Implements(value = ViewRootImpl.class, isInAndroidSdk = false)
 public class ShadowViewRootImpl {
 
@@ -150,7 +153,7 @@
               ClassParameter.from(android.view.DisplayCutout.ParcelableWrapper.class,
                       new android.view.DisplayCutout.ParcelableWrapper()));
       // END-INTERNAL
-    } else if (apiLevel >= Build.VERSION_CODES.S) {
+    } else if (apiLevel <= Build.VERSION_CODES.S_V2) {
       // BEGIN-INTERNAL
       ReflectionHelpers.callInstanceMethod(ViewRootImpl.class, component, "dispatchResized",
               ClassParameter.from(ClientWindowFrames.class, clientWindowFrame),
@@ -160,6 +163,19 @@
               ClassParameter.from(boolean.class, false),
               ClassParameter.from(int.class, 0));
       // END-INTERNAL
+    } else if (apiLevel >= Build.VERSION_CODES.TIRAMISU) {
+      // BEGIN-INTERNAL
+      ReflectionHelpers.callInstanceMethod(ViewRootImpl.class, component, "dispatchResized",
+              ClassParameter.from(ClientWindowFrames.class, clientWindowFrame),
+              ClassParameter.from(boolean.class, true),
+              ClassParameter.from(MergedConfiguration.class, new MergedConfiguration()),
+              ClassParameter.from(InsetsState.class, new InsetsState()),
+              ClassParameter.from(boolean.class, false),
+              ClassParameter.from(boolean.class, false),
+              ClassParameter.from(int.class, 0),
+              ClassParameter.from(int.class, 0),
+              ClassParameter.from(int.class, 0));
+      // END-INTERNAL
     } else {
       throw new RuntimeException("Could not find AndroidRuntimeAdapter for API level: " + apiLevel);
     }
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
index a2dca62..ef2e463 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowWifiInfo.java
@@ -61,9 +61,9 @@
   private static Object getWifiSsid(String ssid) {
     WifiSsid wifiSsid;
     if (ssid.startsWith("0x")) {
-      wifiSsid = WifiSsid.createFromHex(ssid);
+      wifiSsid = WifiSsid.fromString(ssid.substring(2));
     } else {
-      wifiSsid = WifiSsid.createFromAsciiEncoded(ssid);
+      wifiSsid = WifiSsid.fromUtf8Text(ssid);
     }
     return wifiSsid;
   }