add TraceHelper

Bug: 201078676
CTS-Coverage-Bug: 194753983
Test: build
Change-Id: Iec3d312ee7a0ea2cf34ad509d3801f60c396e06f
diff --git a/car-builtin-lib/api/module-lib-current.txt b/car-builtin-lib/api/module-lib-current.txt
index 0c95907..97b364a 100644
--- a/car-builtin-lib/api/module-lib-current.txt
+++ b/car-builtin-lib/api/module-lib-current.txt
@@ -169,6 +169,10 @@
     method public static void set(@NonNull String, @Nullable String);
   }
 
+  public final class TraceHelper {
+    field public static final long TRACE_TAG_CAR_SERVICE = 524288L; // 0x80000L
+  }
+
   public final class UserManagerHelper {
     method public static android.graphics.Bitmap assignDefaultIconForUser(@NonNull android.content.Context, @NonNull android.os.UserHandle);
     method @Deprecated @Nullable public static android.os.UserHandle createGuest(@NonNull android.content.Context, @NonNull android.os.UserManager, @Nullable String);
diff --git a/car-builtin-lib/src/android/car/builtin/os/TraceHelper.java b/car-builtin-lib/src/android/car/builtin/os/TraceHelper.java
new file mode 100644
index 0000000..35cc4c9
--- /dev/null
+++ b/car-builtin-lib/src/android/car/builtin/os/TraceHelper.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2021 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.car.builtin.os;
+
+import android.annotation.SystemApi;
+import android.os.Trace;
+
+/**
+ * Helper for {@code Trace} related operations.
+ *
+ * @hide
+ */
+@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+public final class TraceHelper {
+    private TraceHelper() {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * {@code Trace tag} that should be used by car service. This is same with
+     * {@link Trace#TRACE_TAG_SYSTEM_SERVER}, so {code System Server} tracing should be enabled from
+     * trace tools to access these traces.
+     */
+    public static final long TRACE_TAG_CAR_SERVICE = Trace.TRACE_TAG_SYSTEM_SERVER;
+}
diff --git a/service/src/com/android/car/CarServiceImpl.java b/service/src/com/android/car/CarServiceImpl.java
index f94e26f..4d34c4c 100644
--- a/service/src/com/android/car/CarServiceImpl.java
+++ b/service/src/com/android/car/CarServiceImpl.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.car.builtin.os.ServiceManagerHelper;
 import android.car.builtin.os.SystemPropertiesHelper;
+import android.car.builtin.os.TraceHelper;
 import android.car.builtin.util.Slog;
 import android.content.Intent;
 import android.hardware.automotive.vehicle.V2_0.IVehicle;
@@ -29,7 +30,6 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.SystemProperties;
-import android.os.Trace;
 import android.util.EventLog;
 
 import com.android.car.internal.common.EventLogTags;
@@ -55,7 +55,7 @@
     @Override
     public void onCreate() {
         LimitedTimingsTraceLog initTiming = new LimitedTimingsTraceLog(CAR_SERVICE_INIT_TIMING_TAG,
-                Trace.TRACE_TAG_SYSTEM_SERVER, CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS);
+                TraceHelper.TRACE_TAG_CAR_SERVICE, CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS);
         initTiming.traceBegin("CarService.onCreate");
 
         initTiming.traceBegin("getVehicle");
diff --git a/service/src/com/android/car/ICarImpl.java b/service/src/com/android/car/ICarImpl.java
index 1a73ac0..4763a2c 100644
--- a/service/src/com/android/car/ICarImpl.java
+++ b/service/src/com/android/car/ICarImpl.java
@@ -29,6 +29,7 @@
 import android.car.ICar;
 import android.car.ICarResultReceiver;
 import android.car.builtin.app.ActivityManagerHelper;
+import android.car.builtin.os.TraceHelper;
 import android.car.builtin.os.UserManagerHelper;
 import android.car.builtin.util.Slog;
 import android.car.builtin.util.TimingsTraceLog;
@@ -48,7 +49,6 @@
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ShellCallback;
-import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.util.EventLog;
@@ -177,7 +177,7 @@
             @Nullable CarWatchdogService carWatchdogService,
             @Nullable ICarPowerPolicySystemNotification powerPolicyDaemon) {
         LimitedTimingsTraceLog t = new LimitedTimingsTraceLog(
-                CAR_SERVICE_INIT_TIMING_TAG, Trace.TRACE_TAG_SYSTEM_SERVER,
+                CAR_SERVICE_INIT_TIMING_TAG, TraceHelper.TRACE_TAG_CAR_SERVICE,
                 CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS);
         t.traceBegin("ICarImpl.constructor");
 
@@ -428,7 +428,7 @@
     @MainThread
     void init() {
         LimitedTimingsTraceLog t = new LimitedTimingsTraceLog(CAR_SERVICE_INIT_TIMING_TAG,
-                Trace.TRACE_TAG_SYSTEM_SERVER, CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS);
+                TraceHelper.TRACE_TAG_CAR_SERVICE, CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS);
 
         t.traceBegin("ICarImpl.init");
 
diff --git a/service/src/com/android/car/user/CarUserService.java b/service/src/com/android/car/user/CarUserService.java
index 6c7046c..d9a2c65 100644
--- a/service/src/com/android/car/user/CarUserService.java
+++ b/service/src/com/android/car/user/CarUserService.java
@@ -32,6 +32,7 @@
 import android.car.ICarUserService;
 import android.car.builtin.app.ActivityManagerHelper;
 import android.car.builtin.content.pm.PackageManagerHelper;
+import android.car.builtin.os.TraceHelper;
 import android.car.builtin.os.UserManagerHelper;
 import android.car.builtin.util.Slog;
 import android.car.builtin.util.Slogf;
@@ -75,7 +76,6 @@
 import android.os.IBinder;
 import android.os.Process;
 import android.os.RemoteException;
-import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -1814,7 +1814,7 @@
         // Must use a different TimingsTraceLog because it's another thread
         Slogf.d(TAG, "Notifying %d app listeners of %s", listenersSize, event);
         int userId = event.getUserId();
-        TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+        TimingsTraceLog t = new TimingsTraceLog(TAG, TraceHelper.TRACE_TAG_CAR_SERVICE);
         int eventType = event.getEventType();
         t.traceBegin("notify-app-listeners-user-" + userId + "-event-" + eventType);
         for (int i = 0; i < listenersSize; i++) {
@@ -1842,7 +1842,7 @@
     }
 
     private void handleNotifyServiceUserLifecycleListeners(UserLifecycleEvent event) {
-        TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+        TimingsTraceLog t = new TimingsTraceLog(TAG, TraceHelper.TRACE_TAG_CAR_SERVICE);
         if (mUserLifecycleListeners.isEmpty()) {
             Slog.w(TAG, "Not notifying internal UserLifecycleListeners");
             return;
@@ -1873,7 +1873,7 @@
 
     private void onUserSwitching(@UserIdInt int fromUserId, @UserIdInt int toUserId) {
         Slog.i(TAG, "onUserSwitching() callback for user " + toUserId);
-        TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+        TimingsTraceLog t = new TimingsTraceLog(TAG, TraceHelper.TRACE_TAG_CAR_SERVICE);
         t.traceBegin("onUserSwitching-" + toUserId);
 
         // Switch HAL users if user switch is not requested by CarUserService
diff --git a/service/src/com/android/car/user/ExperimentalCarUserService.java b/service/src/com/android/car/user/ExperimentalCarUserService.java
index 182654a..c207ffb 100644
--- a/service/src/com/android/car/user/ExperimentalCarUserService.java
+++ b/service/src/com/android/car/user/ExperimentalCarUserService.java
@@ -31,6 +31,7 @@
 import android.car.CarOccupantZoneManager.OccupantZoneInfo;
 import android.car.IExperimentalCarUserService;
 import android.car.builtin.app.ActivityManagerHelper;
+import android.car.builtin.os.TraceHelper;
 import android.car.builtin.os.UserManagerHelper;
 import android.car.builtin.util.Slogf;
 import android.car.builtin.util.TimingsTraceLog;
@@ -40,7 +41,6 @@
 import android.car.util.concurrent.AndroidFuture;
 import android.content.Context;
 import android.content.res.Resources;
-import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 
@@ -399,7 +399,7 @@
 
     private void onUserSwitching(@UserIdInt int fromUserId, @UserIdInt int toUserId) {
         Slogf.d(TAG, "onUserSwitching() callback from user %d to user %d", fromUserId, toUserId);
-        TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+        TimingsTraceLog t = new TimingsTraceLog(TAG, TraceHelper.TRACE_TAG_CAR_SERVICE);
         t.traceBegin("onUserSwitching-" + toUserId);
 
         stopPassengerInternal(/* passengerId= */ UserHandle.USER_NULL, false);
diff --git a/service/src/com/android/car/user/InitialUserSetter.java b/service/src/com/android/car/user/InitialUserSetter.java
index 34f1a24..7b89f2f 100644
--- a/service/src/com/android/car/user/InitialUserSetter.java
+++ b/service/src/com/android/car/user/InitialUserSetter.java
@@ -24,6 +24,7 @@
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.car.builtin.app.ActivityManagerHelper;
+import android.car.builtin.os.TraceHelper;
 import android.car.builtin.os.UserManagerHelper;
 import android.car.builtin.util.Slog;
 import android.car.builtin.util.Slogf;
@@ -32,7 +33,6 @@
 import android.car.settings.CarSettings;
 import android.content.Context;
 import android.hardware.automotive.vehicle.V2_0.UserFlags;
-import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -625,7 +625,7 @@
         Slog.i(TAG, "unlocking system user");
         ActivityManagerHelper am = ActivityManagerHelper.getInstance();
 
-        TimingsTraceLog t = new TimingsTraceLog(TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+        TimingsTraceLog t = new TimingsTraceLog(TAG, TraceHelper.TRACE_TAG_CAR_SERVICE);
         t.traceBegin("UnlockSystemUser");
         // This is for force changing state into RUNNING_LOCKED. Otherwise unlock does not
         // update the state and USER_SYSTEM unlock happens twice.