| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ | 5 #ifndef SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ |
| 6 #define SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ | 6 #define SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ |
| 7 | 7 |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/template_util.h" | 9 #include "base/template_util.h" |
| 10 #include "dart/runtime/include/dart_api.h" | 10 #include "dart/runtime/include/dart_api.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 // and provide information about their wrapper. There is no need to call your | 33 // and provide information about their wrapper. There is no need to call your |
| 34 // base class's implementation of this function. | 34 // base class's implementation of this function. |
| 35 virtual const DartWrapperInfo& GetDartWrapperInfo() const = 0; | 35 virtual const DartWrapperInfo& GetDartWrapperInfo() const = 0; |
| 36 | 36 |
| 37 // Subclasses that wish to integrate with the Dart garbage collector should | 37 // Subclasses that wish to integrate with the Dart garbage collector should |
| 38 // override this function. Please call your base class's AcceptDartGCVisitor | 38 // override this function. Please call your base class's AcceptDartGCVisitor |
| 39 // at the end of your override. | 39 // at the end of your override. |
| 40 virtual void AcceptDartGCVisitor(DartGCVisitor& visitor) const; | 40 virtual void AcceptDartGCVisitor(DartGCVisitor& visitor) const; |
| 41 | 41 |
| 42 Dart_Handle CreateDartWrapper(DartState* dart_state); | 42 Dart_Handle CreateDartWrapper(DartState* dart_state); |
| 43 void AssociateWithDartWrapper(Dart_NativeArguments args); |
| 43 Dart_WeakPersistentHandle dart_wrapper() const { return dart_wrapper_; } | 44 Dart_WeakPersistentHandle dart_wrapper() const { return dart_wrapper_; } |
| 44 | 45 |
| 45 protected: | 46 protected: |
| 46 virtual ~DartWrappable(); | 47 virtual ~DartWrappable(); |
| 47 | 48 |
| 48 private: | 49 private: |
| 49 static void FinalizeDartWrapper(void* isolate_callback_data, | 50 static void FinalizeDartWrapper(void* isolate_callback_data, |
| 50 Dart_WeakPersistentHandle wrapper, | 51 Dart_WeakPersistentHandle wrapper, |
| 51 void* peer); | 52 void* peer); |
| 52 | 53 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 static Dart_Handle ToDart(RefPtr<T> val) { | 127 static Dart_Handle ToDart(RefPtr<T> val) { |
| 127 return DartConverter<T*>::ToDart(val.get()); | 128 return DartConverter<T*>::ToDart(val.get()); |
| 128 } | 129 } |
| 129 | 130 |
| 130 static RefPtr<T> FromDart(Dart_Handle handle) { | 131 static RefPtr<T> FromDart(Dart_Handle handle) { |
| 131 return DartConverter<T*>::FromDart(handle); | 132 return DartConverter<T*>::FromDart(handle); |
| 132 } | 133 } |
| 133 }; | 134 }; |
| 134 | 135 |
| 135 template<typename T> | 136 template<typename T> |
| 136 static T* GetReceiver(Dart_NativeArguments args) { | 137 inline T* GetReceiver(Dart_NativeArguments args) { |
| 137 intptr_t receiver; | 138 intptr_t receiver; |
| 138 Dart_Handle result = Dart_GetNativeReceiver(args, &receiver); | 139 Dart_Handle result = Dart_GetNativeReceiver(args, &receiver); |
| 139 DCHECK(!Dart_IsError(result)); | 140 DCHECK(!Dart_IsError(result)); |
| 140 return static_cast<T*>(reinterpret_cast<DartWrappable*>(receiver)); | 141 return static_cast<T*>(reinterpret_cast<DartWrappable*>(receiver)); |
| 141 } | 142 } |
| 142 | 143 |
| 143 } // namespace blink | 144 } // namespace blink |
| 144 | 145 |
| 145 #endif // SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ | 146 #endif // SKY_ENGINE_TONIC_DART_WRAPPABLE_H_ |
| OLD | NEW |