Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(274)

Side by Side Diff: ios/consumer/base/supports_user_data.cc

Issue 781643004: Cleanup WebState and WebStateUserData API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove extra destructor Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | ios/consumer/base/supports_user_data_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 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 "ios/public/consumer/base/supports_user_data.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/supports_user_data.h"
9
10 namespace ios {
11
12 // Class that wraps a ios::SupportsUserData::Data object in a
13 // base::SupportsUserData::Data object. The wrapper object takes ownership of
14 // the wrapped object and will delete it on destruction.
15 class DataAdaptor : public base::SupportsUserData::Data {
16 public:
17 DataAdaptor(SupportsUserData::Data* data);
18 virtual ~DataAdaptor();
19
20 SupportsUserData::Data* data() { return data_.get(); }
21
22 private:
23 scoped_ptr<SupportsUserData::Data> data_;
24 };
25
26 DataAdaptor::DataAdaptor(SupportsUserData::Data* data)
27 : data_(data) {}
28
29 DataAdaptor::~DataAdaptor() {}
30
31 // Class that subclasses base::SupportsUserData in order to enable it to
32 // support ios::SupportsUserData::Data objects. It accomplishes this by
33 // wrapping these objects internally in ios::DataAdaptor objects.
34 class SupportsUserDataInternal : public base::SupportsUserData {
35 public:
36 // Returns the data that is associated with |key|, or NULL if there is no
37 // such associated data.
38 ios::SupportsUserData::Data* GetIOSUserData(const void* key);
39
40 // Associates |data| with |key|. Takes ownership of |data| and will delete it
41 // on either a call to |RemoveUserData(key)| or otherwise on destruction.
42 void SetIOSUserData(const void* key, ios::SupportsUserData::Data* data);
43
44 private:
45 SupportsUserDataInternal() {}
46 virtual ~SupportsUserDataInternal() {}
47
48 friend class ios::SupportsUserData;
49 };
50
51 ios::SupportsUserData::Data* SupportsUserDataInternal::GetIOSUserData(
52 const void* key) {
53 DataAdaptor* adaptor = static_cast<DataAdaptor*>(
54 base::SupportsUserData::GetUserData(key));
55 if (!adaptor)
56 return NULL;
57 return adaptor->data();
58 }
59
60 void SupportsUserDataInternal::SetIOSUserData(
61 const void* key, ios::SupportsUserData::Data* data) {
62 base::SupportsUserData::SetUserData(key, new DataAdaptor(data));
63 }
64
65 // ios::SupportsUserData implementation.
66 SupportsUserData::SupportsUserData()
67 : internal_helper_(new SupportsUserDataInternal()) {
68 }
69
70 SupportsUserData::~SupportsUserData() {
71 delete internal_helper_;
72 }
73
74 SupportsUserData::Data* SupportsUserData::GetUserData(const void* key) const {
75 return internal_helper_->GetIOSUserData(key);
76 }
77
78 void SupportsUserData::SetUserData(const void* key, Data* data) {
79 internal_helper_->SetIOSUserData(key, data);
80 }
81
82 void SupportsUserData::RemoveUserData(const void* key) {
83 internal_helper_->RemoveUserData(key);
84 }
85
86 void SupportsUserData::DetachUserDataThread() {
87 internal_helper_->DetachUserDataThread();
88 }
89
90 } // namespace ios
OLDNEW
« no previous file with comments | « no previous file | ios/consumer/base/supports_user_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698