Index: tools/clang/blink_gc_plugin/tests/class_requires_finalization_base.h |
diff --git a/tools/clang/blink_gc_plugin/tests/class_requires_finalization_base.h b/tools/clang/blink_gc_plugin/tests/class_requires_finalization_base.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f6c0c282ac115b1a5780ffd61ff2046a38297fc7 |
--- /dev/null |
+++ b/tools/clang/blink_gc_plugin/tests/class_requires_finalization_base.h |
@@ -0,0 +1,50 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CLASS_REQUIRES_FINALIZATION_BASE_H_ |
+#define CLASS_REQUIRES_FINALIZATION_BASE_H_ |
+ |
+#include "heap/stubs.h" |
+ |
+namespace blink { |
+ |
+class A : public GarbageCollected<A> { |
+public: |
+ virtual void trace(Visitor*) {} |
+}; |
+ |
+class B { |
+public: |
+ ~B() { /* user-declared, thus, non-trivial */ } |
+}; |
+ |
+// Second base class needs finalization. |
+class NeedsFinalizer : public A, public B { |
+public: |
+ void trace(Visitor*); |
+}; |
+ |
+// Base does not need finalization. |
+class DoesNotNeedFinalizer : public A { |
+public: |
+ void trace(Visitor*); |
+}; |
+ |
+class GCedClassWithAScriptWrappableBase |
+ : public A, public ScriptWrappable { |
+public: |
+ void trace(Visitor*); |
+}; |
+ |
+class GCedClassWithAScriptWrappableAndAFinalizableBase |
+ : public GCedClassWithAScriptWrappableBase |
+ , public B |
+ , public ScriptWrappable { |
+public: |
+ void trace(Visitor*); |
+}; |
+ |
+} |
+ |
+#endif |