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

Side by Side Diff: Source/bindings/v8/V8Binding.h

Issue 344833002: Oilpan: move MessagePortArray to the heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased Created 6 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 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Ericsson AB. All rights reserved. 3 * Copyright (C) 2012 Ericsson AB. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 } else { 683 } else {
684 if (success) 684 if (success)
685 *success = false; 685 *success = false;
686 throwTypeError("Invalid Array element type", isolate); 686 throwTypeError("Invalid Array element type", isolate);
687 return WillBeHeapVector<RefPtrWillBeMember<T> >(); 687 return WillBeHeapVector<RefPtrWillBeMember<T> >();
688 } 688 }
689 } 689 }
690 return result; 690 return result;
691 } 691 }
692 692
693 template <class T, class V8T>
694 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArray(v8::Han dle<v8::Value> value, const String& propertyName, v8::Isolate* isolate, bool* su ccess = 0)
695 {
696 if (success)
697 *success = true;
698
699 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
700 uint32_t length = 0;
701 if (value->IsArray()) {
702 length = v8::Local<v8::Array>::Cast(v8Value)->Length();
703 } else if (toV8Sequence(value, length, isolate).IsEmpty()) {
704 throwTypeError(ExceptionMessages::notASequenceTypeProperty(propertyName) , isolate);
705 return WillBeHeapVector<RefPtrWillBeMember<T> >();
706 }
707
708 WillBeHeapVector<RefPtrWillBeMember<T> > result;
709 result.reserveInitialCapacity(length);
710 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value);
711 for (uint32_t i = 0; i < length; ++i) {
712 v8::Handle<v8::Value> element = object->Get(i);
713 if (V8T::hasInstance(element, isolate)) {
714 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast( element);
715 result.uncheckedAppend(V8T::toNative(elementObject));
716 } else {
717 if (success)
718 *success = false;
719 throwTypeError("Invalid Array element type", isolate);
720 return WillBeHeapVector<RefPtrWillBeMember<T> >();
721 }
722 }
723 return result;
724 }
725
693 // Converts a JavaScript value to an array as per the Web IDL specification: 726 // Converts a JavaScript value to an array as per the Web IDL specification:
694 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array 727 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array
695 template <class T> 728 template <class T>
696 Vector<T> toNativeArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isol ate* isolate) 729 Vector<T> toNativeArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isol ate* isolate)
697 { 730 {
698 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); 731 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value));
699 uint32_t length = 0; 732 uint32_t length = 0;
700 if (value->IsArray()) { 733 if (value->IsArray()) {
701 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); 734 length = v8::Local<v8::Array>::Cast(v8Value)->Length();
702 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { 735 } else if (toV8Sequence(value, length, isolate).IsEmpty()) {
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 m_block.Reset(); 999 m_block.Reset();
967 } 1000 }
968 1001
969 private: 1002 private:
970 v8::TryCatch& m_block; 1003 v8::TryCatch& m_block;
971 }; 1004 };
972 1005
973 } // namespace WebCore 1006 } // namespace WebCore
974 1007
975 #endif // V8Binding_h 1008 #endif // V8Binding_h
OLDNEW
« no previous file with comments | « Source/bindings/v8/SerializedScriptValue.cpp ('k') | Source/bindings/v8/custom/V8MessageEventCustom.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698