OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/child/v8_value_converter_impl.h" | 5 #include "content/child/v8_value_converter_impl.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 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 if (!maybe.IsJust() || !maybe.FromJust()) | 332 if (!maybe.IsJust() || !maybe.FromJust()) |
333 LOG(ERROR) << "Failed to set property with key " << key; | 333 LOG(ERROR) << "Failed to set property with key " << key; |
334 } | 334 } |
335 | 335 |
336 return result; | 336 return result; |
337 } | 337 } |
338 | 338 |
339 v8::Local<v8::Value> V8ValueConverterImpl::ToArrayBuffer( | 339 v8::Local<v8::Value> V8ValueConverterImpl::ToArrayBuffer( |
340 v8::Isolate* isolate, | 340 v8::Isolate* isolate, |
341 v8::Local<v8::Object> creation_context, | 341 v8::Local<v8::Object> creation_context, |
342 const base::BinaryValue* value) const { | 342 const base::Value* value) const { |
343 DCHECK(creation_context->CreationContext() == isolate->GetCurrentContext()); | 343 DCHECK(creation_context->CreationContext() == isolate->GetCurrentContext()); |
344 v8::Local<v8::ArrayBuffer> buffer = | 344 v8::Local<v8::ArrayBuffer> buffer = |
345 v8::ArrayBuffer::New(isolate, value->GetSize()); | 345 v8::ArrayBuffer::New(isolate, value->GetSize()); |
346 memcpy(buffer->GetContents().Data(), value->GetBuffer(), value->GetSize()); | 346 memcpy(buffer->GetContents().Data(), value->GetBuffer(), value->GetSize()); |
347 return buffer; | 347 return buffer; |
348 } | 348 } |
349 | 349 |
350 std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8ValueImpl( | 350 std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8ValueImpl( |
351 FromV8ValueState* state, | 351 FromV8ValueState* state, |
352 v8::Local<v8::Value> val, | 352 v8::Local<v8::Value> val, |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 v8::Local<v8::Object> val, | 495 v8::Local<v8::Object> val, |
496 v8::Isolate* isolate) const { | 496 v8::Isolate* isolate) const { |
497 if (strategy_) { | 497 if (strategy_) { |
498 std::unique_ptr<base::Value> out; | 498 std::unique_ptr<base::Value> out; |
499 if (strategy_->FromV8ArrayBuffer(val, &out, isolate)) | 499 if (strategy_->FromV8ArrayBuffer(val, &out, isolate)) |
500 return out; | 500 return out; |
501 } | 501 } |
502 | 502 |
503 if (val->IsArrayBuffer()) { | 503 if (val->IsArrayBuffer()) { |
504 auto contents = val.As<v8::ArrayBuffer>()->GetContents(); | 504 auto contents = val.As<v8::ArrayBuffer>()->GetContents(); |
505 return base::BinaryValue::CreateWithCopiedBuffer( | 505 return base::Value::CreateWithCopiedBuffer( |
506 static_cast<const char*>(contents.Data()), contents.ByteLength()); | 506 static_cast<const char*>(contents.Data()), contents.ByteLength()); |
507 } else if (val->IsArrayBufferView()) { | 507 } else if (val->IsArrayBufferView()) { |
508 v8::Local<v8::ArrayBufferView> view = val.As<v8::ArrayBufferView>(); | 508 v8::Local<v8::ArrayBufferView> view = val.As<v8::ArrayBufferView>(); |
509 size_t byte_length = view->ByteLength(); | 509 size_t byte_length = view->ByteLength(); |
510 std::vector<char> buffer(byte_length); | 510 std::vector<char> buffer(byte_length); |
511 view->CopyContents(buffer.data(), buffer.size()); | 511 view->CopyContents(buffer.data(), buffer.size()); |
512 return base::MakeUnique<base::BinaryValue>(std::move(buffer)); | 512 return base::MakeUnique<base::Value>(std::move(buffer)); |
513 } else { | 513 } else { |
514 NOTREACHED() << "Only ArrayBuffer and ArrayBufferView should get here."; | 514 NOTREACHED() << "Only ArrayBuffer and ArrayBufferView should get here."; |
515 return nullptr; | 515 return nullptr; |
516 } | 516 } |
517 } | 517 } |
518 | 518 |
519 std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8Object( | 519 std::unique_ptr<base::Value> V8ValueConverterImpl::FromV8Object( |
520 v8::Local<v8::Object> val, | 520 v8::Local<v8::Object> val, |
521 FromV8ValueState* state, | 521 FromV8ValueState* state, |
522 v8::Isolate* isolate) const { | 522 v8::Isolate* isolate) const { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 continue; | 615 continue; |
616 | 616 |
617 result->SetWithoutPathExpansion(std::string(*name_utf8, name_utf8.length()), | 617 result->SetWithoutPathExpansion(std::string(*name_utf8, name_utf8.length()), |
618 std::move(child)); | 618 std::move(child)); |
619 } | 619 } |
620 | 620 |
621 return std::move(result); | 621 return std::move(result); |
622 } | 622 } |
623 | 623 |
624 } // namespace content | 624 } // namespace content |
OLD | NEW |