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 14 const scoped_refptr<Foo>& GetMemberAsScopedRefptr() const { return member; } 15 16 Foo* GetMemberAsRawPtr() const { return member.get(); } 17 }; 18 19 void ExpectsRawPtr(Foo* param) { 20 Foo* temp = param; 21 } 22 23 void ExpectsScopedRefptr(const scoped_refptr<Foo>& param) { 24 Foo* temp = param.get(); 25 } 26 27 void CallsRawWithMemberScopedRefptr() { 28 HasAScopedRefptr object; 29 ExpectsRawPtr(object.GetMemberAsScopedRefptr().get()); 30 } 31 32 void CallsRawWithMemberRawPtr() { 33 HasAScopedRefptr object; 34 ExpectsRawPtr(object.GetMemberAsRawPtr()); 35 } 36 37 void CallsScopedWithMemberScopedRefptr() { 38 HasAScopedRefptr object; 39 ExpectsScopedRefptr(object.GetMemberAsScopedRefptr()); 40 } 41 42 void CallsScopedWithMemberRawPtr() { 43 HasAScopedRefptr object; 44 ExpectsScopedRefptr(object.GetMemberAsScopedRefptr()); 45 } 46