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

Side by Side Diff: Source/bindings/dart/DartDOMWrapper.h

Issue 313183003: [dartium] Use ScriptWrappable when there are multiple Dart wrappers. (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/1985
Patch Set: 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011, Google Inc. 1 // Copyright 2011, Google Inc.
2 // All rights reserved. 2 // 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 class DartDOMWrapper { 58 class DartDOMWrapper {
59 public: 59 public:
60 template <class BindingsClass> 60 template <class BindingsClass>
61 static Dart_WeakPersistentHandle lookupWrapper(DartDOMData* domData, typenam e BindingsClass::NativeType* domObject) 61 static Dart_WeakPersistentHandle lookupWrapper(DartDOMData* domData, typenam e BindingsClass::NativeType* domObject)
62 { 62 {
63 typedef DartDOMWrapperTraits<BindingsClass> Traits; 63 typedef DartDOMWrapperTraits<BindingsClass> Traits;
64 ASSERT(domObject); 64 ASSERT(domObject);
65 ASSERT(domData); 65 ASSERT(domData);
66 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) { 66 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) {
67 Dart_WeakPersistentHandle wrapper = (Dart_WeakPersistentHandle)(Scri ptWrappable::fromObject(domObject)->getDartWrapper(domData)); 67 Dart_WeakPersistentHandle wrapper = (Dart_WeakPersistentHandle)(Scri ptWrappable::fromObject(domObject)->getDartWrapper(domData));
68 if (wrapper) 68
69 return wrapper; 69 #ifdef DEBUG
vsm 2014/06/06 13:39:45 Isn't this redundant with the ASSERT?
rmacnak 2014/06/06 21:26:31 Leftover from copy-paste from asserts that needed
70 // FIXMEDART: Assert absence from map when multi-isolate wrapper inf o is implemeted. 70 ASSERT(wrapper == Traits::MapTraits::domMap(domData)->get(domObject) );
71 #endif
72 return wrapper;
71 } 73 }
72 return Traits::MapTraits::domMap(domData)->get(domObject); 74 return Traits::MapTraits::domMap(domData)->get(domObject);
73 } 75 }
74 76
75 template <class BindingsClass> 77 template <class BindingsClass>
76 static Dart_Handle createWrapper(DartDOMData* domData, typename BindingsClas s::NativeType* domObject) 78 static Dart_Handle createWrapper(DartDOMData* domData, typename BindingsClas s::NativeType* domObject)
77 { 79 {
78 ASSERT(domObject); 80 ASSERT(domObject);
79 ASSERT(domData); 81 ASSERT(domData);
80 return createWrapper<BindingsClass>( 82 return createWrapper<BindingsClass>(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 template <class BindingsClass> 296 template <class BindingsClass>
295 static void wrapperWeakCallback(void* isolateCallbackData, Dart_WeakPersiste ntHandle wrapper, void* blinkHandle) 297 static void wrapperWeakCallback(void* isolateCallbackData, Dart_WeakPersiste ntHandle wrapper, void* blinkHandle)
296 { 298 {
297 typedef DartDOMWrapperTraits<BindingsClass> Traits; 299 typedef DartDOMWrapperTraits<BindingsClass> Traits;
298 DartDOMData* domData = reinterpret_cast<DartDOMData*>(isolateCallbackDat a); 300 DartDOMData* domData = reinterpret_cast<DartDOMData*>(isolateCallbackDat a);
299 typename BindingsClass::NativeType* domObject = Traits::GCTraits::read(b linkHandle); 301 typename BindingsClass::NativeType* domObject = Traits::GCTraits::read(b linkHandle);
300 302
301 Dart_WeakPersistentHandle currentWrapper = 0; 303 Dart_WeakPersistentHandle currentWrapper = 0;
302 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) { 304 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) {
303 currentWrapper = (Dart_WeakPersistentHandle)(ScriptWrappable::fromOb ject(domObject)->getDartWrapper(domData)); 305 currentWrapper = (Dart_WeakPersistentHandle)(ScriptWrappable::fromOb ject(domObject)->getDartWrapper(domData));
304 } 306 #ifdef DEBUG
vsm 2014/06/06 13:39:46 ditto
305 if (!currentWrapper) { 307 ASSERT(currentWrapper == Traits::MapTraits::domMap(domData)->get(dom Object));
308 #endif
309 } else {
306 currentWrapper = Traits::MapTraits::domMap(domData)->get(domObject); 310 currentWrapper = Traits::MapTraits::domMap(domData)->get(domObject);
307 } 311 }
312
308 // This could be an old wrapper which has been replaced with a custom el ement. 313 // This could be an old wrapper which has been replaced with a custom el ement.
309 if (currentWrapper != wrapper) { 314 if (currentWrapper != wrapper) {
310 #ifdef DEBUG 315 #ifdef DEBUG
311 DartApiScope scope; 316 DartApiScope scope;
312 ASSERT(!Dart_IdentityEquals(Dart_HandleFromWeakPersistent(currentWra pper), Dart_HandleFromWeakPersistent(wrapper))); 317 ASSERT(!Dart_IdentityEquals(Dart_HandleFromWeakPersistent(currentWra pper), Dart_HandleFromWeakPersistent(wrapper)));
313 #endif 318 #endif
314 return; 319 return;
315 } 320 }
316 321
317 if (currentWrapper) { 322 if (currentWrapper) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 }; 490 };
486 typedef MessagePortMapTraits MapTraits; 491 typedef MessagePortMapTraits MapTraits;
487 typedef DartDOMWrapperActiveTraits<DartMessagePort, false> ActiveTraits; 492 typedef DartDOMWrapperActiveTraits<DartMessagePort, false> ActiveTraits;
488 typedef DartDOMWrapperEventTargetTraits<DartMessagePort, true> EventTargetTr aits; 493 typedef DartDOMWrapperEventTargetTraits<DartMessagePort, true> EventTargetTr aits;
489 typedef DartDOMWrapperGarbageCollectedTraits<DartMessagePort, false> GCTrait s; 494 typedef DartDOMWrapperGarbageCollectedTraits<DartMessagePort, false> GCTrait s;
490 }; 495 };
491 496
492 } 497 }
493 498
494 #endif // DartDOMWrapper_h 499 #endif // DartDOMWrapper_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698