summaryrefslogtreecommitdiff
path: root/chromium/base/win/reference.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-28 15:28:34 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-08-28 13:54:51 +0000
commit2a19c63448c84c1805fb1a585c3651318bb86ca7 (patch)
treeeb17888e8531aa6ee5e85721bd553b832a7e5156 /chromium/base/win/reference.h
parentb014812705fc80bff0a5c120dfcef88f349816dc (diff)
downloadqtwebengine-chromium-2a19c63448c84c1805fb1a585c3651318bb86ca7.tar.gz
BASELINE: Update Chromium to 69.0.3497.70
Change-Id: I2b7b56e4e7a8b26656930def0d4575dc32b900a0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/win/reference.h')
-rw-r--r--chromium/base/win/reference.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/chromium/base/win/reference.h b/chromium/base/win/reference.h
new file mode 100644
index 00000000000..7fadfb267f7
--- /dev/null
+++ b/chromium/base/win/reference.h
@@ -0,0 +1,49 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BASE_WIN_REFERENCE_H_
+#define BASE_WIN_REFERENCE_H_
+
+#include <windows.foundation.collections.h>
+#include <wrl/implements.h>
+
+#include <type_traits>
+#include <utility>
+
+#include "base/macros.h"
+
+namespace base {
+namespace win {
+
+// Implementation of the UWP's IReference interface.
+template <typename T>
+class Reference
+ : public Microsoft::WRL::RuntimeClass<
+ Microsoft::WRL::RuntimeClassFlags<
+ Microsoft::WRL::WinRt | Microsoft::WRL::InhibitRoOriginateError>,
+ ABI::Windows::Foundation::IReference<T>> {
+ public:
+ using AbiT = typename ABI::Windows::Foundation::Internal::GetAbiType<
+ typename ABI::Windows::Foundation::IReference<T>::T_complex>::type;
+
+ explicit Reference(const AbiT& value) : value_(value) {}
+ explicit Reference(AbiT&& value) : value_(std::move(value)) {}
+
+ // ABI::Windows::Foundation::IReference:
+ IFACEMETHODIMP get_Value(AbiT* value) override {
+ *value = value_;
+ return S_OK;
+ }
+
+ private:
+ ~Reference() = default;
+ AbiT value_;
+
+ DISALLOW_COPY_AND_ASSIGN(Reference);
+};
+
+} // namespace win
+} // namespace base
+
+#endif // BASE_WIN_REFERENCE_H_