Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / EventTracer.cpp
index 997e57e..5d35f6c 100644 (file)
@@ -32,6 +32,7 @@
 #include "platform/EventTracer.h"
 
 #include "public/platform/Platform.h"
+#include "public/platform/WebConvertableToTraceFormat.h"
 #include "wtf/Assertions.h"
 #include <stdio.h>
 
@@ -46,6 +47,10 @@ long* traceSamplingState[3] = {&dummyTraceSamplingState, &dummyTraceSamplingStat
 
 void EventTracer::initialize()
 {
+    // current() might not exist in unit tests.
+    if (!blink::Platform::current())
+        return;
+
     traceSamplingState[0] = blink::Platform::current()->getTraceSamplingState(0);
     // FIXME: traceSamplingState[0] can be 0 in split-dll build. http://crbug.com/256965
     if (!traceSamplingState[0])
@@ -60,14 +65,38 @@ void EventTracer::initialize()
 
 const unsigned char* EventTracer::getTraceCategoryEnabledFlag(const char* categoryName)
 {
+    static const char* dummyCategoryEnabledFlag = "*";
+    // current() might not exist in unit tests.
+    if (!blink::Platform::current())
+        return reinterpret_cast<const unsigned char*>(dummyCategoryEnabledFlag);
+
     return blink::Platform::current()->getTraceCategoryEnabledFlag(categoryName);
 }
 
 TraceEvent::TraceEventHandle EventTracer::addTraceEvent(char phase, const unsigned char* categoryEnabledFlag,
+    const char* name, unsigned long long id, int numArgs, const char* argNames[],
+    const unsigned char argTypes[], const unsigned long long argValues[],
+    TraceEvent::ConvertableToTraceFormat* convertableValues[],
+    unsigned char flags)
+{
+    blink::WebConvertableToTraceFormat webConvertableValues[2];
+    if (numArgs <= static_cast<int>(WTF_ARRAY_LENGTH(webConvertableValues))) {
+        for (int i = 0; i < numArgs; ++i) {
+            if (convertableValues[i])
+                webConvertableValues[i] = blink::WebConvertableToTraceFormat(convertableValues[i]);
+        }
+    } else {
+        ASSERT_NOT_REACHED();
+    }
+    return blink::Platform::current()->addTraceEvent(phase, categoryEnabledFlag, name, id, numArgs, argNames, argTypes, argValues, webConvertableValues, flags);
+}
+
+TraceEvent::TraceEventHandle EventTracer::addTraceEvent(char phase, const unsigned char* categoryEnabledFlag,
     const char* name, unsigned long long id, int numArgs, const char** argNames,
-    const unsigned char* argTypes, const unsigned long long* argValues, unsigned char flags)
+    const unsigned char* argTypes, const unsigned long long* argValues,
+    unsigned char flags)
 {
-    return blink::Platform::current()->addTraceEvent(phase, categoryEnabledFlag, name, id, numArgs, argNames, argTypes, argValues, flags);
+    return blink::Platform::current()->addTraceEvent(phase, categoryEnabledFlag, name, id, numArgs, argNames, argTypes, argValues, 0, flags);
 }
 
 void EventTracer::updateTraceEventDuration(const unsigned char* categoryEnabledFlag, const char* name, TraceEvent::TraceEventHandle handle)