Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(388)

Side by Side Diff: sky/engine/platform/TracedValue.cpp

Issue 889823002: Remove TRACE_EVENT indirection through blink::Platform (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/engine/platform/TracedValue.h ('k') | sky/engine/platform/TracedValueTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "sky/engine/config.h"
6
7 #include "sky/engine/platform/TracedValue.h"
8
9 #include "sky/engine/platform/JSONValues.h"
10
11 namespace blink {
12
13 namespace {
14
15 String threadSafeCopy(const String& string)
16 {
17 RefPtr<StringImpl> copy(string.impl());
18 if (string.isSafeToSendToAnotherThread())
19 return string;
20 return string.isolatedCopy();
21 }
22
23 }
24
25 PassRefPtr<TracedValue> TracedValue::create()
26 {
27 return adoptRef(new TracedValue());
28 }
29
30 TracedValue::TracedValue()
31 {
32 m_stack.append(JSONObject::create());
33 }
34
35 TracedValue::~TracedValue()
36 {
37 ASSERT(m_stack.size() == 1);
38 }
39
40 void TracedValue::setInteger(const char* name, int value)
41 {
42 currentDictionary()->setNumber(name, value);
43 }
44
45 void TracedValue::setDouble(const char* name, double value)
46 {
47 currentDictionary()->setNumber(name, value);
48 }
49
50 void TracedValue::setBoolean(const char* name, bool value)
51 {
52 currentDictionary()->setBoolean(name, value);
53 }
54
55 void TracedValue::setString(const char* name, const String& value)
56 {
57 currentDictionary()->setString(name, threadSafeCopy(value));
58 }
59
60 void TracedValue::beginDictionary(const char* name)
61 {
62 RefPtr<JSONObject> dictionary = JSONObject::create();
63 currentDictionary()->setObject(name, dictionary);
64 m_stack.append(dictionary);
65 }
66
67 void TracedValue::beginArray(const char* name)
68 {
69 RefPtr<JSONArray> array = JSONArray::create();
70 currentDictionary()->setArray(name, array);
71 m_stack.append(array);
72 }
73
74 void TracedValue::endDictionary()
75 {
76 ASSERT(m_stack.size() > 1);
77 ASSERT(currentDictionary());
78 m_stack.removeLast();
79 }
80
81 void TracedValue::pushInteger(int value)
82 {
83 currentArray()->pushInt(value);
84 }
85
86 void TracedValue::pushDouble(double value)
87 {
88 currentArray()->pushNumber(value);
89 }
90
91 void TracedValue::pushBoolean(bool value)
92 {
93 currentArray()->pushBoolean(value);
94 }
95
96 void TracedValue::pushString(const String& value)
97 {
98 currentArray()->pushString(threadSafeCopy(value));
99 }
100
101 void TracedValue::beginArray()
102 {
103 RefPtr<JSONArray> array = JSONArray::create();
104 currentArray()->pushArray(array);
105 m_stack.append(array);
106 }
107
108 void TracedValue::beginDictionary()
109 {
110 RefPtr<JSONObject> dictionary = JSONObject::create();
111 currentArray()->pushObject(dictionary);
112 m_stack.append(dictionary);
113 }
114
115 void TracedValue::endArray()
116 {
117 ASSERT(m_stack.size() > 1);
118 ASSERT(currentArray());
119 m_stack.removeLast();
120 }
121
122 String TracedValue::asTraceFormat() const
123 {
124 ASSERT(m_stack.size() == 1);
125 return m_stack.first()->toJSONString();
126 }
127
128 JSONObject* TracedValue::currentDictionary() const
129 {
130 ASSERT(!m_stack.isEmpty());
131 ASSERT(m_stack.last()->type() == JSONValue::TypeObject);
132 return static_cast<JSONObject*>(m_stack.last().get());
133 }
134
135 JSONArray* TracedValue::currentArray() const
136 {
137 ASSERT(!m_stack.isEmpty());
138 ASSERT(m_stack.last()->type() == JSONValue::TypeArray);
139 return static_cast<JSONArray*>(m_stack.last().get());
140 }
141
142 }
OLDNEW
« no previous file with comments | « sky/engine/platform/TracedValue.h ('k') | sky/engine/platform/TracedValueTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698