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

Commit a10f4592 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Migrate trace proto from nano to lite" into ub-launcher3-master

parents 5191fe9b 486fad2c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -569,6 +569,7 @@ public class RecentsAnimationDeviceState implements
        pw.println("  isUserUnlocked=" + mIsUserUnlocked);
        pw.println("  isOneHandedModeEnabled=" + mIsOneHandedModeEnabled);
        pw.println("  isSwipeToNotificationEnabled=" + mIsSwipeToNotificationEnabled);
        pw.println("  deferredGestureRegion=" + mDeferredGestureRegion);
        mRotationTouchHelper.dump(pw);
    }
}
+16 −14
Original line number Diff line number Diff line
@@ -64,8 +64,8 @@ import com.android.launcher3.provider.RestoreDbTask;
import com.android.launcher3.statemanager.StatefulActivity;
import com.android.launcher3.testing.TestLogging;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.tracing.nano.LauncherTraceProto;
import com.android.launcher3.tracing.nano.TouchInteractionServiceProto;
import com.android.launcher3.tracing.LauncherTraceProto;
import com.android.launcher3.tracing.TouchInteractionServiceProto;
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper;
import com.android.launcher3.util.OnboardingPrefs;
import com.android.launcher3.util.TraceHelper;
@@ -105,7 +105,7 @@ import java.util.LinkedList;
 */
@TargetApi(Build.VERSION_CODES.R)
public class TouchInteractionService extends Service implements PluginListener<OverscrollPlugin>,
        ProtoTraceable<LauncherTraceProto> {
        ProtoTraceable<LauncherTraceProto.Builder> {

    private static final String TAG = "TouchInteractionService";

@@ -368,9 +368,12 @@ public class TouchInteractionService extends Service implements PluginListener<O

            // Update the tracing state
            if ((mDeviceState.getSystemUiStateFlags() & SYSUI_STATE_TRACING_ENABLED) != 0) {
                ProtoTracer.INSTANCE.get(TouchInteractionService.this).start();
                Log.d(TAG, "Starting tracing.");
                ProtoTracer.INSTANCE.get(this).start();
            } else {
                ProtoTracer.INSTANCE.get(TouchInteractionService.this).stop();
                Log.d(TAG, "Stopping tracing. Dumping to file="
                    + ProtoTracer.INSTANCE.get(this).getTraceFile());
                ProtoTracer.INSTANCE.get(this).stop();
            }
        }
    }
@@ -394,7 +397,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
        disposeEventHandlers();
        mDeviceState.destroy();
        SystemUiProxy.INSTANCE.get(this).setProxy(null);
        ProtoTracer.INSTANCE.get(TouchInteractionService.this).stop();
        ProtoTracer.INSTANCE.get(this).stop();
        ProtoTracer.INSTANCE.get(this).remove(this);

        getSystemService(AccessibilityManager.class)
@@ -503,6 +506,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
            reset();
        }
        TraceHelper.INSTANCE.endFlagsOverride(traceToken);
        ProtoTracer.INSTANCE.get(this).scheduleFrameUpdate();
    }

    private GestureState createGestureState(GestureState previousGestureState) {
@@ -821,8 +825,7 @@ public class TouchInteractionService extends Service implements PluginListener<O
            pw.println("  mConsumer=" + mConsumer.getName());
            ActiveGestureLog.INSTANCE.dump("", pw);
            pw.println("ProtoTrace:");
            pw.println("  file="
                    + ProtoTracer.INSTANCE.get(TouchInteractionService.this).getTraceFile());
            pw.println("  file=" + ProtoTracer.INSTANCE.get(this).getTraceFile());
        }
    }

@@ -878,11 +881,10 @@ public class TouchInteractionService extends Service implements PluginListener<O
    }

    @Override
    public void writeToProto(LauncherTraceProto proto) {
        if (proto.touchInteractionService == null) {
            proto.touchInteractionService = new TouchInteractionServiceProto();
        }
        proto.touchInteractionService.serviceConnected = true;
        proto.touchInteractionService.serviceConnected = true;
    public void writeToProto(LauncherTraceProto.Builder proto) {
        TouchInteractionServiceProto.Builder serviceProto =
            TouchInteractionServiceProto.newBuilder();
        serviceProto.setServiceConnected(true);
        proto.setTouchInteractionService(serviceProto);
    }
}
+42 −34
Original line number Diff line number Diff line
@@ -16,24 +16,23 @@

package com.android.quickstep.util;

import static com.android.launcher3.tracing.nano.LauncherTraceFileProto.MagicNumber.MAGIC_NUMBER_H;
import static com.android.launcher3.tracing.nano.LauncherTraceFileProto.MagicNumber.MAGIC_NUMBER_L;
import static com.android.launcher3.tracing.LauncherTraceFileProto.MagicNumber.MAGIC_NUMBER_H_VALUE;
import static com.android.launcher3.tracing.LauncherTraceFileProto.MagicNumber.MAGIC_NUMBER_L_VALUE;

import android.content.Context;
import android.os.SystemClock;

import com.android.launcher3.tracing.nano.LauncherTraceProto;
import com.android.launcher3.tracing.nano.LauncherTraceEntryProto;
import com.android.launcher3.tracing.nano.LauncherTraceFileProto;
import android.os.Trace;
import com.android.launcher3.tracing.LauncherTraceProto;
import com.android.launcher3.tracing.LauncherTraceEntryProto;
import com.android.launcher3.tracing.LauncherTraceFileProto;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.systemui.shared.tracing.FrameProtoTracer;
import com.android.systemui.shared.tracing.FrameProtoTracer.ProtoTraceParams;
import com.android.systemui.shared.tracing.ProtoTraceable;
import com.google.protobuf.nano.MessageNano;
import com.google.protobuf.MessageLite;

