summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc b/chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc
index 6042a93e35f..1e292b0a297 100644
--- a/chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc
+++ b/chromium/third_party/blink/renderer/modules/clipboard/navigator_clipboard.cc
@@ -22,20 +22,26 @@ Clipboard* NavigatorClipboard::clipboard(ScriptState* script_state,
ProvideTo(navigator, supplement);
}
+ if (!supplement->GetSupplementable()->GetFrame())
+ return nullptr;
+
return supplement->clipboard_;
}
-void NavigatorClipboard::Trace(blink::Visitor* visitor) {
+void NavigatorClipboard::Trace(Visitor* visitor) {
visitor->Trace(clipboard_);
Supplement<Navigator>::Trace(visitor);
}
NavigatorClipboard::NavigatorClipboard(Navigator& navigator)
: Supplement<Navigator>(navigator) {
+ // TODO(crbug.com/1028591): Figure out how navigator.clipboard is supposed to
+ // behave in a detached execution context.
+ if (!GetSupplementable()->GetFrame())
+ return;
+
clipboard_ = MakeGarbageCollected<Clipboard>(
- GetSupplementable()->GetFrame()
- ? GetSupplementable()->GetFrame()->GetDocument()
- : nullptr);
+ GetSupplementable()->GetFrame()->GetDocument()->ToExecutionContext());
}
} // namespace blink