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#include "mojo/public/cpp/bindings/string_traits_string16.h" 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include <string> 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "base/strings/utf_string_conversions.h" 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace mojo { 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid* StringTraits<base::string16>::SetUpContext(const base::string16& input) { 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return new std::string(base::UTF16ToUTF8(input)); 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid StringTraits<base::string16>::TearDownContext(const base::string16& input, 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez void* context) { 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez delete static_cast<std::string*>(context); 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezsize_t StringTraits<base::string16>::GetSize(const base::string16& input, 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez void* context) { 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return static_cast<std::string*>(context)->size(); 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezconst char* StringTraits<base::string16>::GetData(const base::string16& input, 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez void* context) { 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return static_cast<std::string*>(context)->data(); 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbool StringTraits<base::string16>::Read(StringDataView input, 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez base::string16* output) { 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return base::UTF8ToUTF16(input.storage(), input.size(), output); 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace mojo 43