• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/supports_user_data.h"
6 
7 #include <vector>
8 
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 namespace base {
12 namespace {
13 
14 struct TestSupportsUserData : public SupportsUserData {};
15 
16 struct UsesItself : public SupportsUserData::Data {
UsesItselfbase::__anond0a893930111::UsesItself17   UsesItself(SupportsUserData* supports_user_data, const void* key)
18       : supports_user_data_(supports_user_data),
19         key_(key) {
20   }
21 
~UsesItselfbase::__anond0a893930111::UsesItself22   virtual ~UsesItself() {
23     EXPECT_EQ(NULL, supports_user_data_->GetUserData(key_));
24   }
25 
26   SupportsUserData* supports_user_data_;
27   const void* key_;
28 };
29 
TEST(SupportsUserDataTest,ClearWorksRecursively)30 TEST(SupportsUserDataTest, ClearWorksRecursively) {
31   TestSupportsUserData supports_user_data;
32   char key = 0;
33   supports_user_data.SetUserData(&key,
34                                  new UsesItself(&supports_user_data, &key));
35   // Destruction of supports_user_data runs the actual test.
36 }
37 
38 }  // namespace
39 }  // namespace base
40