1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CLASS_MULTIPLE_TRACE_BASES_H_
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CLASS_MULTIPLE_TRACE_BASES_H_
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "heap/stubs.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace blink {
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Base : public GarbageCollected<Base> {
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)public:
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    virtual void trace(Visitor*);
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Mixin : public GarbageCollectedMixin {
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)public:
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    void trace(Visitor*);
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Derived : public Base, public Mixin {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    USING_GARBAGE_COLLECTED_MIXIN(HeapObject);
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Requires trace method.
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
30