Home | History | Annotate | Download | only in tests
      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 CYCLE_SUB_H_
      6 #define CYCLE_SUB_H_
      7 
      8 #include "heap/stubs.h"
      9 
     10 namespace blink {
     11 
     12 class C;
     13 
     14 // This contains a leaking cycle:
     15 // C -per-> A -sub-> B -ref-> C
     16 
     17 class A : public GarbageCollectedFinalized<A> {
     18 public:
     19     virtual void trace(Visitor*) {}
     20 };
     21 
     22 class B : public A {
     23 public:
     24     virtual void trace(Visitor*);
     25 private:
     26     RefPtr<C> m_c;
     27 };
     28 
     29 class C : public RefCounted<C> {
     30 private:
     31     Persistent<A> m_a;
     32 };
     33 
     34 }
     35 
     36 #endif
     37