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

Commit 6381d619 authored by Songchun Fan's avatar Songchun Fan
Browse files

make IDataLoaderManager and IDataLoader stable interfaces

Instead of using Bundle, explicitly specify params when initializing a data loader.

BUG: 150406132
Test: atest PackageManagerShellCommandIncrementalTest
Change-Id: I2f89d3c3ea1058fdbd689da0d5cb801bf4d9a0b4
parent 2c3f5d24
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -967,6 +967,10 @@ filegroup {
        "core/java/android/content/pm/DataLoaderParamsParcel.aidl",
        "core/java/android/content/pm/DataLoaderType.aidl",
        "core/java/android/content/pm/FileSystemControlParcel.aidl",
        "core/java/android/content/pm/IDataLoader.aidl",
        "core/java/android/content/pm/IDataLoaderManager.aidl",
        "core/java/android/content/pm/InstallationFileParcel.aidl",
        "core/java/android/content/pm/InstallationFileLocation.aidl",
        "core/java/android/content/pm/IDataLoaderStatusListener.aidl",
        "core/java/android/content/pm/IPackageInstallerSessionFileSystemConnector.aidl",
        "core/java/android/content/pm/NamedParcelFileDescriptor.aidl",
+1 −4
Original line number Diff line number Diff line
@@ -2018,16 +2018,13 @@ package android.content.pm {
    method @NonNull public final int getType();
  }
  public final class InstallationFile implements android.os.Parcelable {
  public final class InstallationFile {
    ctor public InstallationFile(int, @NonNull String, long, @Nullable byte[], @Nullable byte[]);
    method public int describeContents();
    method public long getLengthBytes();
    method public int getLocation();
    method @Nullable public byte[] getMetadata();
    method @NonNull public String getName();
    method @Nullable public byte[] getSignature();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallationFile> CREATOR;
  }
  public final class InstantAppInfo implements android.os.Parcelable {
+6 −10
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package android.content.pm;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Bundle;
import android.os.RemoteException;

/**
@@ -40,22 +39,19 @@ public class DataLoaderManager {
     * Finds a data loader binder service and binds to it. This requires PackageManager.
     *
     * @param dataLoaderId ID for the new data loader binder service.
     * @param params       Bundle that contains parameters to configure the data loader service.
     *                     Must contain:
     *                     key: "packageName", value: String, package name of data loader service
     *                     package;
     *                     key: "extras", value: Bundle, client-specific data structures
     *
     * @param params       DataLoaderParamsParcel object that contains data loader params, including
     *                     its package name, class name, and additional parameters.
     * @param control      FileSystemControlParcel that contains filesystem control handlers.
     * @param listener     Callback for the data loader service to report status back to the
     *                     caller.
     * @return false if 1) target ID collides with a data loader that is already bound to data
     * loader manager; 2) package name is not specified; 3) fails to find data loader package;
     * or 4) fails to bind to the specified data loader service, otherwise return true.
     */
    public boolean initializeDataLoader(int dataLoaderId, @NonNull Bundle params,
            @NonNull IDataLoaderStatusListener listener) {
    public boolean initializeDataLoader(int dataLoaderId, @NonNull DataLoaderParamsParcel params,
            @NonNull FileSystemControlParcel control, @NonNull IDataLoaderStatusListener listener) {
        try {
            return mService.initializeDataLoader(dataLoaderId, params, listener);
            return mService.initializeDataLoader(dataLoaderId, params, control, listener);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+7 −5
Original line number Diff line number Diff line
@@ -16,20 +16,22 @@

package android.content.pm;

import android.os.Bundle;
import android.content.pm.DataLoaderParamsParcel;
import android.content.pm.FileSystemControlParcel;
import android.content.pm.IDataLoaderStatusListener;
import android.content.pm.InstallationFile;
import android.content.pm.InstallationFileParcel;
import java.util.List;

/**
 * TODO: update with new APIs
 * @hide
 */
oneway interface IDataLoader {
   void create(int id, in Bundle params, IDataLoaderStatusListener listener);
   void create(int id, in DataLoaderParamsParcel params,
           in FileSystemControlParcel control,
           IDataLoaderStatusListener listener);
   void start();
   void stop();
   void destroy();

   void prepareImage(in List<InstallationFile> addedFiles, in List<String> removedFiles);
   void prepareImage(in InstallationFileParcel[] addedFiles, in @utf8InCpp String[] removedFiles);
}
+4 −3
Original line number Diff line number Diff line
@@ -16,14 +16,15 @@

package android.content.pm;

import android.os.Bundle;
import android.content.pm.DataLoaderParamsParcel;
import android.content.pm.FileSystemControlParcel;
import android.content.pm.IDataLoader;
import android.content.pm.IDataLoaderStatusListener;
import java.util.List;

/** @hide */
interface IDataLoaderManager {
    boolean initializeDataLoader(int id, in Bundle params, IDataLoaderStatusListener listener);
    boolean initializeDataLoader(int id, in DataLoaderParamsParcel params,
            in FileSystemControlParcel control, IDataLoaderStatusListener listener);
    IDataLoader getDataLoader(int dataLoaderId);
    void destroyDataLoader(int dataLoaderId);
}
 No newline at end of file
Loading