From 34684143dce78c71faa8b2960fb171c6d36c21bb Mon Sep 17 00:00:00 2001 From: Yan Wang Date: Wed, 4 Mar 2020 15:37:55 -0800 Subject: package-manager-native: Add aidl for package change event and observer. Iorapd, a native service to prefetch files during app startup, will register it as an observer via the package manager native service. Bug: 150742983 Test: Make and run on a blueline device and check the observer works. Change-Id: I98624fe563b83f5dd801f607fa2b31ab6f6998e7 --- libs/binder/Android.bp | 2 ++ .../android/content/pm/IPackageChangeObserver.aidl | 28 +++++++++++++++++++ .../android/content/pm/IPackageManagerNative.aidl | 11 ++++++++ .../android/content/pm/PackageChangeEvent.aidl | 32 ++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 libs/binder/aidl/android/content/pm/IPackageChangeObserver.aidl create mode 100644 libs/binder/aidl/android/content/pm/PackageChangeEvent.aidl diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index bc541f4d31..e6cfeb4943 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -158,7 +158,9 @@ cc_library { filegroup { name: "libbinder_aidl", srcs: [ + "aidl/android/content/pm/IPackageChangeObserver.aidl", "aidl/android/content/pm/IPackageManagerNative.aidl", + "aidl/android/content/pm/PackageChangeEvent.aidl", "aidl/android/os/IClientCallback.aidl", "aidl/android/os/IServiceCallback.aidl", "aidl/android/os/IServiceManager.aidl", diff --git a/libs/binder/aidl/android/content/pm/IPackageChangeObserver.aidl b/libs/binder/aidl/android/content/pm/IPackageChangeObserver.aidl new file mode 100644 index 0000000000..6929a6cb49 --- /dev/null +++ b/libs/binder/aidl/android/content/pm/IPackageChangeObserver.aidl @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +import android.content.pm.PackageChangeEvent; + +/** + * This is a non-blocking notification when a package has changed. + * + * @hide + */ +oneway interface IPackageChangeObserver { + void onPackageChanged(in PackageChangeEvent event); +} diff --git a/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl b/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl index 618f88c66d..dc8d74c052 100644 --- a/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl +++ b/libs/binder/aidl/android/content/pm/IPackageManagerNative.aidl @@ -17,6 +17,8 @@ package android.content.pm; +import android.content.pm.IPackageChangeObserver; + /** * Parallel implementation of certain {@link PackageManager} APIs that need to * be exposed to native code. @@ -90,4 +92,13 @@ interface IPackageManagerNative { /* Returns the names of all packages. */ @utf8InCpp String[] getAllPackages(); + + /** Register an extra package change observer to receive the multi-cast. */ + void registerPackageChangeObserver(in IPackageChangeObserver observer); + + /** + * Unregister an existing package change observer. + * This does nothing if this observer was not already registered. + */ + void unregisterPackageChangeObserver(in IPackageChangeObserver observer); } diff --git a/libs/binder/aidl/android/content/pm/PackageChangeEvent.aidl b/libs/binder/aidl/android/content/pm/PackageChangeEvent.aidl new file mode 100644 index 0000000000..e30e9072fc --- /dev/null +++ b/libs/binder/aidl/android/content/pm/PackageChangeEvent.aidl @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.content.pm; + +/** + * This event is designed for notification to native code listener about + * any changes on a package including update, deletion and etc. + * + * @hide + */ +parcelable PackageChangeEvent { + @utf8InCpp String packageName; + long version; + long lastUpdateTimeMillis; + boolean newInstalled; + boolean dataRemoved; + boolean isDeleted; +} -- cgit v1.2.3-59-g8ed1b