Merge "Introduce a .winscope extension for all winscope files"
This commit is contained in:
committed by
Android (Google) Code Review
commit
6c2ff5fcd3
@@ -55,6 +55,12 @@ WINSCOPE_TOKEN_HEADER = "Winscope-Token"
|
||||
# Location to save the proxy security token
|
||||
WINSCOPE_TOKEN_LOCATION = os.path.expanduser('~/.config/winscope/.token')
|
||||
|
||||
# Winscope traces extension
|
||||
WINSCOPE_EXT = ".winscope"
|
||||
|
||||
# Winscope traces directory
|
||||
WINSCOPE_DIR = "/data/misc/wmtrace/"
|
||||
|
||||
# Max interval between the client keep-alive requests in seconds
|
||||
KEEP_ALIVE_INTERVAL_S = 5
|
||||
|
||||
@@ -111,51 +117,51 @@ class TraceTarget:
|
||||
# Order of files matters as they will be expected in that order and decoded in that order
|
||||
TRACE_TARGETS = {
|
||||
"window_trace": TraceTarget(
|
||||
File("/data/misc/wmtrace/wm_trace.pb", "window_trace"),
|
||||
File(f'{WINSCOPE_DIR}wm_trace{WINSCOPE_EXT}', "window_trace"),
|
||||
'su root cmd window tracing start\necho "WM trace started."',
|
||||
'su root cmd window tracing stop >/dev/null 2>&1'
|
||||
),
|
||||
"accessibility_trace": TraceTarget(
|
||||
File("/data/misc/a11ytrace/a11y_trace.pb", "accessibility_trace"),
|
||||
File(f'/data/misc/a11ytrace/a11y_trace{WINSCOPE_EXT}', "accessibility_trace"),
|
||||
'su root cmd accessibility start-trace\necho "Accessibility trace started."',
|
||||
'su root cmd accessibility stop-trace >/dev/null 2>&1'
|
||||
),
|
||||
"layers_trace": TraceTarget(
|
||||
File("/data/misc/wmtrace/layers_trace.pb", "layers_trace"),
|
||||
File(f'{WINSCOPE_DIR}layers_trace{WINSCOPE_EXT}', "layers_trace"),
|
||||
'su root service call SurfaceFlinger 1025 i32 1\necho "SF trace started."',
|
||||
'su root service call SurfaceFlinger 1025 i32 0 >/dev/null 2>&1'
|
||||
),
|
||||
"screen_recording": TraceTarget(
|
||||
File("/data/local/tmp/screen.winscope.mp4", "screen_recording"),
|
||||
'screenrecord --bit-rate 8M /data/local/tmp/screen.winscope.mp4 >/dev/null 2>&1 &\necho "ScreenRecorder started."',
|
||||
File(f'/data/local/tmp/screen{WINSCOPE_EXT}.mp4', "screen_recording"),
|
||||
f'screenrecord --bit-rate 8M /data/local/tmp/screen{WINSCOPE_EXT}.mp4 >/dev/null 2>&1 &\necho "ScreenRecorder started."',
|
||||
'pkill -l SIGINT screenrecord >/dev/null 2>&1'
|
||||
),
|
||||
"transaction": TraceTarget(
|
||||
[
|
||||
File("/data/misc/wmtrace/transaction_trace.pb", "transactions"),
|
||||
FileMatcher("/data/misc/wmtrace/", "transaction_merges_*.pb",
|
||||
File(f'{WINSCOPE_DIR}transaction_trace{WINSCOPE_EXT}', "transactions"),
|
||||
FileMatcher(WINSCOPE_DIR, f'transaction_merges_*{WINSCOPE_EXT}',
|
||||
"transaction_merges"),
|
||||
],
|
||||
'su root service call SurfaceFlinger 1020 i32 1\necho "SF transactions recording started."',
|
||||
'su root service call SurfaceFlinger 1020 i32 0 >/dev/null 2>&1'
|
||||
),
|
||||
"proto_log": TraceTarget(
|
||||
File("/data/misc/wmtrace/wm_log.pb", "proto_log"),
|
||||
File(f'{WINSCOPE_DIR}wm_log{WINSCOPE_EXT}', "proto_log"),
|
||||
'su root cmd window logging start\necho "WM logging started."',
|
||||
'su root cmd window logging stop >/dev/null 2>&1'
|
||||
),
|
||||
"ime_trace_clients": TraceTarget(
|
||||
File("/data/misc/wmtrace/ime_trace_clients.pb", "ime_trace_clients"),
|
||||
File(f'{WINSCOPE_DIR}ime_trace_clients{WINSCOPE_EXT}', "ime_trace_clients"),
|
||||
'su root ime tracing start\necho "Clients IME trace started."',
|
||||
'su root ime tracing stop >/dev/null 2>&1'
|
||||
),
|
||||
"ime_trace_service": TraceTarget(
|
||||
File("/data/misc/wmtrace/ime_trace_service.pb", "ime_trace_service"),
|
||||
File(f'{WINSCOPE_DIR}ime_trace_service{WINSCOPE_EXT}', "ime_trace_service"),
|
||||
'su root ime tracing start\necho "Service IME trace started."',
|
||||
'su root ime tracing stop >/dev/null 2>&1'
|
||||
),
|
||||
"ime_trace_managerservice": TraceTarget(
|
||||
File("/data/misc/wmtrace/ime_trace_managerservice.pb", "ime_trace_managerservice"),
|
||||
File(f'{WINSCOPE_DIR}ime_trace_managerservice{WINSCOPE_EXT}', "ime_trace_managerservice"),
|
||||
'su root ime tracing start\necho "ManagerService IME trace started."',
|
||||
'su root ime tracing stop >/dev/null 2>&1'
|
||||
),
|
||||
@@ -204,12 +210,12 @@ class DumpTarget:
|
||||
|
||||
DUMP_TARGETS = {
|
||||
"window_dump": DumpTarget(
|
||||
File("/data/local/tmp/wm_dump.pb", "window_dump"),
|
||||
'su root dumpsys window --proto > /data/local/tmp/wm_dump.pb'
|
||||
File(f'/data/local/tmp/wm_dump{WINSCOPE_EXT}', "window_dump"),
|
||||
f'su root dumpsys window --proto > /data/local/tmp/wm_dump{WINSCOPE_EXT}'
|
||||
),
|
||||
"layers_dump": DumpTarget(
|
||||
File("/data/local/tmp/sf_dump.pb", "layers_dump"),
|
||||
'su root dumpsys SurfaceFlinger --proto > /data/local/tmp/sf_dump.pb'
|
||||
File(f'/data/local/tmp/sf_dump{WINSCOPE_EXT}', "layers_dump"),
|
||||
f'su root dumpsys SurfaceFlinger --proto > /data/local/tmp/sf_dump{WINSCOPE_EXT}'
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -33,14 +33,37 @@ export default {
|
||||
|
||||
document.body.removeChild(a);
|
||||
},
|
||||
/**
|
||||
* Returns the file name, if the file has an extension use its default,
|
||||
* otherwise use ".mp4" for screen recording (name from proxy script) and
|
||||
* ".winscope" for traces
|
||||
* @param {*} fileName
|
||||
*/
|
||||
getFileName(fileName) {
|
||||
var re = /(?:\.([^.]+))?$/;
|
||||
var extension = re.exec(fileName)[1];
|
||||
if (!extension) {
|
||||
extension = "";
|
||||
}
|
||||
switch (extension) {
|
||||
case "": {
|
||||
if (fileName == "Screen recording") {
|
||||
return fileName + ".mp4"
|
||||
}
|
||||
return fileName + ".winscope"
|
||||
}
|
||||
default: return fileName
|
||||
}
|
||||
},
|
||||
async downloadAsZip(traces) {
|
||||
const zip = new JSZip();
|
||||
|
||||
for (const trace of traces) {
|
||||
const traceFolder = zip.folder(trace.type);
|
||||
for (const file of trace.files) {
|
||||
var fileName = this.getFileName(file.filename);
|
||||
const blob = await fetch(file.blobUrl).then((r) => r.blob());
|
||||
traceFolder.file(file.filename, blob);
|
||||
traceFolder.file(fileName, blob);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,9 @@ for arg in "$@"; do
|
||||
esac
|
||||
done
|
||||
|
||||
outfileTrans=${outfile}_transactiontrace.pb
|
||||
outfileSurf=${outfile}_layerstrace.pb
|
||||
WINSCOPE_EXT=.winscope
|
||||
outfileTrans=${outfile}_transactiontrace$WINSCOPE_EXT
|
||||
outfileSurf=${outfile}_layerstrace$WINSCOPE_EXT
|
||||
|
||||
outfileTrans_abs="$(cd "$(dirname "$outfileTrans")"; pwd)/$(basename "$outfileTrans")"
|
||||
outfileSurf_abs="$(cd "$(dirname "$outfileSurf")"; pwd)/$(basename "$outfileSurf")"
|
||||
@@ -39,8 +40,8 @@ outfileSurf_abs="$(cd "$(dirname "$outfileSurf")"; pwd)/$(basename "$outfileSurf
|
||||
if [ "$help" != "" ]; then
|
||||
echo "usage: $0 [-h | --help] [OUTFILE]"
|
||||
echo
|
||||
echo "Records Transaction traces (default transactiontrace.pb)."
|
||||
echo "Records Surface traces (default layerstrace.pb)."
|
||||
echo "Records Transaction traces (default transactiontrace$WINSCOPE_EXT)."
|
||||
echo "Records Surface traces (default layerstrace$WINSCOPE_EXT)."
|
||||
echo "To view the traces, use $WINSCOPE_URL."
|
||||
exit 1
|
||||
fi
|
||||
@@ -75,8 +76,8 @@ start_tracing
|
||||
read -p "Press ENTER to stop recording" -s x
|
||||
echo
|
||||
stop_tracing
|
||||
adb exec-out su root cat /data/misc/wmtrace/transaction_trace.pb >"$outfileTrans"
|
||||
adb exec-out su root cat /data/misc/wmtrace/layers_trace.pb >"$outfileSurf"
|
||||
adb exec-out su root cat /data/misc/wmtrace/transaction_trace$WINSCOPE_EXT >"$outfileTrans"
|
||||
adb exec-out su root cat /data/misc/wmtrace/layers_trace$WINSCOPE_EXT >"$outfileSurf"
|
||||
|
||||
echo
|
||||
echo "To view the trace, go to $WINSCOPE_URL, and open"
|
||||
|
||||
@@ -64,7 +64,7 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.pb/,
|
||||
test: /\.(pb|winscope)/,
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
paths: [
|
||||
|
||||
Reference in New Issue
Block a user