Merge "Check for bad attributes in StreamRecorder." into oreo-cts-dev
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
index e5d1531..db0ab08 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
@@ -18,11 +18,11 @@
 
 import static android.os.UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES;
 
-import android.app.NotificationChannel;
-import android.app.admin.DevicePolicyManager;
 import android.app.KeyguardManager;
 import android.app.Notification;
+import android.app.NotificationChannel;
 import android.app.NotificationManager;
+import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -30,19 +30,20 @@
 import android.graphics.Color;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
 import android.os.UserManager;
 import android.provider.MediaStore;
 import android.support.v4.content.FileProvider;
 import android.support.v4.util.Pair;
 import android.util.Log;
 
+import com.android.cts.verifier.R;
+import com.android.cts.verifier.location.LocationListenerActivity;
+import com.android.cts.verifier.managedprovisioning.ByodPresentMediaDialog.DialogCallback;
+
 import java.io.File;
 import java.util.ArrayList;
 
-import com.android.cts.verifier.location.LocationListenerActivity;
-import com.android.cts.verifier.R;
-import com.android.cts.verifier.managedprovisioning.ByodPresentMediaDialog.DialogCallback;
-
 /**
  * A helper activity from the managed profile side that responds to requests from CTS verifier in
  * primary user. Profile owner APIs are accessible inside this activity (given this activity is
@@ -169,6 +170,8 @@
 
     private ArrayList<File> mTempFiles = new ArrayList<File>();
 
+    private Handler mMainThreadHandler;
+
     private void showNotification(int visibility) {
         final Notification notification = new Notification.Builder(this, NOTIFICATION_CHANNEL_ID)
                 .setSmallIcon(R.drawable.icon)
@@ -184,6 +187,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        mMainThreadHandler = new Handler(getMainLooper());
         if (savedInstanceState != null) {
             Log.w(TAG, "Restored state");
             mOriginalRestrictions = savedInstanceState.getBundle(ORIGINAL_RESTRICTIONS_NAME);
@@ -234,15 +238,16 @@
                 setUnknownSourcesRestriction(!allowNonMarket);
                 mOriginalRestrictions.putBoolean(DISALLOW_INSTALL_UNKNOWN_SOURCES, !wasAllowed);
             }
+            // Start the installer activity until this activity is rendered to workaround a glitch.
+            mMainThreadHandler.post(() -> {
+                // Request to install a non-market application- easiest way is to reinstall ourself
+                final Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE)
+                        .setData(Uri.parse("package:" + getPackageName()))
+                        .putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true)
+                        .putExtra(Intent.EXTRA_RETURN_RESULT, true);
+                startActivityForResult(installIntent, REQUEST_INSTALL_PACKAGE);
 
-            // Request to install a non-market application- easiest way is to reinstall ourself
-            final Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE)
-                    .setData(Uri.parse("package:" + getPackageName()))
-                    .putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true)
-                    .putExtra(Intent.EXTRA_RETURN_RESULT, true)
-                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            startActivityForResult(installIntent, REQUEST_INSTALL_PACKAGE);
-
+            });
             // Not yet ready to finish- wait until the result comes back
             return;
             // Queried by CtsVerifier in the primary side using startActivityForResult.
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
index 3a20387..2c44030 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
@@ -108,11 +108,11 @@
             Settings.ACTION_WIRELESS_SETTINGS,
             Settings.ACTION_WIFI_SETTINGS,
             Settings.ACTION_DEVICE_INFO_SETTINGS,
-            Settings.ACTION_PRIVACY_SETTINGS,
+            Settings.ACTION_SETTINGS,
             Settings.ACTION_DEVICE_INFO_SETTINGS,
             Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,
             Settings.ACTION_SYNC_SETTINGS,
-            Settings.ACTION_WIRELESS_SETTINGS,
+            Settings.ACTION_SETTINGS,
             Settings.ACTION_NFC_SETTINGS,
             Settings.ACTION_SETTINGS,
             Settings.ACTION_SETTINGS,