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

Side by Side Diff: content/renderer/java/gin_java_bridge_value_converter.cc

Issue 2014323002: Use std::unique_ptr<base::Value> in V8ValueConverter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: android fixes Created 4 years, 6 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 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 #include "content/renderer/java/gin_java_bridge_value_converter.h" 5 #include "content/renderer/java/gin_java_bridge_value_converter.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <cmath> 10 #include <cmath>
(...skipping 20 matching lines...) Expand all
31 31
32 v8::Local<v8::Value> GinJavaBridgeValueConverter::ToV8Value( 32 v8::Local<v8::Value> GinJavaBridgeValueConverter::ToV8Value(
33 const base::Value* value, 33 const base::Value* value,
34 v8::Local<v8::Context> context) const { 34 v8::Local<v8::Context> context) const {
35 return converter_->ToV8Value(value, context); 35 return converter_->ToV8Value(value, context);
36 } 36 }
37 37
38 std::unique_ptr<base::Value> GinJavaBridgeValueConverter::FromV8Value( 38 std::unique_ptr<base::Value> GinJavaBridgeValueConverter::FromV8Value(
39 v8::Local<v8::Value> value, 39 v8::Local<v8::Value> value,
40 v8::Local<v8::Context> context) const { 40 v8::Local<v8::Context> context) const {
41 return base::WrapUnique(converter_->FromV8Value(value, context)); 41 return converter_->FromV8Value(value, context);
42 } 42 }
43 43
44 bool GinJavaBridgeValueConverter::FromV8Object( 44 bool GinJavaBridgeValueConverter::FromV8Object(
45 v8::Local<v8::Object> value, 45 v8::Local<v8::Object> value,
46 base::Value** out, 46 std::unique_ptr<base::Value>* out,
47 v8::Isolate* isolate, 47 v8::Isolate* isolate,
48 const FromV8ValueCallback& callback) const { 48 const FromV8ValueCallback& callback) const {
49 GinJavaBridgeObject* unwrapped; 49 GinJavaBridgeObject* unwrapped;
50 if (!gin::ConvertFromV8(isolate, value, &unwrapped)) { 50 if (!gin::ConvertFromV8(isolate, value, &unwrapped)) {
51 return false; 51 return false;
52 } 52 }
53 *out = 53 *out = GinJavaBridgeValue::CreateObjectIDValue(unwrapped->object_id());
54 GinJavaBridgeValue::CreateObjectIDValue(unwrapped->object_id()).release();
55 return true; 54 return true;
56 } 55 }
57 56
58 namespace { 57 namespace {
59 58
60 class TypedArraySerializer { 59 class TypedArraySerializer {
61 public: 60 public:
62 virtual ~TypedArraySerializer() {} 61 virtual ~TypedArraySerializer() {}
63 static std::unique_ptr<TypedArraySerializer> Create( 62 static std::unique_ptr<TypedArraySerializer> Create(
64 v8::Local<v8::TypedArray> typed_array); 63 v8::Local<v8::TypedArray> typed_array);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 return TypedArraySerializerImpl<double, double>::Create(typed_array); 116 return TypedArraySerializerImpl<double, double>::Create(typed_array);
118 } 117 }
119 NOTREACHED(); 118 NOTREACHED();
120 return std::unique_ptr<TypedArraySerializer>(); 119 return std::unique_ptr<TypedArraySerializer>();
121 } 120 }
122 121
123 } // namespace 122 } // namespace
124 123
125 bool GinJavaBridgeValueConverter::FromV8ArrayBuffer( 124 bool GinJavaBridgeValueConverter::FromV8ArrayBuffer(
126 v8::Local<v8::Object> value, 125 v8::Local<v8::Object> value,
127 base::Value** out, 126 std::unique_ptr<base::Value>* out,
128 v8::Isolate* isolate) const { 127 v8::Isolate* isolate) const {
129 if (!value->IsTypedArray()) { 128 if (!value->IsTypedArray()) {
130 *out = GinJavaBridgeValue::CreateUndefinedValue().release(); 129 *out = GinJavaBridgeValue::CreateUndefinedValue();
131 return true; 130 return true;
132 } 131 }
133 132
134 char* data = NULL; 133 char* data = NULL;
135 size_t data_length = 0; 134 size_t data_length = 0;
136 gin::ArrayBufferView view; 135 gin::ArrayBufferView view;
137 if (ConvertFromV8(isolate, value.As<v8::ArrayBufferView>(), &view)) { 136 if (ConvertFromV8(isolate, value.As<v8::ArrayBufferView>(), &view)) {
138 data = reinterpret_cast<char*>(view.bytes()); 137 data = reinterpret_cast<char*>(view.bytes());
139 data_length = view.num_bytes(); 138 data_length = view.num_bytes();
140 } 139 }
141 if (!data) { 140 if (!data) {
142 *out = GinJavaBridgeValue::CreateUndefinedValue().release(); 141 *out = GinJavaBridgeValue::CreateUndefinedValue();
143 return true; 142 return true;
144 } 143 }
145 144
146 base::ListValue* result = new base::ListValue(); 145 std::unique_ptr<base::ListValue> result(new base::ListValue);
147 *out = result;
148 std::unique_ptr<TypedArraySerializer> serializer( 146 std::unique_ptr<TypedArraySerializer> serializer(
149 TypedArraySerializer::Create(value.As<v8::TypedArray>())); 147 TypedArraySerializer::Create(value.As<v8::TypedArray>()));
150 serializer->serializeTo(data, data_length, result); 148 serializer->serializeTo(data, data_length, result.get());
149 *out = std::move(result);
151 return true; 150 return true;
152 } 151 }
153 152
154 bool GinJavaBridgeValueConverter::FromV8Number(v8::Local<v8::Number> value, 153 bool GinJavaBridgeValueConverter::FromV8Number(
155 base::Value** out) const { 154 v8::Local<v8::Number> value,
155 std::unique_ptr<base::Value>* out) const {
156 double double_value = value->Value(); 156 double double_value = value->Value();
157 if (std::isfinite(double_value)) 157 if (std::isfinite(double_value))
158 return false; 158 return false;
159 *out = GinJavaBridgeValue::CreateNonFiniteValue(double_value).release(); 159 *out = GinJavaBridgeValue::CreateNonFiniteValue(double_value);
160 return true; 160 return true;
161 } 161 }
162 162
163 bool GinJavaBridgeValueConverter::FromV8Undefined(base::Value** out) const { 163 bool GinJavaBridgeValueConverter::FromV8Undefined(
164 *out = GinJavaBridgeValue::CreateUndefinedValue().release(); 164 std::unique_ptr<base::Value>* out) const {
165 *out = GinJavaBridgeValue::CreateUndefinedValue();
165 return true; 166 return true;
166 } 167 }
167 168
168 } // namespace content 169 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/java/gin_java_bridge_value_converter.h ('k') | content/renderer/web_ui_extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698