Chromium Code Reviews| Index: third_party/WebKit/Source/platform/mojo/CommonCustomTypesStructTraits.cpp |
| diff --git a/third_party/WebKit/Source/platform/mojo/CommonCustomTypesStructTraits.cpp b/third_party/WebKit/Source/platform/mojo/CommonCustomTypesStructTraits.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2791ce0c094c4cfd9d9578e68bf399b4b48c818c |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/platform/mojo/CommonCustomTypesStructTraits.cpp |
| @@ -0,0 +1,39 @@ |
| +// Copyright 2016 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. |
| + |
| +#include "platform/mojo/CommonCustomTypesStructTraits.h" |
| + |
| +#include "mojo/public/cpp/bindings/array_traits_wtf_vector.h" |
| +#include <cstring> |
| + |
| +namespace mojo { |
| + |
| +// static |
| +mojo::ConstCArray<uint16_t> |
| +StructTraits<mojo::common::mojom::String16DataView, ::WTF::String>::data( |
| + const ::WTF::String& str) { |
| + DCHECK(!str.isNull()) |
| + << "mojo::common::mojom::String16 only accepts non-null blink::WebString"; |
| + DCHECK(!str.is8Bit()); |
|
esprehn
2016/10/05 17:38:52
What makes sure the string is 16bit here? I think
Ken Rockot(use gerrit already)
2016/10/05 17:47:55
What do you mean by writing directly into the outp
|
| + |
| + return mojo::ConstCArray<uint16_t>( |
| + str.length(), reinterpret_cast<const uint16_t*>(str.characters16())); |
| +} |
| + |
| +// static |
| +bool StructTraits<mojo::common::mojom::String16DataView, ::WTF::String>::Read( |
| + mojo::common::mojom::String16DataView data, |
| + ::WTF::String* out) { |
| + mojo::ArrayDataView<uint16_t> view; |
| + data.GetDataDataView(&view); |
| + if (view.is_null()) |
| + return false; |
| + *out = |
| + ::WTF::String(reinterpret_cast<const UChar*>(view.data()), view.size()); |
| + // WTF::String is constructed as 8-bit if the string is empty. |
| + out->ensure16Bit(); |
| + return true; |
| +} |
| + |
| +} // namespace mojo |