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

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 ASSERT(wrapper == Traits::MapTraits::domMap(domData)->get(domObject) );
69 return wrapper; 69 return wrapper;
70 // FIXMEDART: Assert absence from map when multi-isolate wrapper inf o is implemeted.
71 } 70 }
72 return Traits::MapTraits::domMap(domData)->get(domObject); 71 return Traits::MapTraits::domMap(domData)->get(domObject);
73 } 72 }
74 73
75 template <class BindingsClass> 74 template <class BindingsClass>
76 static Dart_Handle createWrapper(DartDOMData* domData, typename BindingsClas s::NativeType* domObject) 75 static Dart_Handle createWrapper(DartDOMData* domData, typename BindingsClas s::NativeType* domObject)
77 { 76 {
78 ASSERT(domObject); 77 ASSERT(domObject);
79 ASSERT(domData); 78 ASSERT(domData);
80 return createWrapper<BindingsClass>( 79 return createWrapper<BindingsClass>(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 template <class BindingsClass> 293 template <class BindingsClass>
295 static void wrapperWeakCallback(void* isolateCallbackData, Dart_WeakPersiste ntHandle wrapper, void* blinkHandle) 294 static void wrapperWeakCallback(void* isolateCallbackData, Dart_WeakPersiste ntHandle wrapper, void* blinkHandle)
296 { 295 {
297 typedef DartDOMWrapperTraits<BindingsClass> Traits; 296 typedef DartDOMWrapperTraits<BindingsClass> Traits;
298 DartDOMData* domData = reinterpret_cast<DartDOMData*>(isolateCallbackDat a); 297 DartDOMData* domData = reinterpret_cast<DartDOMData*>(isolateCallbackDat a);
299 typename BindingsClass::NativeType* domObject = Traits::GCTraits::read(b linkHandle); 298 typename BindingsClass::NativeType* domObject = Traits::GCTraits::read(b linkHandle);
300 299
301 Dart_WeakPersistentHandle currentWrapper = 0; 300 Dart_WeakPersistentHandle currentWrapper = 0;
302 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) { 301 if (ScriptWrappable::wrapperCanBeStoredInObject(domObject)) {
303 currentWrapper = (Dart_WeakPersistentHandle)(ScriptWrappable::fromOb ject(domObject)->getDartWrapper(domData)); 302 currentWrapper = (Dart_WeakPersistentHandle)(ScriptWrappable::fromOb ject(domObject)->getDartWrapper(domData));
304 } 303 ASSERT(currentWrapper == Traits::MapTraits::domMap(domData)->get(dom Object));
305 if (!currentWrapper) { 304 } else {
306 currentWrapper = Traits::MapTraits::domMap(domData)->get(domObject); 305 currentWrapper = Traits::MapTraits::domMap(domData)->get(domObject);
307 } 306 }
307
308 // This could be an old wrapper which has been replaced with a custom el ement. 308 // This could be an old wrapper which has been replaced with a custom el ement.
309 if (currentWrapper != wrapper) { 309 if (currentWrapper != wrapper) {
310 #ifdef DEBUG 310 #ifdef DEBUG
311 DartApiScope scope; 311 DartApiScope scope;
312 ASSERT(!Dart_IdentityEquals(Dart_HandleFromWeakPersistent(currentWra pper), Dart_HandleFromWeakPersistent(wrapper))); 312 ASSERT(!Dart_IdentityEquals(Dart_HandleFromWeakPersistent(currentWra pper), Dart_HandleFromWeakPersistent(wrapper)));
313 #endif 313 #endif
314 return; 314 return;
315 } 315 }
316 316
317 if (currentWrapper) { 317 if (currentWrapper) {
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 }; 485 };
486 typedef MessagePortMapTraits MapTraits; 486 typedef MessagePortMapTraits MapTraits;
487 typedef DartDOMWrapperActiveTraits<DartMessagePort, false> ActiveTraits; 487 typedef DartDOMWrapperActiveTraits<DartMessagePort, false> ActiveTraits;
488 typedef DartDOMWrapperEventTargetTraits<DartMessagePort, true> EventTargetTr aits; 488 typedef DartDOMWrapperEventTargetTraits<DartMessagePort, true> EventTargetTr aits;
489 typedef DartDOMWrapperGarbageCollectedTraits<DartMessagePort, false> GCTrait s; 489 typedef DartDOMWrapperGarbageCollectedTraits<DartMessagePort, false> GCTrait s;
490 }; 490 };
491 491
492 } 492 }
493 493
494 #endif // DartDOMWrapper_h 494 #endif // DartDOMWrapper_h
OLDNEW
« no previous file with comments | « LayoutTests/dart/resources/multi-wrapper-frame-child.html ('k') | Source/bindings/dart/DartScriptWrappable.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698