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.
5 #include "base/supports_user_data.h"
9 #include "testing/gtest/include/gtest/gtest.h"
14 struct TestSupportsUserData
: public SupportsUserData
{};
16 struct UsesItself
: public SupportsUserData::Data
{
17 UsesItself(SupportsUserData
* supports_user_data
, const void* key
)
18 : supports_user_data_(supports_user_data
),
22 virtual ~UsesItself() {
23 EXPECT_EQ(NULL
, supports_user_data_
->GetUserData(key_
));
26 SupportsUserData
* supports_user_data_
;
30 TEST(SupportsUserDataTest
, ClearWorksRecursively
) {
31 TestSupportsUserData supports_user_data
;
33 supports_user_data
.SetUserData(&key
,
34 new UsesItself(&supports_user_data
, &key
));
35 // Destruction of supports_user_data runs the actual test.