summaryrefslogtreecommitdiff
path: root/packages/DynamicSystemInstallationService/src
diff options
context:
space:
mode:
authorPo-Chien Hsueh <pchsueh@google.com>2019-03-21 17:16:06 +0800
committerPo-Chien Hsueh <pchsueh@google.com>2019-03-21 17:26:20 +0800
commitc51cf0f76a2bd7ce96c3f12000ef3dbe6008396e (patch)
tree4f361758f0b77ae901dc41e93005f9f98805697a /packages/DynamicSystemInstallationService/src
parenta5bd084a44ab3b607a690fd219a3a9111b158eac (diff)
Send URL using Uri instead of String
Per API review, send the system image file path to the installation service using Uri. Bug: 126613281 Test: adb shell am start-activity -d URL Change-Id: Ib46d3604c16a981b4ae1a571afa96ffdda7a7262
Diffstat (limited to 'packages/DynamicSystemInstallationService/src')
-rw-r--r--packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java6
-rw-r--r--packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java10
-rw-r--r--packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java8
3 files changed, 16 insertions, 8 deletions
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
index e479e387b95a..2ad72eb725a9 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
@@ -221,12 +221,12 @@ public class DynamicSystemInstallationService extends Service
return;
}
- String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL);
+ String url = intent.getDataString();
mSystemSize = intent.getLongExtra(DynamicSystemClient.KEY_SYSTEM_SIZE, 0);
mUserdataSize = intent.getLongExtra(DynamicSystemClient.KEY_USERDATA_SIZE, 0);
mInstallTask = new InstallationAsyncTask(
- url, mSystemSize, mUserdataSize, mDynSystem, this);
+ url, mSystemSize, mUserdataSize, this, mDynSystem, this);
mInstallTask.execute();
@@ -410,7 +410,7 @@ public class DynamicSystemInstallationService extends Service
}
private boolean verifyRequest(Intent intent) {
- String url = intent.getStringExtra(DynamicSystemClient.KEY_SYSTEM_URL);
+ String url = intent.getDataString();
return VerificationActivity.isVerified(url);
}
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java
index aee5de5efd5e..b0e28a029436 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java
@@ -16,7 +16,9 @@
package com.android.dynsystem;
+import android.content.Context;
import android.gsi.GsiProgress;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.image.DynamicSystemManager;
import android.util.Log;
@@ -59,6 +61,7 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> {
private final String mUrl;
private final long mSystemSize;
private final long mUserdataSize;
+ private final Context mContext;
private final DynamicSystemManager mDynSystem;
private final InstallStatusListener mListener;
private DynamicSystemManager.Session mInstallationSession;
@@ -68,11 +71,12 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> {
private InputStream mStream;
- InstallationAsyncTask(String url, long systemSize, long userdataSize,
+ InstallationAsyncTask(String url, long systemSize, long userdataSize, Context context,
DynamicSystemManager dynSystem, InstallStatusListener listener) {
mUrl = url;
mSystemSize = systemSize;
mUserdataSize = userdataSize;
+ mContext = context;
mDynSystem = dynSystem;
mListener = listener;
}
@@ -197,6 +201,10 @@ class InstallationAsyncTask extends AsyncTask<String, Long, Throwable> {
private void initInputStream() throws IOException, InvalidImageUrlException {
if (URLUtil.isNetworkUrl(mUrl) || URLUtil.isFileUrl(mUrl)) {
mStream = new BufferedInputStream(new GZIPInputStream(new URL(mUrl).openStream()));
+ } else if (URLUtil.isContentUrl(mUrl)) {
+ Uri uri = Uri.parse(mUrl);
+ mStream = new BufferedInputStream(new GZIPInputStream(
+ mContext.getContentResolver().openInputStream(uri)));
} else {
throw new InvalidImageUrlException(
String.format(Locale.US, "Unsupported file source: %s", mUrl));
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java
index f05930f8ec07..269645d8016b 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java
@@ -17,13 +17,13 @@
package com.android.dynsystem;
import static android.os.image.DynamicSystemClient.KEY_SYSTEM_SIZE;
-import static android.os.image.DynamicSystemClient.KEY_SYSTEM_URL;
import static android.os.image.DynamicSystemClient.KEY_USERDATA_SIZE;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Context;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.image.DynamicSystemClient;
@@ -81,16 +81,16 @@ public class VerificationActivity extends Activity {
// retrieve data from calling intent
Intent callingIntent = getIntent();
- String url = callingIntent.getStringExtra(KEY_SYSTEM_URL);
+ Uri url = callingIntent.getData();
long systemSize = callingIntent.getLongExtra(KEY_SYSTEM_SIZE, 0);
long userdataSize = callingIntent.getLongExtra(KEY_USERDATA_SIZE, 0);
- sVerifiedUrl = url;
+ sVerifiedUrl = url.toString();
// start service
Intent intent = new Intent(this, DynamicSystemInstallationService.class);
+ intent.setData(url);
intent.setAction(DynamicSystemClient.ACTION_START_INSTALL);
- intent.putExtra(KEY_SYSTEM_URL, url);
intent.putExtra(KEY_SYSTEM_SIZE, systemSize);
intent.putExtra(KEY_USERDATA_SIZE, userdataSize);