Blink Clipboard: Implement Raw Clipboard API write.

- Adds ClipboardItem property raw, and plumbing/support for this property in
  `navigator.clipboard.write` (ClipboardPromise and ClipboardWriter).
- Adds a `RawClipboard` flag, to ensure this feature isn't accidentally
  activated via experimental flags or otherwise.
- Adds tests, including VirtualTestSuite and tentative tests, to verify that
  this works with the flag enabled, but is correctly disabled without the
  flag enabled.


Bug: 897289
Change-Id: I453bb0ad18d9e52a4f2054d0f124fc3e8d5b430d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1927003
Commit-Queue: Darwin Huang <[email protected]>
Reviewed-by: Matthew Denton <[email protected]>
Reviewed-by: Kentaro Hara <[email protected]>
Reviewed-by: Victor Costan <[email protected]>
Cr-Commit-Position: refs/heads/master@{#724804}
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index cc0e88aea5..a485ba3 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1727,6 +1727,11 @@
     "When a site wishes to show notifications, the usual modal dialog is "
     "replaced with a quieter version.";
 
+const char kRawClipboardName[] = "Raw Clipboard";
+const char kRawClipboardDescription[] =
+    "Allows raw / unsanitized clipboard content to be read and written. "
+    "See https://github.com/WICG/raw-clipboard-access.";
+
 const char kReducedReferrerGranularityName[] =
     "Reduce default 'referer' header granularity.";
 const char kReducedReferrerGranularityDescription[] =