summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc21
1 files changed, 17 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc b/chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc
index d032f794c75..b352746a38b 100644
--- a/chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc
+++ b/chromium/third_party/blink/renderer/modules/clipboard/clipboard_item.cc
@@ -4,6 +4,8 @@
#include "third_party/blink/renderer/modules/clipboard/clipboard_item.h"
+#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/renderer/bindings/modules/v8/v8_clipboard_item_options.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/heap/heap.h"
@@ -13,7 +15,9 @@ namespace blink {
// static
ClipboardItem* ClipboardItem::Create(
const HeapVector<std::pair<String, Member<Blob>>>& items,
+ const ClipboardItemOptions* options,
ExceptionState& exception_state) {
+ DCHECK(options);
// Check that incoming dictionary isn't empty. If it is, it's possible that
// Javascript bindings implicitly converted an Object (like a Blob) into {},
// an empty dictionary.
@@ -21,12 +25,17 @@ ClipboardItem* ClipboardItem::Create(
exception_state.ThrowTypeError("Empty dictionary argument");
return nullptr;
}
- return MakeGarbageCollected<ClipboardItem>(items);
+ return MakeGarbageCollected<ClipboardItem>(items, options);
}
ClipboardItem::ClipboardItem(
- const HeapVector<std::pair<String, Member<Blob>>>& items)
- : items_(items) {}
+ const HeapVector<std::pair<String, Member<Blob>>>& items,
+ const ClipboardItemOptions* options)
+ : items_(items),
+ is_raw_(base::FeatureList::IsEnabled(features::kRawClipboard) &&
+ options->raw()) {
+ DCHECK(items_.size());
+}
Vector<String> ClipboardItem::types() const {
Vector<String> types;
@@ -37,6 +46,10 @@ Vector<String> ClipboardItem::types() const {
return types;
}
+bool ClipboardItem::raw() const {
+ return is_raw_;
+}
+
ScriptPromise ClipboardItem::getType(ScriptState* script_state,
const String& type) const {
auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
@@ -54,7 +67,7 @@ ScriptPromise ClipboardItem::getType(ScriptState* script_state,
return promise;
}
-void ClipboardItem::Trace(blink::Visitor* visitor) {
+void ClipboardItem::Trace(Visitor* visitor) {
visitor->Trace(items_);
ScriptWrappable::Trace(visitor);
}