diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-16 09:59:13 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-05-20 10:28:53 +0000 |
commit | 6c11fb357ec39bf087b8b632e2b1e375aef1b38b (patch) | |
tree | c8315530db18a8ee566521c39ab8a6af4f72bc03 /chromium/base/bind_internal.h | |
parent | 3ffaed019d0772e59d6cdb2d0d32fe4834c31f72 (diff) |
BASELINE: Update Chromium to 74.0.3729.159
Change-Id: I8d2497da544c275415aedd94dd25328d555de811
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/base/bind_internal.h')
-rw-r--r-- | chromium/base/bind_internal.h | 39 |
1 files changed, 10 insertions, 29 deletions
diff --git a/chromium/base/bind_internal.h b/chromium/base/bind_internal.h index d8f574a4b33..b2f1c3c4c9c 100644 --- a/chromium/base/bind_internal.h +++ b/chromium/base/bind_internal.h @@ -7,9 +7,13 @@ #include <stddef.h> +#include <functional> +#include <memory> +#include <tuple> #include <type_traits> #include <utility> +#include "base/bind.h" #include "base/callback_internal.h" #include "base/compiler_specific.h" #include "base/memory/raw_scoped_refptr_mismatch_checker.h" @@ -82,16 +86,6 @@ class UnretainedWrapper { }; template <typename T> -class ConstRefWrapper { - public: - explicit ConstRefWrapper(const T& o) : ptr_(&o) {} - const T& get() const { return *ptr_; } - - private: - const T* ptr_; -}; - -template <typename T> class RetainedRefWrapper { public: explicit RetainedRefWrapper(T* o) : ptr_(o) {} @@ -110,26 +104,15 @@ struct IgnoreResultHelper { T functor_; }; -// An alternate implementation is to avoid the destructive copy, and instead -// specialize ParamTraits<> for OwnedWrapper<> to change the StorageType to -// a class that is essentially a std::unique_ptr<>. -// -// The current implementation has the benefit though of leaving ParamTraits<> -// fully in callback_internal.h as well as avoiding type conversions during -// storage. template <typename T> class OwnedWrapper { public: explicit OwnedWrapper(T* o) : ptr_(o) {} - ~OwnedWrapper() { delete ptr_; } - T* get() const { return ptr_; } - OwnedWrapper(OwnedWrapper&& other) { - ptr_ = other.ptr_; - other.ptr_ = NULL; - } + explicit OwnedWrapper(std::unique_ptr<T>&& ptr) : ptr_(std::move(ptr)) {} + T* get() const { return ptr_.get(); } private: - mutable T* ptr_; + std::unique_ptr<T> ptr_; }; // PassedWrapper is a copyable adapter for a scoper that ignores const. @@ -939,7 +922,7 @@ template <typename T> struct IsWeakReceiver : std::false_type {}; template <typename T> -struct IsWeakReceiver<internal::ConstRefWrapper<T>> : IsWeakReceiver<T> {}; +struct IsWeakReceiver<std::reference_wrapper<T>> : IsWeakReceiver<T> {}; template <typename T> struct IsWeakReceiver<WeakPtr<T>> : std::true_type {}; @@ -961,10 +944,8 @@ struct BindUnwrapTraits<internal::UnretainedWrapper<T>> { }; template <typename T> -struct BindUnwrapTraits<internal::ConstRefWrapper<T>> { - static const T& Unwrap(const internal::ConstRefWrapper<T>& o) { - return o.get(); - } +struct BindUnwrapTraits<std::reference_wrapper<T>> { + static T& Unwrap(std::reference_wrapper<T> o) { return o.get(); } }; template <typename T> |