diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-21 03:57:42 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-21 03:57:42 +0000 |
commit | 314c3e2d86a4595db7b1ab02b2acd4decf21d65f (patch) | |
tree | 593431d4dad2fa3c944d8e8f97da3f6fc56140f6 /base | |
parent | c537090136d23d0064488c27de3bb2ba0f1ac120 (diff) | |
download | chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.zip chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.tar.gz chromium_src-314c3e2d86a4595db7b1ab02b2acd4decf21d65f.tar.bz2 |
Remove getters for HTML5 related objects from the ResourceContext interface. Half of them weren't used by chrome, so they can be hidden from chrome. The rest were accessed by chrome, but we don't need every embedder to store this data on their ResourceContext implementation. Instead have content associate the data itself to simplify the work for embedders.
BUG=98716
Review URL: https://chromiumcodereview.appspot.com/9425026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122790 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/supports_user_data.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/base/supports_user_data.h b/base/supports_user_data.h index 0296a3e..1c90e01 100644 --- a/base/supports_user_data.h +++ b/base/supports_user_data.h @@ -9,6 +9,7 @@ #include "base/base_export.h" #include "base/memory/linked_ptr.h" +#include "base/memory/ref_counted.h" namespace base { @@ -42,6 +43,25 @@ class BASE_EXPORT SupportsUserData { DISALLOW_COPY_AND_ASSIGN(SupportsUserData); }; +// Adapter class that releases a refcounted object when the +// SupportsUserData::Data object is deleted. +template <typename T> +class UserDataAdapter : public base::SupportsUserData::Data { + public: + static T* Get(SupportsUserData* supports_user_data, const char* key) { + UserDataAdapter* data = + static_cast<UserDataAdapter*>(supports_user_data->GetUserData(key)); + return static_cast<T*>(data->object_.get()); + } + + UserDataAdapter(T* object) : object_(object) {} + + private: + scoped_refptr<T> object_; + + DISALLOW_COPY_AND_ASSIGN(UserDataAdapter); +}; + } // namespace base #endif // BASE_SUPPORTS_USER_DATA_H_ |