1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CLASS_REQUIRES_FINALIZATION_BASE_H_ 6 #define CLASS_REQUIRES_FINALIZATION_BASE_H_ 7 8 #include "heap/stubs.h" 9 10 namespace blink { 11 12 class A : public GarbageCollected<A> { 13 public: 14 virtual void trace(Visitor*) {} 15 }; 16 17 class B { 18 public: 19 ~B() { /* user-declared, thus, non-trivial */ } 20 }; 21 22 // Second base class needs finalization. 23 class NeedsFinalizer : public A, public B { 24 public: 25 void trace(Visitor*); 26 }; 27 28 // Base does not need finalization. 29 class DoesNotNeedFinalizer : public A { 30 public: 31 void trace(Visitor*); 32 }; 33 34 class GCedClassWithAScriptWrappableBase 35 : public A, public ScriptWrappable { 36 public: 37 void trace(Visitor*); 38 }; 39 40 class GCedClassWithAScriptWrappableAndAFinalizableBase 41 : public GCedClassWithAScriptWrappableBase 42 , public B 43 , public ScriptWrappable { 44 public: 45 void trace(Visitor*); 46 }; 47 48 } 49 50 #endif 51