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 #include "base/test/opaque_ref_counted.h" 6 7 #include "base/macros.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 10 namespace base { 11 12 class OpaqueRefCounted : public RefCounted<OpaqueRefCounted> { 13 public: 14 OpaqueRefCounted() = default; 15 16 int Return42() { return 42; } 17 18 private: 19 friend class RefCounted<OpaqueRefCounted>; 20 ~OpaqueRefCounted() = default; 21 22 DISALLOW_COPY_AND_ASSIGN(OpaqueRefCounted); 23 }; 24 25 class OpaqueRefCountedThreadSafe 26 : public RefCounted<OpaqueRefCountedThreadSafe> { 27 public: 28 OpaqueRefCountedThreadSafe() = default; 29 30 int Return42() { return 42; } 31 32 private: 33 friend class RefCounted<OpaqueRefCountedThreadSafe>; 34 ~OpaqueRefCountedThreadSafe() = default; 35 36 DISALLOW_COPY_AND_ASSIGN(OpaqueRefCountedThreadSafe); 37 }; 38 39 scoped_refptr<OpaqueRefCounted> MakeOpaqueRefCounted() { 40 return new OpaqueRefCounted(); 41 } 42 43 void TestOpaqueRefCounted(scoped_refptr<OpaqueRefCounted> p) { 44 EXPECT_EQ(42, p->Return42()); 45 } 46 47 scoped_refptr<OpaqueRefCountedThreadSafe> MakeOpaqueRefCountedThreadSafe() { 48 return new OpaqueRefCountedThreadSafe(); 49 } 50 51 void TestOpaqueRefCountedThreadSafe( 52 scoped_refptr<OpaqueRefCountedThreadSafe> p) { 53 EXPECT_EQ(42, p->Return42()); 54 } 55 56 } // namespace base 57 58 template class scoped_refptr<base::OpaqueRefCounted>; 59 template class scoped_refptr<base::OpaqueRefCountedThreadSafe>; 60