Merge "Merge "Enable the airplane mode before test execute" into pie-cts-dev am: 8662fe2b53"
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/SystemUpdatePolicyTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/SystemUpdatePolicyTest.java
index 4fa6235..e5598bb 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/SystemUpdatePolicyTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/SystemUpdatePolicyTest.java
@@ -15,6 +15,7 @@
*/
package com.android.cts.deviceowner;
+import static android.provider.Settings.Global.AIRPLANE_MODE_ON;
import android.app.admin.DevicePolicyManager;
import android.app.admin.FreezePeriod;
@@ -27,12 +28,17 @@
import android.icu.util.Calendar;
import android.provider.Settings;
import android.provider.Settings.Global;
+import android.util.Log;
import android.util.Pair;
+import android.provider.Settings;
+import android.provider.Settings.Global;
+
import java.time.LocalDate;
import java.time.MonthDay;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -42,7 +48,10 @@
*/
public class SystemUpdatePolicyTest extends BaseDeviceOwnerTest {
+ private static final String TAG = "SystemUpdatePolicyTest";
+
private static final int TIMEOUT_MS = 20_000;
+ private static final int TIMEOUT_SEC = 5;
private final Semaphore mPolicyChangedSemaphore = new Semaphore(0);
private final Semaphore mTimeChangedSemaphore = new Semaphore(0);
@@ -61,6 +70,7 @@
private int mSavedAutoTimeConfig;
private LocalDate mSavedSystemDate;
private boolean mRestoreDate;
+ private int mSavedAirplaneMode;
@Override
protected void setUp() throws Exception {
@@ -75,6 +85,12 @@
executeShellCommand("settings put global auto_time 0");
mSavedSystemDate = LocalDate.now();
mRestoreDate = false;
+ mSavedAirplaneMode = getAirplaneMode();
+ Log.i(TAG, "Before testing, AIRPLANE_MODE is set to: " + mSavedAirplaneMode);
+ if (mSavedAirplaneMode == 0) {
+ // No need to set mode if AirplaneMode is 1 or error.
+ setAirplaneModeAndWaitBroadcast(1);
+ }
}
@Override
@@ -89,6 +105,10 @@
// This needs to happen last since setSystemDate() relies on the receiver for
// synchronization.
mContext.unregisterReceiver(policyChangedReceiver);
+ if (mSavedAirplaneMode == 0) {
+ // Restore AirplaneMode value.
+ setAirplaneModeAndWaitBroadcast(0);
+ }
super.tearDown();
}
@@ -341,4 +361,42 @@
fail("Interrupted while waiting for broadcast.");
}
}
+
+ private int getAirplaneMode() throws Settings.SettingNotFoundException {
+ int airplaneMode = 0xFF;
+ try {
+ airplaneMode = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON);
+ } catch (Settings.SettingNotFoundException e) {
+ airplaneMode = 0xFF;
+ // if the mode is not supported, return a non zero value.
+ Log.i(TAG, "Airplane mode is not found in Settings. Skipping AirplaneMode update");
+ } finally {
+ return airplaneMode;
+ }
+ }
+
+ private boolean setAirplaneModeAndWaitBroadcast (int state) throws Exception {
+ Log.i(TAG, "setAirplaneModeAndWaitBroadcast setting state(0=disable, 1=enable): " + state);
+
+ final CountDownLatch latch = new CountDownLatch(1);
+ BroadcastReceiver receiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(TAG, "Received broadcast for AirplaneModeUpdate");
+ latch.countDown();
+ }
+ };
+ mContext.registerReceiver(receiver, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED));
+ try {
+ Settings.Global.putInt(mContext.getContentResolver(), AIRPLANE_MODE_ON, state);
+ if (!latch.await(TIMEOUT_SEC, TimeUnit.SECONDS)) {
+ Log.d(TAG, "Failed to receive broadcast in " + TIMEOUT_SEC + "sec");
+ return false;
+ }
+ } finally {
+ mContext.unregisterReceiver(receiver);
+ }
+ return true;
+ }
}