import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Queue;

@@ -41,18 +40,20 @@ import java.util.Queue;
/**
 * Controller for coordinating winscope proto tracing.
 */
public class ProtoTracer implements ProtoTraceParams<MessageNano,
        LauncherTraceFileProto, LauncherTraceEntryProto, LauncherTraceProto> {
public class ProtoTracer implements ProtoTraceParams<MessageLite.Builder,
        LauncherTraceFileProto.Builder, LauncherTraceEntryProto.Builder,
                LauncherTraceProto.Builder> {

    public static final MainThreadInitializedObject<ProtoTracer> INSTANCE =
            new MainThreadInitializedObject<>(ProtoTracer::new);

    private static final String TAG = "ProtoTracer";
    private static final long MAGIC_NUMBER_VALUE = ((long) MAGIC_NUMBER_H << 32) | MAGIC_NUMBER_L;
    private static final long MAGIC_NUMBER_VALUE =
            ((long) MAGIC_NUMBER_H_VALUE << 32) | MAGIC_NUMBER_L_VALUE;

    private final Context mContext;
    private final FrameProtoTracer<MessageNano,
            LauncherTraceFileProto, LauncherTraceEntryProto, LauncherTraceProto> mProtoTracer;
    private final FrameProtoTracer<MessageLite.Builder, LauncherTraceFileProto.Builder,
        LauncherTraceEntryProto.Builder, LauncherTraceProto.Builder> mProtoTracer;

    public ProtoTracer(Context context) {
        mContext = context;
@@ -65,40 +66,47 @@ public class ProtoTracer implements ProtoTraceParams<MessageNano,
    }

    @Override
    public LauncherTraceFileProto getEncapsulatingTraceProto() {
        return new LauncherTraceFileProto();
    public LauncherTraceFileProto.Builder getEncapsulatingTraceProto() {
        return LauncherTraceFileProto.newBuilder();
    }

    @Override
    public LauncherTraceEntryProto updateBufferProto(LauncherTraceEntryProto reuseObj,
            ArrayList<ProtoTraceable<LauncherTraceProto>> traceables) {
        LauncherTraceEntryProto proto = reuseObj != null
                ? reuseObj
                : new LauncherTraceEntryProto();
        proto.elapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos();
        proto.launcher = proto.launcher != null ? proto.launcher : new LauncherTraceProto();
    public LauncherTraceEntryProto.Builder updateBufferProto(
            LauncherTraceEntryProto.Builder reuseObj,
            ArrayList<ProtoTraceable<LauncherTraceProto.Builder>> traceables) {
        Trace.beginSection("ProtoTracer.updateBufferProto");
        LauncherTraceEntryProto.Builder proto = LauncherTraceEntryProto.newBuilder();
        proto.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
        LauncherTraceProto.Builder launcherProto = LauncherTraceProto.newBuilder();
        for (ProtoTraceable t : traceables) {
            t.writeToProto(proto.launcher);
            t.writeToProto(launcherProto);
        }
        proto.setLauncher(launcherProto);
        Trace.endSection();
        return proto;
    }

    @Override
    public byte[] serializeEncapsulatingProto(LauncherTraceFileProto encapsulatingProto,
            Queue<LauncherTraceEntryProto> buffer) {
        encapsulatingProto.magicNumber = MAGIC_NUMBER_VALUE;
        encapsulatingProto.entry = buffer.toArray(new LauncherTraceEntryProto[0]);
        return MessageNano.toByteArray(encapsulatingProto);
    public byte[] serializeEncapsulatingProto(LauncherTraceFileProto.Builder encapsulatingProto,
            Queue<LauncherTraceEntryProto.Builder> buffer) {
        Trace.beginSection("ProtoTracer.serializeEncapsulatingProto");
        encapsulatingProto.setMagicNumber(MAGIC_NUMBER_VALUE);
        for (LauncherTraceEntryProto.Builder entry : buffer) {
            encapsulatingProto.addEntry(entry);
        }
        byte[] bytes = encapsulatingProto.build().toByteArray();
        Trace.endSection();
        return bytes;
    }

    @Override
    public byte[] getProtoBytes(MessageNano proto) {
        return MessageNano.toByteArray(proto);
    public byte[] getProtoBytes(MessageLite.Builder proto) {
        return proto.build().toByteArray();
    }

    @Override
    public int getProtoSize(MessageNano proto) {
        return proto.getCachedSize();
    public int getProtoSize(MessageLite.Builder proto) {
        return proto.build().getSerializedSize();
    }

    public void start() {
@@ -109,11 +117,11 @@ public class ProtoTracer implements ProtoTraceParams<MessageNano,
        mProtoTracer.stop();
    }

    public void add(ProtoTraceable<LauncherTraceProto> traceable) {
    public void add(ProtoTraceable<LauncherTraceProto.Builder> traceable) {
        mProtoTracer.add(traceable);
    }

    public void remove(ProtoTraceable<LauncherTraceProto> traceable) {
    public void remove(ProtoTraceable<LauncherTraceProto.Builder> traceable) {
        mProtoTracer.remove(traceable);
    }