summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Leme <felipeal@google.com>2021-02-01 04:45:24 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-02-01 04:45:24 +0000
commitd2bfe8ccc9ce3a445be07656c040d3871108fb4f (patch)
tree002c250f1a63880edc4d86a1ba929a823f92fd5b
parent9ce4eb1210fc3afe5c543bc4e83c3b1d8678d366 (diff)
parent7ebcbed4cf96ed6aaceb60ae2590f226aabf26f8 (diff)
downloadProvision-d2bfe8ccc9ce3a445be07656c040d3871108fb4f.tar.gz
Implement dump(), so it can be used to add more DPCs. am: 7ebcbed4cf
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Car/Provision/+/13419387 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: I0d26fb7b4daad3470667209f4207357ffd3358e7
-rw-r--r--src/com/android/car/provision/DefaultActivity.java85
-rw-r--r--src/com/android/car/provision/DpcInfo.java8
2 files changed, 88 insertions, 5 deletions
diff --git a/src/com/android/car/provision/DefaultActivity.java b/src/com/android/car/provision/DefaultActivity.java
index 347c6b1..a0534cc 100644
--- a/src/com/android/car/provision/DefaultActivity.java
+++ b/src/com/android/car/provision/DefaultActivity.java
@@ -55,6 +55,8 @@ import android.widget.TextView;
import com.android.car.setupwizardlib.util.CarDrivingStateMonitor;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -169,6 +171,7 @@ public final class DefaultActivity extends Activity {
mFinishSetupButton.setOnClickListener((v) -> finishSetup());
mFactoryResetButton.setOnClickListener((v) -> factoryReset());
+ updateUi();
setManagedProvisioning(dpm);
startMonitor();
}
@@ -190,6 +193,82 @@ public final class DefaultActivity extends Activity {
super.finish();
};
+ @Override
+ public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) {
+ if (args == null || args.length == 0) {
+ showDpcs(pw);
+ showHelp(pw);
+ return;
+ }
+
+ if (args[0].equals("--help")) {
+ showHelp(pw);
+ return;
+ }
+
+ addDpc(pw, args);
+ };
+
+ private void showDpcs(PrintWriter pw) {
+ pw.printf("%d DPCs\n", sSupportedDpcApps.size());
+ sSupportedDpcApps.forEach((dpc) -> pw.printf("\t%s\n", dpc));
+ }
+
+ private void showHelp(PrintWriter pw) {
+ pw.println("\nTo add a new DPC, use: --name name --package-name package-name"
+ + "--receiver-name receiver-name [--legacy-activity-name legacy-activity-name] "
+ + "[--checksum checksum] [--download-url download-url]");
+ }
+
+ private void addDpc(PrintWriter pw, String[] args) {
+ String name = null;
+ String packageName = null;
+ String legacyActivityName = null;
+ String receiverName = null;
+ String checkSum = null;
+ String downloadUrl = null;
+
+ for (int i = 0; i < args.length; i++) {
+ try {
+ switch (args[i]) {
+ case "--name":
+ name = args[++i];
+ break;
+ case "--package-name":
+ packageName = args[++i];
+ break;
+ case "--legacy-activity-name":
+ legacyActivityName = args[++i];
+ break;
+ case "--receiver-name":
+ receiverName = args[++i];
+ break;
+ case "--checksum":
+ checkSum = args[++i];
+ break;
+ case "--download-url":
+ downloadUrl = args[++i];
+ break;
+ default:
+ pw.printf("Invalid option at index %d: %s\n", i, args[i]);
+ return;
+ }
+ } catch (Exception e) {
+ // most likely a missing arg...
+ pw.printf("Error handing arg %d: %s\n", i, e);
+ return;
+ }
+ }
+
+ DpcInfo dpc = new DpcInfo(name, packageName, legacyActivityName, receiverName, checkSum,
+ downloadUrl);
+ Log.i(TAG, "Adding new DPC from dump(): " + dpc);
+ sSupportedDpcApps.add(dpc);
+ pw.printf("Added new DPC: %s\n", dpc);
+
+ updateUi();
+ }
+
private void stopMonitor() {
if (mDrivingStateExitReceiver != null) {
unregisterReceiver(mDrivingStateExitReceiver);
@@ -200,15 +279,17 @@ public final class DefaultActivity extends Activity {
}
}
- private void setManagedProvisioning(DevicePolicyManager dpm) {
+ private void updateUi() {
String[] appNames = new String[sSupportedDpcApps.size()];
for (int i = 0; i < sSupportedDpcApps.size(); i++) {
appNames[i] = sSupportedDpcApps.get(i).name;
}
-
mDpcAppsSpinner.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, appNames));
+ mDpcAppsSpinner.setSelection(appNames.length - 1);
+ }
+ private void setManagedProvisioning(DevicePolicyManager dpm) {
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)) {
Log.i(TAG, "Disabling provisioning buttons because device does not have the "
diff --git a/src/com/android/car/provision/DpcInfo.java b/src/com/android/car/provision/DpcInfo.java
index 1c44107..4b88c4a 100644
--- a/src/com/android/car/provision/DpcInfo.java
+++ b/src/com/android/car/provision/DpcInfo.java
@@ -17,6 +17,8 @@ package com.android.car.provision;
import android.content.ComponentName;
+import java.util.Objects;
+
/**
* Info about a Device Policy Controller app.
*/
@@ -31,10 +33,10 @@ final class DpcInfo {
DpcInfo(String name, String packageName, String legacyActivityName,
String receiverName, String checkSum, String downloadUrl) {
- this.name = name;
- this.packageName = packageName;
+ this.name = Objects.requireNonNull(name, "name cannot be null");
+ this.packageName = Objects.requireNonNull(packageName, "packageName cannot be null");
+ this.mReceiverName = Objects.requireNonNull(receiverName, "receiverName cannot be null");
this.mLegacyActivityName = legacyActivityName;
- this.mReceiverName = receiverName;
this.checkSum = checkSum;
this.downloadUrl = downloadUrl;
}