Merge "Add event log for content capture" into tm-qpr-dev
This commit is contained in:
@@ -17,6 +17,9 @@ filegroup {
|
||||
java_library_static {
|
||||
name: "services.contentcapture",
|
||||
defaults: ["platform_service_defaults"],
|
||||
srcs: [":services.contentcapture-sources"],
|
||||
srcs: [
|
||||
":services.contentcapture-sources",
|
||||
"java/**/*.logtags",
|
||||
],
|
||||
libs: ["services.core"],
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ import android.service.contentcapture.SnapshotData;
|
||||
import android.service.voice.VoiceInteractionManagerInternal;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.EventLog;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.util.SparseBooleanArray;
|
||||
@@ -69,6 +70,7 @@ import android.view.contentcapture.DataShareRequest;
|
||||
|
||||
import com.android.internal.annotations.GuardedBy;
|
||||
import com.android.internal.os.IResultReceiver;
|
||||
import com.android.internal.util.CollectionUtils;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.contentcapture.RemoteContentCaptureService.ContentCaptureServiceCallbacks;
|
||||
@@ -88,6 +90,10 @@ final class ContentCapturePerUserService
|
||||
|
||||
private static final String TAG = ContentCapturePerUserService.class.getSimpleName();
|
||||
|
||||
private static final int EVENT_LOG_CONNECT_STATE_DIED = 0;
|
||||
static final int EVENT_LOG_CONNECT_STATE_CONNECTED = 1;
|
||||
static final int EVENT_LOG_CONNECT_STATE_DISCONNECTED = 2;
|
||||
|
||||
@GuardedBy("mLock")
|
||||
private final SparseArray<ContentCaptureServerSession> mSessions = new SparseArray<>();
|
||||
|
||||
@@ -190,9 +196,12 @@ final class ContentCapturePerUserService
|
||||
Slog.w(TAG, "remote service died: " + service);
|
||||
synchronized (mLock) {
|
||||
mZombie = true;
|
||||
ComponentName serviceComponent = getServiceComponentName();
|
||||
writeServiceEvent(
|
||||
FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_REMOTE_SERVICE_DIED,
|
||||
getServiceComponentName());
|
||||
serviceComponent);
|
||||
EventLog.writeEvent(EventLogTags.CC_CONNECT_STATE_CHANGED, mUserId,
|
||||
EVENT_LOG_CONNECT_STATE_DIED, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -529,6 +538,15 @@ final class ContentCapturePerUserService
|
||||
return mConditionsByPkg.get(packageName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
ArraySet<String> getContentCaptureAllowlist() {
|
||||
ArraySet<String> allowPackages;
|
||||
synchronized (mLock) {
|
||||
allowPackages = mMaster.mGlobalContentCaptureOptions.getWhitelistedPackages(mUserId);
|
||||
}
|
||||
return allowPackages;
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
void onActivityEventLocked(@NonNull ComponentName componentName, @ActivityEventType int type) {
|
||||
if (mRemoteService == null) {
|
||||
@@ -617,8 +635,12 @@ final class ContentCapturePerUserService
|
||||
|
||||
ArraySet<String> oldList =
|
||||
mMaster.mGlobalContentCaptureOptions.getWhitelistedPackages(mUserId);
|
||||
EventLog.writeEvent(EventLogTags.CC_CURRENT_ALLOWLIST, mUserId,
|
||||
CollectionUtils.size(oldList));
|
||||
|
||||
mMaster.mGlobalContentCaptureOptions.setWhitelist(mUserId, packages, activities);
|
||||
EventLog.writeEvent(EventLogTags.CC_SET_ALLOWLIST, mUserId,
|
||||
CollectionUtils.size(packages), CollectionUtils.size(activities));
|
||||
writeSetWhitelistEvent(getServiceComponentName(), packages, activities);
|
||||
|
||||
updateContentCaptureOptions(oldList);
|
||||
@@ -699,13 +721,15 @@ final class ContentCapturePerUserService
|
||||
private void updateContentCaptureOptions(@Nullable ArraySet<String> oldList) {
|
||||
ArraySet<String> adding = mMaster.mGlobalContentCaptureOptions
|
||||
.getWhitelistedPackages(mUserId);
|
||||
int addingCount = CollectionUtils.size(adding);
|
||||
EventLog.writeEvent(EventLogTags.CC_CURRENT_ALLOWLIST, mUserId, addingCount);
|
||||
|
||||
if (oldList != null && adding != null) {
|
||||
adding.removeAll(oldList);
|
||||
}
|
||||
|
||||
int N = adding != null ? adding.size() : 0;
|
||||
for (int i = 0; i < N; i++) {
|
||||
EventLog.writeEvent(EventLogTags.CC_UPDATE_OPTIONS, mUserId, addingCount);
|
||||
for (int i = 0; i < addingCount; i++) {
|
||||
String packageName = adding.valueAt(i);
|
||||
ContentCaptureOptions options = mMaster.mGlobalContentCaptureOptions
|
||||
.getOptions(mUserId, packageName);
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# See system/logging/logcat/event.logtags for a description of the format of this file.
|
||||
|
||||
option java_package com.android.server.contentcapture
|
||||
|
||||
# ContentCaptureService connection state change, refer to ContentCapturePerUserService
|
||||
# for type definition
|
||||
53200 cc_connect_state_changed (user|1|5),(type|1|5),(package_count|1|1)
|
||||
# Set the package and activity allowlist
|
||||
53201 cc_set_allowlist (user|1|5),(package_count|1|1),(activity_count|1|1)
|
||||
# Get the current allowlist
|
||||
53202 cc_current_allowlist (user|1|5),(count|1|1)
|
||||
# update content capture client option with new allow list count
|
||||
53203 cc_update_options (user|1|5),(count|1)
|
||||
@@ -31,6 +31,7 @@ import android.service.contentcapture.IContentCaptureService;
|
||||
import android.service.contentcapture.IContentCaptureServiceCallback;
|
||||
import android.service.contentcapture.IDataShareCallback;
|
||||
import android.service.contentcapture.SnapshotData;
|
||||
import android.util.EventLog;
|
||||
import android.util.Slog;
|
||||
import android.view.contentcapture.ContentCaptureContext;
|
||||
import android.view.contentcapture.DataRemovalRequest;
|
||||
@@ -38,6 +39,7 @@ import android.view.contentcapture.DataShareRequest;
|
||||
|
||||
import com.android.internal.infra.AbstractMultiplePendingRequestsRemoteService;
|
||||
import com.android.internal.os.IResultReceiver;
|
||||
import com.android.internal.util.CollectionUtils;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
|
||||
final class RemoteContentCaptureService
|
||||
@@ -88,6 +90,10 @@ final class RemoteContentCaptureService
|
||||
writeServiceEvent(
|
||||
FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_CONNECTED,
|
||||
mComponentName);
|
||||
EventLog.writeEvent(EventLogTags.CC_CONNECT_STATE_CHANGED,
|
||||
mPerUserService.getUserId(),
|
||||
ContentCapturePerUserService.EVENT_LOG_CONNECT_STATE_CONNECTED,
|
||||
CollectionUtils.size(mPerUserService.getContentCaptureAllowlist()));
|
||||
} finally {
|
||||
// Update the system-service state, in case the service reconnected after
|
||||
// dying
|
||||
@@ -98,6 +104,9 @@ final class RemoteContentCaptureService
|
||||
writeServiceEvent(
|
||||
FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_DISCONNECTED,
|
||||
mComponentName);
|
||||
EventLog.writeEvent(EventLogTags.CC_CONNECT_STATE_CHANGED,
|
||||
mPerUserService.getUserId(),
|
||||
ContentCapturePerUserService.EVENT_LOG_CONNECT_STATE_DISCONNECTED, 0);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Slog.w(mTag, "Exception calling onConnectedStateChanged(" + connected + "): " + e);
|
||||
|
||||
Reference in New Issue
Block a user