| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |