1 // Copyright (c) 2013 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 "scoped_refptr.h"
6 
7 struct Foo {
8   int dummy;
9 };
10 
11 struct HasAScopedRefptr {
12   scoped_refptr<Foo> member;
13 
GetMemberAsScopedRefptrHasAScopedRefptr14   const scoped_refptr<Foo>& GetMemberAsScopedRefptr() const { return member; }
15 
GetMemberAsRawPtrHasAScopedRefptr16   Foo* GetMemberAsRawPtr() const { return member; }
17 };
18 
ExpectsRawPtr(Foo * param)19 void ExpectsRawPtr(Foo* param) {
20   Foo* temp = param;
21 }
22 
ExpectsScopedRefptr(const scoped_refptr<Foo> & param)23 void ExpectsScopedRefptr(const scoped_refptr<Foo>& param) {
24   Foo* temp = param.get();
25 }
26 
CallsRawWithMemberScopedRefptr()27 void CallsRawWithMemberScopedRefptr() {
28   HasAScopedRefptr object;
29   ExpectsRawPtr(object.GetMemberAsScopedRefptr());
30 }
31 
CallsRawWithMemberRawPtr()32 void CallsRawWithMemberRawPtr() {
33   HasAScopedRefptr object;
34   ExpectsRawPtr(object.GetMemberAsRawPtr());
35 }
36 
CallsScopedWithMemberScopedRefptr()37 void CallsScopedWithMemberScopedRefptr() {
38   HasAScopedRefptr object;
39   ExpectsScopedRefptr(object.GetMemberAsScopedRefptr());
40 }
41 
CallsScopedWithMemberRawPtr()42 void CallsScopedWithMemberRawPtr() {
43   HasAScopedRefptr object;
44   ExpectsScopedRefptr(object.GetMemberAsScopedRefptr());
45 }
46