Add a new system service for blob store management.
This change adds a bare-bones system service, implementation will follow later. Bug: 143559646 Test: atest cts/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java Change-Id: Idf21dfcd11dd32a42b62c6ad965d6f5ad7eed1b4
This commit is contained in:
parent
9bf17be527
commit
f5b36964e0
@ -212,6 +212,7 @@ filegroup {
|
||||
name: "framework-non-updatable-sources",
|
||||
srcs: [
|
||||
// Java/AIDL sources under frameworks/base
|
||||
":framework-blobstore-sources",
|
||||
":framework-core-sources",
|
||||
":framework-drm-sources",
|
||||
":framework-graphics-sources",
|
||||
|
40
apex/blobstore/framework/Android.bp
Normal file
40
apex/blobstore/framework/Android.bp
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright (C) 2019 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.
|
||||
|
||||
filegroup {
|
||||
name: "framework-blobstore-sources",
|
||||
srcs: [
|
||||
"java/**/*.java",
|
||||
"java/**/*.aidl"
|
||||
],
|
||||
path: "java",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "blobstore-framework",
|
||||
installable: false,
|
||||
compile_dex: true,
|
||||
sdk_version: "core_platform",
|
||||
srcs: [
|
||||
":framework-blobstore-sources",
|
||||
],
|
||||
aidl: {
|
||||
export_include_dirs: [
|
||||
"java",
|
||||
],
|
||||
},
|
||||
libs: [
|
||||
"framework-minus-apex",
|
||||
],
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2019 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.app.blob;
|
||||
|
||||
import android.annotation.SystemService;
|
||||
import android.content.Context;
|
||||
|
||||
/**
|
||||
* This class provides access to the blob store maintained by the system.
|
||||
*
|
||||
* Apps can publish data blobs which might be useful for other apps on the device to be
|
||||
* maintained by the system and apps that would like to access these data blobs can do so
|
||||
* by addressing them via their cryptographically secure hashes.
|
||||
*
|
||||
* TODO: make this public once the APIs are added.
|
||||
* @hide
|
||||
*/
|
||||
@SystemService(Context.BLOB_STORE_SERVICE)
|
||||
public class BlobStoreManager {
|
||||
private final Context mContext;
|
||||
private final IBlobStoreManager mService;
|
||||
|
||||
/** @hide */
|
||||
public BlobStoreManager(Context context, IBlobStoreManager service) {
|
||||
mContext = context;
|
||||
mService = service;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2019 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.app.blob;
|
||||
|
||||
import android.app.SystemServiceRegistry;
|
||||
import android.content.Context;
|
||||
|
||||
/**
|
||||
* This is where the BlobStoreManagerService wrapper is registered.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class BlobStoreManagerFrameworkInitializer {
|
||||
/** Register the BlobStoreManager wrapper class */
|
||||
public static void initialize() {
|
||||
SystemServiceRegistry.registerCachedService(
|
||||
Context.BLOB_STORE_SERVICE, BlobStoreManager.class,
|
||||
(context, service) ->
|
||||
new BlobStoreManager(context, IBlobStoreManager.Stub.asInterface(service)));
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2019, 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.app.blob;
|
||||
|
||||
/** {@hide} */
|
||||
interface IBlobStoreManager {
|
||||
}
|
27
apex/blobstore/service/Android.bp
Normal file
27
apex/blobstore/service/Android.bp
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright (C) 2019 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.
|
||||
|
||||
java_library {
|
||||
name: "blobstore-service",
|
||||
installable: true,
|
||||
|
||||
srcs: [
|
||||
"java/**/*.java",
|
||||
],
|
||||
|
||||
libs: [
|
||||
"framework",
|
||||
"services.core",
|
||||
],
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2019 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 com.android.server.blob;
|
||||
|
||||
import android.app.blob.IBlobStoreManager;
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.server.SystemService;
|
||||
|
||||
/**
|
||||
* Service responsible for maintaining and facilitating access to data blobs published by apps.
|
||||
*/
|
||||
public class BlobStoreManagerService extends SystemService {
|
||||
|
||||
public BlobStoreManagerService(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
publishBinderService(Context.BLOB_STORE_SERVICE, new Stub());
|
||||
}
|
||||
|
||||
private class Stub extends IBlobStoreManager.Stub {
|
||||
}
|
||||
}
|
@ -701,6 +701,7 @@ package android.content {
|
||||
method public int getUserId();
|
||||
method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
|
||||
method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
|
||||
field public static final String BLOB_STORE_SERVICE = "blob_store";
|
||||
field public static final String BUGREPORT_SERVICE = "bugreport";
|
||||
field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
|
||||
field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
|
||||
|
@ -546,6 +546,7 @@ android.app.backup.IBackupManager$Stub$Proxy
|
||||
android.app.backup.IBackupManager$Stub
|
||||
android.app.backup.IBackupManager
|
||||
android.app.backup.SharedPreferencesBackupHelper
|
||||
android.app.blob.BlobStoreManagerFrameworkInitializer
|
||||
android.app.contentsuggestions.ContentSuggestionsManager
|
||||
android.app.job.IJobCallback$Stub$Proxy
|
||||
android.app.job.IJobCallback$Stub
|
||||
|
@ -21,6 +21,7 @@ import android.accounts.IAccountManager;
|
||||
import android.app.ContextImpl.ServiceInitializationState;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.admin.IDevicePolicyManager;
|
||||
import android.app.blob.BlobStoreManagerFrameworkInitializer;
|
||||
import android.app.contentsuggestions.ContentSuggestionsManager;
|
||||
import android.app.contentsuggestions.IContentSuggestionsManager;
|
||||
import android.app.job.JobSchedulerFrameworkInitializer;
|
||||
@ -1311,6 +1312,8 @@ public final class SystemServiceRegistry {
|
||||
|
||||
JobSchedulerFrameworkInitializer.initialize();
|
||||
DeviceIdleFrameworkInitializer.initialize();
|
||||
|
||||
BlobStoreManagerFrameworkInitializer.initialize();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4781,6 +4781,20 @@ public abstract class Context {
|
||||
*/
|
||||
public static final String DYNAMIC_SYSTEM_SERVICE = "dynamic_system";
|
||||
|
||||
/**
|
||||
* Use with {@link #getSystemService(String)} to retrieve a {@link
|
||||
* android.app.blob.BlobStoreManager} for contributing and accessing data blobs
|
||||
* from the blob store maintained by the system.
|
||||
*
|
||||
* @see #getSystemService(String)
|
||||
* @see android.app.blob.BlobStoreManager
|
||||
*
|
||||
* TODO: make this public once BlobStoreManager is ready.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public static final String BLOB_STORE_SERVICE = "blob_store";
|
||||
|
||||
/**
|
||||
* Use with {@link #getSystemService(String)} to retrieve an
|
||||
* {@link TelephonyRegistryManager}.
|
||||
|
@ -277,6 +277,8 @@ public final class SystemServer {
|
||||
"com.android.server.contentsuggestions.ContentSuggestionsManagerService";
|
||||
private static final String DEVICE_IDLE_CONTROLLER_CLASS =
|
||||
"com.android.server.DeviceIdleController";
|
||||
private static final String BLOB_STORE_MANAGER_SERVICE_CLASS =
|
||||
"com.android.server.blob.BlobStoreManagerService";
|
||||
|
||||
private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
|
||||
|
||||
@ -1902,6 +1904,10 @@ public final class SystemServer {
|
||||
mSystemServiceManager.startService(ClipboardService.class);
|
||||
t.traceEnd();
|
||||
|
||||
t.traceBegin("StartBlobStoreManagerService");
|
||||
mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
|
||||
t.traceEnd();
|
||||
|
||||
t.traceBegin("AppServiceManager");
|
||||
mSystemServiceManager.startService(AppBindingService.Lifecycle.class);
|
||||
t.traceEnd();
|
||||
|
Loading…
x
Reference in New Issue
Block a user