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