Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 244e560c authored by Po-Chien Hsueh's avatar Po-Chien Hsueh Committed by Android (Google) Code Review
Browse files

Merge "Send URL using Uri instead of String"

parents 052d9214 c51cf0f7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -5650,8 +5650,8 @@ package android.os.image {
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void bind();
    method public void setOnStatusChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
    method public void setOnStatusChangedListener(@NonNull android.os.image.DynamicSystemClient.OnStatusChangedListener);
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull String, long);
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull String, long, long);
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull android.net.Uri, long);
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void start(@NonNull android.net.Uri, long, long);
    method @RequiresPermission("android.permission.MANAGE_DYNAMIC_SYSTEM") public void unbind();
    field public static final int CAUSE_ERROR_EXCEPTION = 6; // 0x6
    field public static final int CAUSE_ERROR_INVALID_URL = 4; // 0x4
+4 −9
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -206,12 +207,6 @@ public class DynamicSystemClient {
    /*
     * Intent Keys
     */
    /**
     * Intent key: URL to system image.
     * @hide
     */
    public static final String KEY_SYSTEM_URL = "KEY_SYSTEM_URL";

    /**
     * Intent key: Size of system image, in bytes.
     * @hide
@@ -366,7 +361,7 @@ public class DynamicSystemClient {
     * @param systemSize size of system image.
     */
    @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM)
    public void start(@NonNull String systemUrl, @BytesLong long systemSize) {
    public void start(@NonNull Uri systemUrl, @BytesLong long systemSize) {
        start(systemUrl, systemSize, DEFAULT_USERDATA_SIZE);
    }

@@ -383,16 +378,16 @@ public class DynamicSystemClient {
     * @param userdataSize bytes reserved for userdata.
     */
    @RequiresPermission(android.Manifest.permission.MANAGE_DYNAMIC_SYSTEM)
    public void start(@NonNull String systemUrl, @BytesLong long systemSize,
    public void start(@NonNull Uri systemUrl, @BytesLong long systemSize,
            @BytesLong long userdataSize) {
        Intent intent = new Intent();

        intent.setClassName("com.android.dynsystem",
                "com.android.dynsystem.VerificationActivity");

        intent.setData(systemUrl);
        intent.setAction(ACTION_START_INSTALL);

        intent.putExtra(KEY_SYSTEM_URL, systemUrl);
        intent.putExtra(KEY_SYSTEM_SIZE, systemSize);
        intent.putExtra(KEY_USERDATA_SIZE, userdataSize);

+3 −3
Original line number Diff line number Diff line
@@ -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);
    }
+9 −1
Original line number Diff line number Diff line
@@ -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));
+4 −4
Original line number Diff line number Diff line
@@ -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);