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

Side by Side Diff: third_party/WebKit/Source/modules/peerconnection/RTCStatsReport.cpp

Issue 2395503002: WebRTCStatsMember: Support for bool and sequence of bool (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "modules/peerconnection/RTCStatsReport.h" 5 #include "modules/peerconnection/RTCStatsReport.h"
6 6
7 namespace blink { 7 namespace blink {
8 8
9 namespace { 9 namespace {
10 10
11 template <typename T> 11 template <typename T>
12 bool addPropertyValue(v8::Local<v8::Object>& v8Object, 12 bool addPropertyValue(v8::Local<v8::Object>& v8Object,
13 v8::Isolate* isolate, 13 v8::Isolate* isolate,
14 T name, 14 T name,
15 v8::Local<v8::Value> value) { 15 v8::Local<v8::Value> value) {
16 return v8CallBoolean(v8Object->CreateDataProperty( 16 return v8CallBoolean(v8Object->CreateDataProperty(
17 isolate->GetCurrentContext(), v8String(isolate, name), value)); 17 isolate->GetCurrentContext(), v8String(isolate, name), value));
18 } 18 }
19 19
20 bool addPropertySequenceOfBooleans(v8::Local<v8::Object>& v8Object,
21 v8::Isolate* isolate,
22 WebString name,
23 const WebVector<int>& webVector) {
24 v8::Local<v8::Array> v8Array = v8::Array::New(isolate, webVector.size());
25 for (size_t i = 0; i < webVector.size(); ++i) {
26 if (!v8CallBoolean(v8Array->CreateDataProperty(
27 isolate->GetCurrentContext(), static_cast<uint32_t>(i),
28 v8::Boolean::New(isolate, static_cast<bool>(webVector[i])))))
29 return false;
30 }
31 return addPropertyValue(v8Object, isolate, name, v8Array);
32 }
33
20 template <typename T> 34 template <typename T>
21 bool addPropertySequenceOfNumbers(v8::Local<v8::Object>& v8Object, 35 bool addPropertySequenceOfNumbers(v8::Local<v8::Object>& v8Object,
22 v8::Isolate* isolate, 36 v8::Isolate* isolate,
23 WebString name, 37 WebString name,
24 const WebVector<T>& webVector) { 38 const WebVector<T>& webVector) {
25 v8::Local<v8::Array> v8Array = v8::Array::New(isolate, webVector.size()); 39 v8::Local<v8::Array> v8Array = v8::Array::New(isolate, webVector.size());
26 for (size_t i = 0; i < webVector.size(); ++i) { 40 for (size_t i = 0; i < webVector.size(); ++i) {
27 if (!v8CallBoolean(v8Array->CreateDataProperty( 41 if (!v8CallBoolean(v8Array->CreateDataProperty(
28 isolate->GetCurrentContext(), static_cast<uint32_t>(i), 42 isolate->GetCurrentContext(), static_cast<uint32_t>(i),
29 v8::Number::New(isolate, static_cast<double>(webVector[i]))))) 43 v8::Number::New(isolate, static_cast<double>(webVector[i])))))
(...skipping 27 matching lines...) Expand all
57 success &= addPropertyValue(v8Object, isolate, "timestamp", 71 success &= addPropertyValue(v8Object, isolate, "timestamp",
58 v8::Number::New(isolate, stats->timestamp())); 72 v8::Number::New(isolate, stats->timestamp()));
59 success &= addPropertyValue(v8Object, isolate, "type", 73 success &= addPropertyValue(v8Object, isolate, "type",
60 v8String(isolate, stats->type())); 74 v8String(isolate, stats->type()));
61 for (size_t i = 0; i < stats->membersCount() && success; ++i) { 75 for (size_t i = 0; i < stats->membersCount() && success; ++i) {
62 std::unique_ptr<WebRTCStatsMember> member = stats->getMember(i); 76 std::unique_ptr<WebRTCStatsMember> member = stats->getMember(i);
63 if (!member->isDefined()) 77 if (!member->isDefined())
64 continue; 78 continue;
65 WebString name = member->name(); 79 WebString name = member->name();
66 switch (member->type()) { 80 switch (member->type()) {
81 case WebRTCStatsMemberTypeBool:
82 success &=
83 addPropertyValue(v8Object, isolate, name,
84 v8::Boolean::New(isolate, member->valueBool()));
85 break;
67 case WebRTCStatsMemberTypeInt32: 86 case WebRTCStatsMemberTypeInt32:
68 success &= addPropertyValue( 87 success &= addPropertyValue(
69 v8Object, isolate, name, 88 v8Object, isolate, name,
70 v8::Number::New(isolate, 89 v8::Number::New(isolate,
71 static_cast<double>(member->valueInt32()))); 90 static_cast<double>(member->valueInt32())));
72 break; 91 break;
73 case WebRTCStatsMemberTypeUint32: 92 case WebRTCStatsMemberTypeUint32:
74 success &= addPropertyValue( 93 success &= addPropertyValue(
75 v8Object, isolate, name, 94 v8Object, isolate, name,
76 v8::Number::New(isolate, 95 v8::Number::New(isolate,
(...skipping 13 matching lines...) Expand all
90 break; 109 break;
91 case WebRTCStatsMemberTypeDouble: 110 case WebRTCStatsMemberTypeDouble:
92 success &= 111 success &=
93 addPropertyValue(v8Object, isolate, name, 112 addPropertyValue(v8Object, isolate, name,
94 v8::Number::New(isolate, member->valueDouble())); 113 v8::Number::New(isolate, member->valueDouble()));
95 break; 114 break;
96 case WebRTCStatsMemberTypeString: 115 case WebRTCStatsMemberTypeString:
97 success &= addPropertyValue(v8Object, isolate, name, 116 success &= addPropertyValue(v8Object, isolate, name,
98 v8String(isolate, member->valueString())); 117 v8String(isolate, member->valueString()));
99 break; 118 break;
119 case WebRTCStatsMemberTypeSequenceBool:
120 success &= addPropertySequenceOfBooleans(v8Object, isolate, name,
121 member->valueSequenceBool());
122 break;
100 case WebRTCStatsMemberTypeSequenceInt32: 123 case WebRTCStatsMemberTypeSequenceInt32:
101 success &= addPropertySequenceOfNumbers(v8Object, isolate, name, 124 success &= addPropertySequenceOfNumbers(v8Object, isolate, name,
102 member->valueSequenceInt32()); 125 member->valueSequenceInt32());
103 break; 126 break;
104 case WebRTCStatsMemberTypeSequenceUint32: 127 case WebRTCStatsMemberTypeSequenceUint32:
105 success &= addPropertySequenceOfNumbers(v8Object, isolate, name, 128 success &= addPropertySequenceOfNumbers(v8Object, isolate, name,
106 member->valueSequenceUint32()); 129 member->valueSequenceUint32());
107 break; 130 break;
108 case WebRTCStatsMemberTypeSequenceInt64: 131 case WebRTCStatsMemberTypeSequenceInt64:
109 success &= addPropertySequenceOfNumbers(v8Object, isolate, name, 132 success &= addPropertySequenceOfNumbers(v8Object, isolate, name,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 v8::Local<v8::Value>& value, 192 v8::Local<v8::Value>& value,
170 ExceptionState&) { 193 ExceptionState&) {
171 std::unique_ptr<WebRTCStats> stats = m_report->getStats(key); 194 std::unique_ptr<WebRTCStats> stats = m_report->getStats(key);
172 if (!stats) 195 if (!stats)
173 return false; 196 return false;
174 value = webRTCStatsToValue(scriptState, stats.get()); 197 value = webRTCStatsToValue(scriptState, stats.get());
175 return true; 198 return true;
176 } 199 }
177 200
178 } // namespace blink 201 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698