Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: mojo/public/cpp/bindings/lib/array_serialization_traits.h

Issue 1751563002: Mojo C++ bindings: support mapping mojo string to WTF::String. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync & rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <string.h> // For |memcpy()|. 9 #include <string.h> // For |memcpy()|.
10 10
11 #include <limits> 11 #include <limits>
12 #include <type_traits> 12 #include <type_traits>
13 #include <utility> 13 #include <utility>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/logging.h" 16 #include "base/logging.h"
17 #include "mojo/public/cpp/bindings/lib/array_internal.h" 17 #include "mojo/public/cpp/bindings/lib/array_internal.h"
18 #include "mojo/public/cpp/bindings/lib/serialization_forward.h" 18 #include "mojo/public/cpp/bindings/lib/serialization_forward.h"
19 #include "mojo/public/cpp/bindings/lib/template_util.h" 19 #include "mojo/public/cpp/bindings/lib/template_util.h"
20 #include "mojo/public/cpp/bindings/lib/validation_errors.h" 20 #include "mojo/public/cpp/bindings/lib/validation_errors.h"
21 21
22 namespace WTF {
23 class String;
24 }
25
22 namespace mojo { 26 namespace mojo {
23 namespace internal { 27 namespace internal {
24 28
25 template <typename ArrayType, 29 template <typename ArrayType,
26 typename ElementType, 30 typename ElementType,
27 typename ElementDataType, 31 typename ElementDataType,
28 bool is_union = IsUnionDataType< 32 bool is_union = IsUnionDataType<
29 typename RemovePointer<ElementDataType>::type>::value> 33 typename RemovePointer<ElementDataType>::type>::value>
30 struct ArraySerializer; 34 struct ArraySerializer;
31 35
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 if (!Deserialize_(input->at(i), &result[i], context)) 188 if (!Deserialize_(input->at(i), &result[i], context))
185 success = false; 189 success = false;
186 } 190 }
187 output->Swap(&result); 191 output->Swap(&result);
188 return success; 192 return success;
189 } 193 }
190 194
191 private: 195 private:
192 template <typename T, 196 template <typename T,
193 bool is_array = IsSpecializationOf<Array, T>::value, 197 bool is_array = IsSpecializationOf<Array, T>::value,
194 bool is_string = std::is_same<T, String>::value> 198 bool is_string = std::is_same<T, String>::value ||
199 std::is_same<T, WTF::String>::value>
195 struct SerializeCaller { 200 struct SerializeCaller {
196 static void Run(T input, 201 static void Run(T input,
197 Buffer* buf, 202 Buffer* buf,
198 typename WrapperTraits<T>::DataType* output, 203 typename WrapperTraits<T>::DataType* output,
199 const ArrayValidateParams* validate_params, 204 const ArrayValidateParams* validate_params,
200 SerializationContext* context) { 205 SerializationContext* context) {
201 DCHECK(!validate_params) 206 DCHECK(!validate_params)
202 << "Struct type should not have array validate params"; 207 << "Struct type should not have array validate params";
203 208
204 Serialize_(std::move(input), buf, output, context); 209 Serialize_(std::move(input), buf, output, context);
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 *output = nullptr; 446 *output = nullptr;
442 return true; 447 return true;
443 } 448 }
444 }; 449 };
445 450
446 } // namespace internal 451 } // namespace internal
447 452
448 } // namespace mojo 453 } // namespace mojo
449 454
450 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_ 455 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_SERIALIZATION_TRAITS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698