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

Side by Side Diff: Source/platform/TracedValue.h

Issue 356013002: Add an assert that TracedValue builder closes only most recently opened container (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef TracedValue_h 5 #ifndef TracedValue_h
6 #define TracedValue_h 6 #define TracedValue_h
7 7
8 #include "platform/EventTracer.h" 8 #include "platform/EventTracer.h"
9 9
10 #include "wtf/PassRefPtr.h" 10 #include "wtf/PassRefPtr.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 Vector<RefPtr<JSONValue> > m_stack; 44 Vector<RefPtr<JSONValue> > m_stack;
45 }; 45 };
46 46
47 template <class OwnerType> 47 template <class OwnerType>
48 class TracedDictionary : public TracedValueBase { 48 class TracedDictionary : public TracedValueBase {
49 WTF_MAKE_NONCOPYABLE(TracedDictionary); 49 WTF_MAKE_NONCOPYABLE(TracedDictionary);
50 public: 50 public:
51 OwnerType& endDictionary() 51 OwnerType& endDictionary()
52 { 52 {
53 ASSERT(m_stack.size() == nestingLevel);
53 endCurrentDictionary(); 54 endCurrentDictionary();
54 return *reinterpret_cast<OwnerType*>(this); 55 return *reinterpret_cast<OwnerType*>(this);
55 } 56 }
56 57
57 TracedDictionary<TracedDictionary<OwnerType> >& beginDictionary(const char* name) 58 TracedDictionary<TracedDictionary<OwnerType> >& beginDictionary(const char* name)
58 { 59 {
59 beginDictionaryNamed(name); 60 beginDictionaryNamed(name);
60 return *reinterpret_cast<TracedDictionary<TracedDictionary<OwnerType> >* >(this); 61 return *reinterpret_cast<TracedDictionary<TracedDictionary<OwnerType> >* >(this);
61 } 62 }
62 TracedArray<TracedDictionary<OwnerType> >& beginArray(const char* name) 63 TracedArray<TracedDictionary<OwnerType> >& beginArray(const char* name)
(...skipping 15 matching lines...) Expand all
78 { 79 {
79 TracedValueBase::setBoolean(name, value); 80 TracedValueBase::setBoolean(name, value);
80 return *this; 81 return *this;
81 } 82 }
82 TracedDictionary<OwnerType>& setString(const char* name, const String& value ) 83 TracedDictionary<OwnerType>& setString(const char* name, const String& value )
83 { 84 {
84 TracedValueBase::setString(name, value); 85 TracedValueBase::setString(name, value);
85 return *this; 86 return *this;
86 } 87 }
87 88
89 static const size_t nestingLevel = OwnerType::nestingLevel + 1;
90
88 private: 91 private:
89 TracedDictionary(); 92 TracedDictionary();
90 ~TracedDictionary(); 93 ~TracedDictionary();
91 }; 94 };
92 95
93 template <class OwnerType> 96 template <class OwnerType>
94 class TracedArray : public TracedValueBase { 97 class TracedArray : public TracedValueBase {
95 WTF_MAKE_NONCOPYABLE(TracedArray); 98 WTF_MAKE_NONCOPYABLE(TracedArray);
96 public: 99 public:
97 TracedDictionary<TracedArray<OwnerType> >& beginDictionary() 100 TracedDictionary<TracedArray<OwnerType> >& beginDictionary()
98 { 101 {
99 pushDictionary(); 102 pushDictionary();
100 return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(th is); 103 return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(th is);
101 } 104 }
102 TracedDictionary<TracedArray<OwnerType> >& beginArray() 105 TracedDictionary<TracedArray<OwnerType> >& beginArray()
103 { 106 {
104 pushArray(); 107 pushArray();
105 return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(th is); 108 return *reinterpret_cast<TracedDictionary<TracedArray<OwnerType> >* >(th is);
106 } 109 }
107 OwnerType& endArray() 110 OwnerType& endArray()
108 { 111 {
112 ASSERT(m_stack.size() == nestingLevel);
109 endCurrentArray(); 113 endCurrentArray();
110 return *reinterpret_cast<OwnerType*>(this); 114 return *reinterpret_cast<OwnerType*>(this);
111 } 115 }
112 116
113 TracedArray<OwnerType>& pushInteger(int value) 117 TracedArray<OwnerType>& pushInteger(int value)
114 { 118 {
115 TracedValueBase::pushInteger(value); 119 TracedValueBase::pushInteger(value);
116 return *this; 120 return *this;
117 } 121 }
118 TracedArray<OwnerType>& pushDouble(double value) 122 TracedArray<OwnerType>& pushDouble(double value)
119 { 123 {
120 TracedValueBase::pushDouble(value); 124 TracedValueBase::pushDouble(value);
121 return *this; 125 return *this;
122 } 126 }
123 TracedArray<OwnerType>& pushBoolean(bool value) 127 TracedArray<OwnerType>& pushBoolean(bool value)
124 { 128 {
125 TracedValueBase::pushBoolean(value); 129 TracedValueBase::pushBoolean(value);
126 return *this; 130 return *this;
127 } 131 }
128 TracedArray<OwnerType>& pushString(const String& value) 132 TracedArray<OwnerType>& pushString(const String& value)
129 { 133 {
130 TracedValueBase::pushString(value); 134 TracedValueBase::pushString(value);
131 return *this; 135 return *this;
132 } 136 }
133 137
138 static const size_t nestingLevel = OwnerType::nestingLevel + 1;
139
134 private: 140 private:
135 TracedArray(); 141 TracedArray();
136 ~TracedArray(); 142 ~TracedArray();
137 }; 143 };
138 144
139 class PLATFORM_EXPORT TracedValue : public TracedValueBase { 145 class PLATFORM_EXPORT TracedValue : public TracedValueBase {
140 WTF_MAKE_NONCOPYABLE(TracedValue); 146 WTF_MAKE_NONCOPYABLE(TracedValue);
141 public: 147 public:
142 TracedValue(); 148 TracedValue();
143 ~TracedValue(); 149 ~TracedValue();
(...skipping 14 matching lines...) Expand all
158 { 164 {
159 TracedValueBase::setBoolean(name, value); 165 TracedValueBase::setBoolean(name, value);
160 return *this; 166 return *this;
161 } 167 }
162 TracedValue& setString(const char* name, const String& value) 168 TracedValue& setString(const char* name, const String& value)
163 { 169 {
164 TracedValueBase::setString(name, value); 170 TracedValueBase::setString(name, value);
165 return *this; 171 return *this;
166 } 172 }
167 PassRefPtr<TraceEvent::ConvertableToTraceFormat> finish(); 173 PassRefPtr<TraceEvent::ConvertableToTraceFormat> finish();
174
175 static const size_t nestingLevel = 1;
168 }; 176 };
169 177
170 } // namespace WebCore 178 } // namespace WebCore
171 179
172 #endif // TracedValue_h 180 #endif // TracedValue_h
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698