usb: Use ReadOnlyBuffer to avoid copies in transferOut()

This is an experiment to see how readable or unreadable it is to use the
typemapped ReadOnlyBuffer struct instead of array<uint8> in order to
avoid 2 unnecessary copies for each call to the WebUSB transferOut()
function.

Bug: 743121
Change-Id: Ic841092ebb992e00f2d68b1a197b25c637b6bd44
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2861448
Commit-Queue: Reilly Grant <[email protected]>
Reviewed-by: danakj <[email protected]>
Reviewed-by: Ken Rockot <[email protected]>
Reviewed-by: Andrey Kosyakov <[email protected]>
Reviewed-by: Yang Guo <[email protected]>
Reviewed-by: Chris Mumford <[email protected]>
Cr-Commit-Position: refs/heads/master@{#883253}
diff --git a/base/memory/ref_counted_memory.cc b/base/memory/ref_counted_memory.cc
index 1af8512..09e84d3 100644
--- a/base/memory/ref_counted_memory.cc
+++ b/base/memory/ref_counted_memory.cc
@@ -35,8 +35,10 @@
 RefCountedBytes::RefCountedBytes() = default;
 
 RefCountedBytes::RefCountedBytes(const std::vector<unsigned char>& initializer)
-    : data_(initializer) {
-}
+    : data_(initializer) {}
+
+RefCountedBytes::RefCountedBytes(base::span<const unsigned char> initializer)
+    : data_(initializer.begin(), initializer.end()) {}
 
 RefCountedBytes::RefCountedBytes(const unsigned char* p, size_t size)
     : data_(p, p + size) {}