1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Copyright 2016 The Chromium Authors. All rights reserved.
2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Use of this source code is governed by a BSD-style license that can be
3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// found in the LICENSE file.
4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#ifndef MOJO_PUBLIC_CPP_BINDINGS_STRING_TRAITS_STRING16_H_
6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#define MOJO_PUBLIC_CPP_BINDINGS_STRING_TRAITS_STRING16_H_
7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "base/strings/string16.h"
9cfc1eaa913db3974e56c87b5489bda0a2bf36d93Jay Civelli#include "mojo/public/cpp/bindings/bindings_export.h"
10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "mojo/public/cpp/bindings/string_traits.h"
11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace mojo {
13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveztemplate <>
15cfc1eaa913db3974e56c87b5489bda0a2bf36d93Jay Civellistruct MOJO_CPP_BINDINGS_EXPORT StringTraits<base::string16> {
16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static bool IsNull(const base::string16& input) {
17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    // base::string16 is always converted to non-null mojom string.
18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    return false;
19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static void SetToNull(base::string16* output) {
22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    // Convert null to an "empty" base::string16.
23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez    output->clear();
24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  }
25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static void* SetUpContext(const base::string16& input);
27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static void TearDownContext(const base::string16& input, void* context);
28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static size_t GetSize(const base::string16& input, void* context);
30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static const char* GetData(const base::string16& input, void* context);
31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez  static bool Read(StringDataView input, base::string16* output);
33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez};
34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez}  // namespace mojo
36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez
37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#endif  // MOJO_PUBLIC_CPP_BINDINGS_STRING_TRAITS_STRING16_H_
38