summaryrefslogtreecommitdiffstats
path: root/chromium/base/bind_internal.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-16 09:59:13 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-20 10:28:53 +0000
commit6c11fb357ec39bf087b8b632e2b1e375aef1b38b (patch)
treec8315530db18a8ee566521c39ab8a6af4f72bc03 /chromium/base/bind_internal.h
parent3ffaed019d0772e59d6cdb2d0d32fe4834c31f72 (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.h39
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>