1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef TracedValue_h 6#define TracedValue_h 7 8#include "platform/EventTracer.h" 9 10#include "wtf/PassRefPtr.h" 11#include "wtf/text/WTFString.h" 12 13namespace blink { 14class JSONArray; 15class JSONObject; 16class JSONValue; 17 18class PLATFORM_EXPORT TracedValue : public TraceEvent::ConvertableToTraceFormat { 19 WTF_MAKE_NONCOPYABLE(TracedValue); 20 21public: 22 static PassRefPtr<TracedValue> create(); 23 24 void endDictionary(); 25 void endArray(); 26 27 void setInteger(const char* name, int value); 28 void setDouble(const char* name, double); 29 void setBoolean(const char* name, bool value); 30 void setString(const char* name, const String& value); 31 void beginArray(const char* name); 32 void beginDictionary(const char* name); 33 34 void pushInteger(int); 35 void pushDouble(double); 36 void pushBoolean(bool); 37 void pushString(const String&); 38 void beginArray(); 39 void beginDictionary(); 40 41 virtual String asTraceFormat() const OVERRIDE; 42 43private: 44 TracedValue(); 45 virtual ~TracedValue(); 46 47 JSONObject* currentDictionary() const; 48 JSONArray* currentArray() const; 49 50 Vector<RefPtr<JSONValue> > m_stack; 51}; 52 53} // namespace blink 54 55#endif // TracedValue_h 56