OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 m_map.SetReference(key, parent); | 63 m_map.SetReference(key, parent); |
64 } | 64 } |
65 | 65 |
66 bool containsKey(KeyType* key) | 66 bool containsKey(KeyType* key) |
67 { | 67 { |
68 return m_map.Contains(key); | 68 return m_map.Contains(key); |
69 } | 69 } |
70 | 70 |
71 void set(KeyType* key, v8::Handle<v8::Object> wrapper, const WrapperConfigur
ation& configuration) | 71 void set(KeyType* key, v8::Handle<v8::Object> wrapper, const WrapperConfigur
ation& configuration) |
72 { | 72 { |
73 ASSERT(static_cast<KeyType*>(toNative(wrapper)) == key); | 73 ASSERT(reinterpret_cast<KeyType*>(toInternalPointer(wrapper)) == key); |
74 RELEASE_ASSERT(!containsKey(key)); // See crbug.com/368095 | 74 RELEASE_ASSERT(!containsKey(key)); // See crbug.com/368095 |
75 v8::UniquePersistent<v8::Object> unique(m_isolate, wrapper); | 75 v8::UniquePersistent<v8::Object> unique(m_isolate, wrapper); |
76 configuration.configureWrapper(&unique); | 76 configuration.configureWrapper(&unique); |
77 m_map.Set(key, unique.Pass()); | 77 m_map.Set(key, unique.Pass()); |
78 } | 78 } |
79 | 79 |
80 void clear() | 80 void clear() |
81 { | 81 { |
82 m_map.Clear(); | 82 m_map.Clear(); |
83 } | 83 } |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 | 135 |
136 static MapType* MapFromWeakCallbackData( | 136 static MapType* MapFromWeakCallbackData( |
137 const v8::WeakCallbackData<v8::Object, WeakCallbackDataType>& data) | 137 const v8::WeakCallbackData<v8::Object, WeakCallbackDataType>& data) |
138 { | 138 { |
139 return data.GetParameter(); | 139 return data.GetParameter(); |
140 } | 140 } |
141 | 141 |
142 static KeyType* KeyFromWeakCallbackData( | 142 static KeyType* KeyFromWeakCallbackData( |
143 const v8::WeakCallbackData<v8::Object, WeakCallbackDataType>& data) | 143 const v8::WeakCallbackData<v8::Object, WeakCallbackDataType>& data) |
144 { | 144 { |
145 return static_cast<KeyType*>(toNative(data.GetValue())); | 145 return reinterpret_cast<KeyType*>(toInternalPointer(data.GetValue())
); |
146 } | 146 } |
147 | 147 |
148 // Dispose traits: | 148 // Dispose traits: |
149 // Generally nothing to do, but see below for a specialization for | 149 // Generally nothing to do, but see below for a specialization for |
150 // DomWrapperMap<void>. | 150 // DomWrapperMap<void>. |
151 static void Dispose(v8::Isolate* isolate, v8::UniquePersistent<v8::Objec
t> value, KeyType* key) { } | 151 static void Dispose(v8::Isolate* isolate, v8::UniquePersistent<v8::Objec
t> value, KeyType* key) { } |
152 }; | 152 }; |
153 | 153 |
154 v8::Isolate* m_isolate; | 154 v8::Isolate* m_isolate; |
155 typename PersistentValueMapTraits::MapType m_map; | 155 typename PersistentValueMapTraits::MapType m_map; |
156 }; | 156 }; |
157 | 157 |
158 template <> | 158 template <> |
159 inline void DOMWrapperMap<void>::PersistentValueMapTraits::Dispose( | 159 inline void DOMWrapperMap<void>::PersistentValueMapTraits::Dispose( |
160 v8::Isolate* isolate, | 160 v8::Isolate* isolate, |
161 v8::UniquePersistent<v8::Object> value, | 161 v8::UniquePersistent<v8::Object> value, |
162 void* key) | 162 void* key) |
163 { | 163 { |
164 RELEASE_ASSERT(!value.IsEmpty()); // See crbug.com/368095. | 164 RELEASE_ASSERT(!value.IsEmpty()); // See crbug.com/368095. |
165 releaseObject(v8::Local<v8::Object>::New(isolate, value)); | 165 releaseObject(v8::Local<v8::Object>::New(isolate, value)); |
166 } | 166 } |
167 | 167 |
168 } // namespace blink | 168 } // namespace blink |
169 | 169 |
170 #endif // DOMWrapperMap_h | 170 #endif // DOMWrapperMap_h |
OLD | NEW |