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:
OpaqueRefCounted()14   OpaqueRefCounted() {}
15 
Return42()16   int Return42() { return 42; }
17 
18  private:
~OpaqueRefCounted()19   virtual ~OpaqueRefCounted() {}
20 
21   friend RefCounted<OpaqueRefCounted>;
22   DISALLOW_COPY_AND_ASSIGN(OpaqueRefCounted);
23 };
24 
MakeOpaqueRefCounted()25 scoped_refptr<OpaqueRefCounted> MakeOpaqueRefCounted() {
26   return new OpaqueRefCounted();
27 }
28 
TestOpaqueRefCounted(scoped_refptr<OpaqueRefCounted> p)29 void TestOpaqueRefCounted(scoped_refptr<OpaqueRefCounted> p) {
30   EXPECT_EQ(42, p->Return42());
31 }
32 
33 }  // namespace base
34 
35 template class scoped_refptr<base::OpaqueRefCounted>;
36