Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / base / supports_user_data_unittest.cc
blobfaa814091cb4d1f4c91a2e25598739e9687db673
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"
7 #include <vector>
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace base {
12 namespace {
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),
19 key_(key) {
22 ~UsesItself() override {
23 EXPECT_EQ(NULL, supports_user_data_->GetUserData(key_));
26 SupportsUserData* supports_user_data_;
27 const void* key_;
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.
38 } // namespace
39 } // namespace base