From 555e45675472589f687aa5364692cee049a4516d Mon Sep 17 00:00:00 2001 From: Aaron Chiu Date: Sun, 19 Feb 2017 18:10:49 -0800 Subject: [PATCH] add markerAnnotation to QPL JS API Reviewed By: javache Differential Revision: D4575107 fbshipit-source-id: 55d2fe86c863d3234ffe9e6520bf3ee96c41012d --- .../quicklog/QuickPerformanceLogger.java | 14 +++++++- .../main/jni/xreact/jni/JSCPerfLogging.cpp | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/quicklog/QuickPerformanceLogger.java b/ReactAndroid/src/main/java/com/facebook/quicklog/QuickPerformanceLogger.java index 9e3e0e32e1..788a5ba52f 100644 --- a/ReactAndroid/src/main/java/com/facebook/quicklog/QuickPerformanceLogger.java +++ b/ReactAndroid/src/main/java/com/facebook/quicklog/QuickPerformanceLogger.java @@ -85,9 +85,21 @@ public class QuickPerformanceLogger { String tag) { } + public void markerAnnotate( + int markerId, + String annotationKey, + String annotationValue) { + } + + public void markerAnnotate( + int markerId, + int instanceKey, + String annotationKey, + String annotationValue) { + } + public long currentMonotonicTimestamp() { return 0L; } } - diff --git a/ReactAndroid/src/main/jni/xreact/jni/JSCPerfLogging.cpp b/ReactAndroid/src/main/jni/xreact/jni/JSCPerfLogging.cpp index 0212e590f1..f5e7ba0212 100644 --- a/ReactAndroid/src/main/jni/xreact/jni/JSCPerfLogging.cpp +++ b/ReactAndroid/src/main/jni/xreact/jni/JSCPerfLogging.cpp @@ -43,6 +43,20 @@ class JObjectWrapper : public JObjectWrapper { markerTagMethod(this_, markerId, instanceKey, tag); } + void markerAnnotate( + int markerId, + int instanceKey, + alias_ref key, + alias_ref value) { + static auto markerAnnotateMethod = + qplClass()->getMethod, + alias_ref)>("markerAnnotate"); + markerAnnotateMethod(this_, markerId, instanceKey, key, value); + } + void markerNote(int markerId, int instanceKey, short actionId, long timestamp) { static auto markerNoteMethod = qplClass()->getMethod("markerNote"); @@ -213,6 +227,24 @@ static JSValueRef nativeQPLMarkerTag( return JSValueMakeUndefined(ctx); } +static JSValueRef nativeQPLMarkerAnnotate( + JSContextRef ctx, + JSObjectRef function, + JSObjectRef thisObject, + size_t argumentCount, + const JSValueRef arguments[], + JSValueRef* exception) { + double targets[2]; + if (isReady() && grabDoubles(2, targets, ctx, argumentCount, arguments, exception)) { + int32_t markerId = (int32_t) targets[0]; + int32_t instanceKey = (int32_t) targets[1]; + local_ref key = getJStringFromJSValueRef(ctx, arguments[2]); + local_ref value = getJStringFromJSValueRef(ctx, arguments[3]); + JQuickPerformanceLoggerProvider::get()->markerAnnotate(markerId, instanceKey, key, value); + } + return JSValueMakeUndefined(ctx); +} + static JSValueRef nativeQPLMarkerNote( JSContextRef ctx, JSObjectRef function, @@ -269,6 +301,7 @@ void addNativePerfLoggingHooks(JSGlobalContextRef ctx) { installGlobalFunction(ctx, "nativeQPLMarkerStart", nativeQPLMarkerStart); installGlobalFunction(ctx, "nativeQPLMarkerEnd", nativeQPLMarkerEnd); installGlobalFunction(ctx, "nativeQPLMarkerTag", nativeQPLMarkerTag); + installGlobalFunction(ctx, "nativeQPLMarkerAnnotate", nativeQPLMarkerAnnotate); installGlobalFunction(ctx, "nativeQPLMarkerNote", nativeQPLMarkerNote); installGlobalFunction(ctx, "nativeQPLMarkerCancel", nativeQPLMarkerCancel); installGlobalFunction(ctx, "nativeQPLTimestamp", nativeQPLTimestamp);