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

Unified Diff: content/renderer/v8_value_converter_impl.cc

Issue 248903003: Extend V8ValueConverter::Strategy for the needs of Gin Java Bridge (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/v8_value_converter_impl.cc
diff --git a/content/renderer/v8_value_converter_impl.cc b/content/renderer/v8_value_converter_impl.cc
index 37e1211c039b9b2d2c7eeca533d76af2b85fe257..d453c936478eef89c010e0845aaa5131c54aadfc 100644
--- a/content/renderer/v8_value_converter_impl.cc
+++ b/content/renderer/v8_value_converter_impl.cc
@@ -250,6 +250,12 @@ base::Value* V8ValueConverterImpl::FromV8ValueImpl(
if (val->IsBoolean())
return new base::FundamentalValue(val->ToBoolean()->Value());
+ if (val->IsNumber() && strategy_) {
+ base::Value* out = NULL;
+ if (strategy_->FromV8Number(val->ToNumber(), &out))
+ return out;
+ }
+
if (val->IsInt32())
return new base::FundamentalValue(val->ToInt32()->Value());
@@ -265,9 +271,15 @@ base::Value* V8ValueConverterImpl::FromV8ValueImpl(
return new base::StringValue(std::string(*utf8, utf8.length()));
}
- if (val->IsUndefined())
+ if (val->IsUndefined()) {
+ if (strategy_) {
+ base::Value* out = NULL;
+ if (strategy_->FromV8Undefined(&out))
+ return out;
+ }
// JSON.stringify ignores undefined.
return NULL;
+ }
if (val->IsDate()) {
if (!date_allowed_)
@@ -296,14 +308,11 @@ base::Value* V8ValueConverterImpl::FromV8ValueImpl(
return FromV8Object(val->ToObject(), state, isolate);
}
- if (val->IsObject()) {
- base::BinaryValue* binary_value = FromV8Buffer(val);
- if (binary_value) {
- return binary_value;
- } else {
- return FromV8Object(val->ToObject(), state, isolate);
- }
- }
+ if (val->IsArrayBuffer() || val->IsArrayBufferView())
+ return FromV8ArrayBuffer(val->ToObject());
+
+ if (val->IsObject())
+ return FromV8Object(val->ToObject(), state, isolate);
LOG(ERROR) << "Unexpected v8 value type encountered.";
return NULL;
@@ -360,8 +369,14 @@ base::Value* V8ValueConverterImpl::FromV8Array(
return result;
}
-base::BinaryValue* V8ValueConverterImpl::FromV8Buffer(
- v8::Handle<v8::Value> val) const {
+base::Value* V8ValueConverterImpl::FromV8ArrayBuffer(
+ v8::Handle<v8::Object> val) const {
+ if (strategy_) {
+ base::Value* out = NULL;
+ if (strategy_->FromV8ArrayBuffer(val, &out))
+ return out;
+ }
+
char* data = NULL;
size_t length = 0;

Powered by Google App Engine
This is Rietveld 408576698