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

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

Issue 26792002: Reland: Reland: Implement new Blink IDL attribute [SetReference] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 enum WrapperWorldType { 53 enum WrapperWorldType {
54 MainWorld, 54 MainWorld,
55 IsolatedWorld, 55 IsolatedWorld,
56 WorkerWorld 56 WorkerWorld
57 }; 57 };
58 58
59 typedef v8::Handle<v8::FunctionTemplate> (*GetTemplateFunction)(v8::Isolate* , WrapperWorldType); 59 typedef v8::Handle<v8::FunctionTemplate> (*GetTemplateFunction)(v8::Isolate* , WrapperWorldType);
60 typedef void (*DerefObjectFunction)(void*); 60 typedef void (*DerefObjectFunction)(void*);
61 typedef ActiveDOMObject* (*ToActiveDOMObjectFunction)(v8::Handle<v8::Object> ); 61 typedef ActiveDOMObject* (*ToActiveDOMObjectFunction)(v8::Handle<v8::Object> );
62 typedef EventTarget* (*ToEventTargetFunction)(v8::Handle<v8::Object>); 62 typedef EventTarget* (*ToEventTargetFunction)(v8::Handle<v8::Object>);
63 typedef void* (*OpaqueRootForGC)(void*, v8::Isolate*); 63 typedef void* (*ResolveWrapperReachabilityFunction)(void*, const v8::Persist ent<v8::Object>& wrapper, v8::Isolate*);
haraken 2013/10/10 06:08:32 ResolveWrapperReachabilityFunction => AddWrapperRe
kouhei (in TOK) 2013/10/10 06:20:02 Ack. Will do this later.
64 typedef void (*InstallPerContextPrototypePropertiesFunction)(v8::Handle<v8:: Object>, v8::Isolate*); 64 typedef void (*InstallPerContextPrototypePropertiesFunction)(v8::Handle<v8:: Object>, v8::Isolate*);
65 65
66 enum WrapperTypePrototype { 66 enum WrapperTypePrototype {
67 WrapperTypeObjectPrototype, 67 WrapperTypeObjectPrototype,
68 WrapperTypeErrorPrototype 68 WrapperTypeErrorPrototype
69 }; 69 };
70 70
71 // This struct provides a way to store a bunch of information that is helpfu l when unwrapping 71 // This struct provides a way to store a bunch of information that is helpfu l when unwrapping
72 // v8 objects. Each v8 bindings class has exactly one static WrapperTypeInfo member, so 72 // v8 objects. Each v8 bindings class has exactly one static WrapperTypeInfo member, so
73 // comparing pointers is a safe way to determine if types match. 73 // comparing pointers is a safe way to determine if types match.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 return toActiveDOMObjectFunction(object); 115 return toActiveDOMObjectFunction(object);
116 } 116 }
117 117
118 EventTarget* toEventTarget(v8::Handle<v8::Object> object) 118 EventTarget* toEventTarget(v8::Handle<v8::Object> object)
119 { 119 {
120 if (!toEventTargetFunction) 120 if (!toEventTargetFunction)
121 return 0; 121 return 0;
122 return toEventTargetFunction(object); 122 return toEventTargetFunction(object);
123 } 123 }
124 124
125 void* opaqueRootForGC(void* object, v8::Isolate* isolate) 125 void* resolveWrapperReachability(void* object, const v8::Persistent<v8:: Object>& wrapper, v8::Isolate* isolate)
haraken 2013/10/10 06:08:32 resolveWrapperReachability => addWrapperReachabili
kouhei (in TOK) 2013/10/10 06:20:02 Ack. Will do this later.
126 { 126 {
127 if (!opaqueRootForGCFunction) 127 if (!resolveWrapperReachabilityFunction)
128 return object; 128 return object;
129 return opaqueRootForGCFunction(object, isolate); 129 return resolveWrapperReachabilityFunction(object, wrapper, isolate);
130 } 130 }
131 131
132 const GetTemplateFunction getTemplateFunction; 132 const GetTemplateFunction getTemplateFunction;
133 const DerefObjectFunction derefObjectFunction; 133 const DerefObjectFunction derefObjectFunction;
134 const ToActiveDOMObjectFunction toActiveDOMObjectFunction; 134 const ToActiveDOMObjectFunction toActiveDOMObjectFunction;
135 const ToEventTargetFunction toEventTargetFunction; 135 const ToEventTargetFunction toEventTargetFunction;
136 const OpaqueRootForGC opaqueRootForGCFunction; 136 const ResolveWrapperReachabilityFunction resolveWrapperReachabilityFunct ion;
137 const InstallPerContextPrototypePropertiesFunction installPerContextProt otypePropertiesFunction; 137 const InstallPerContextPrototypePropertiesFunction installPerContextProt otypePropertiesFunction;
138 const WrapperTypeInfo* parentClass; 138 const WrapperTypeInfo* parentClass;
139 const WrapperTypePrototype wrapperTypePrototype; 139 const WrapperTypePrototype wrapperTypePrototype;
140 }; 140 };
141 141
142 template<typename T, int offset> 142 template<typename T, int offset>
143 inline T* getInternalField(const v8::Persistent<v8::Object>& persistent) 143 inline T* getInternalField(const v8::Persistent<v8::Object>& persistent)
144 { 144 {
145 // This would be unsafe, but InternalFieldCount and GetAlignedPointerFro mInternalField are guaranteed not to allocate 145 // This would be unsafe, but InternalFieldCount and GetAlignedPointerFro mInternalField are guaranteed not to allocate
146 const v8::Handle<v8::Object>& object = reinterpret_cast<const v8::Handle <v8::Object>&>(persistent); 146 const v8::Handle<v8::Object>& object = reinterpret_cast<const v8::Handle <v8::Object>&>(persistent);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 return configuration; 204 return configuration;
205 } 205 }
206 206
207 template<class ElementType> 207 template<class ElementType>
208 class WrapperTypeTraits { 208 class WrapperTypeTraits {
209 // specialized classes have thier own functions, which are generated by binding generator. 209 // specialized classes have thier own functions, which are generated by binding generator.
210 }; 210 };
211 } 211 }
212 212
213 #endif // WrapperTypeInfo_h 213 #endif // WrapperTypeInfo_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698