[M73 Dev][Tizen] Fix compilation errors for TV profile
[platform/framework/web/chromium-efl.git] / base / supports_user_data_unittest.cc
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 "base/memory/ptr_util.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace base {
13 namespace {
14
15 struct TestSupportsUserData : public SupportsUserData {};
16
17 struct UsesItself : public SupportsUserData::Data {
18   UsesItself(SupportsUserData* supports_user_data, const void* key)
19       : supports_user_data_(supports_user_data),
20         key_(key) {
21   }
22
23   ~UsesItself() override {
24     EXPECT_EQ(nullptr, supports_user_data_->GetUserData(key_));
25   }
26
27   SupportsUserData* supports_user_data_;
28   const void* key_;
29 };
30
31 TEST(SupportsUserDataTest, ClearWorksRecursively) {
32   TestSupportsUserData supports_user_data;
33   char key = 0;
34   supports_user_data.SetUserData(
35       &key, std::make_unique<UsesItself>(&supports_user_data, &key));
36   // Destruction of supports_user_data runs the actual test.
37 }
38
39 }  // namespace
40 }  // namespace base