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

Commit 2b227ee1 authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Save ProtoLog viewer configuration in WMShell

In this changeset topic
- Build WMShell with protolog viewer config
    - it's built with SystemUI{,Google} packages and installed as
      /system_ext/etc/wmshell.protolog.json.gz
- Deprecated the viewer configuration as a bundled resource
- The `required` keyword in Android.bp does not propagate, need to add
  it in individual Android.bp file such as SystemUIGoogle/Android.bp
- Push the generated viewer config file onto device in makepush script
  (in a separate CL)

Bug: 244642224
Test: mp sysuig
Change-Id: Ib7f37ec55d12493d6beec3aba66883415966b521
parent 19be85ee
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -100,6 +100,21 @@ genrule {
    out: ["wm_shell_protolog.json"],
}

genrule {
    name: "protolog.json.gz",
    srcs: [":generate-wm_shell_protolog.json"],
    out: ["wmshell.protolog.json.gz"],
    cmd: "$(location minigzip) -c < $(in) > $(out)",
    tools: ["minigzip"],
}

prebuilt_etc {
    name: "wmshell.protolog.json.gz",
    system_ext_specific: true,
    src: ":protolog.json.gz",
    filename_from_src: true,
}

// End ProtoLog

java_library {
@@ -123,9 +138,6 @@ android_library {
    resource_dirs: [
        "res",
    ],
    java_resources: [
        ":generate-wm_shell_protolog.json",
    ],
    static_libs: [
        "androidx.appcompat_appcompat",
        "androidx.arch.core_core-runtime",
+7 −23
Original line number Diff line number Diff line
@@ -17,22 +17,14 @@
package com.android.wm.shell.protolog;

import android.annotation.Nullable;
import android.content.Context;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.BaseProtoLogImpl;
import com.android.internal.protolog.ProtoLogViewerConfigReader;
import com.android.internal.protolog.common.IProtoLogGroup;
import com.android.wm.shell.R;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

import org.json.JSONException;


/**
 * A service for the ProtoLog logging system.
@@ -40,8 +32,9 @@ import org.json.JSONException;
public class ShellProtoLogImpl extends BaseProtoLogImpl {
    private static final String TAG = "ProtoLogImpl";
    private static final int BUFFER_CAPACITY = 1024 * 1024;
    // TODO: Get the right path for the proto log file when we initialize the shell components
    private static final String LOG_FILENAME = new File("wm_shell_log.pb").getAbsolutePath();
    // TODO: find a proper location to save the protolog message file
    private static final String LOG_FILENAME = "/data/misc/wmtrace/shell_log.winscope";
    private static final String VIEWER_CONFIG_FILENAME = "/system_ext/etc/wmshell.protolog.json.gz";

    private static ShellProtoLogImpl sServiceInstance = null;

@@ -111,18 +104,8 @@ public class ShellProtoLogImpl extends BaseProtoLogImpl {
    }

    public int startTextLogging(String[] groups, PrintWriter pw) {
        try (InputStream is =
                     getClass().getClassLoader().getResourceAsStream("wm_shell_protolog.json")){
            mViewerConfig.loadViewerConfig(is);
        mViewerConfig.loadViewerConfig(pw, VIEWER_CONFIG_FILENAME);
        return setLogging(true /* setTextLogging */, true, pw, groups);
        } catch (IOException e) {
            Log.i(TAG, "Unable to load log definitions: IOException while reading "
                    + "wm_shell_protolog. " + e);
        } catch (JSONException e) {
            Log.i(TAG, "Unable to load log definitions: JSON parsing exception while reading "
                    + "wm_shell_protolog. " + e);
        }
        return -1;
    }

    public int stopTextLogging(String[] groups, PrintWriter pw) {
@@ -130,7 +113,8 @@ public class ShellProtoLogImpl extends BaseProtoLogImpl {
    }

    private ShellProtoLogImpl() {
        super(new File(LOG_FILENAME), null, BUFFER_CAPACITY, new ProtoLogViewerConfigReader());
        super(new File(LOG_FILENAME), VIEWER_CONFIG_FILENAME, BUFFER_CAPACITY,
                new ProtoLogViewerConfigReader());
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -294,5 +294,6 @@ android_app {
    dxflags: ["--multi-dex"],
    required: [
        "privapp_whitelist_com.android.systemui",
        "wmshell.protolog.json.gz",
    ],
}