1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file.
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/strings/string16.h"
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/strings/string_piece.h"
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "mojo/common/mojo_common_export.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/bindings/array.h"
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "mojo/public/cpp/bindings/string.h"
13e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "mojo/public/cpp/bindings/type_converter.h"
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass GURL;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace mojo {
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)template <>
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<String, base::StringPiece> {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static String Convert(const base::StringPiece& input);
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)};
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochtemplate <>
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<base::StringPiece, String> {
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static base::StringPiece Convert(const String& input);
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<String, base::string16> {
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static String Convert(const base::string16& input);
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<base::string16, String> {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static base::string16 Convert(const String& input);
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<String, GURL> {
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static String Convert(const GURL& input);
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<GURL, String> {
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static GURL Convert(const String& input);
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(erg): In the very long term, we will want to remove conversion between
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// std::strings and arrays of unsigned bytes. However, there is too much code
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// across chrome which uses std::string as a bag of bytes that we probably
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// don't want to roll this function at each callsite.
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<std::string, Array<uint8_t> > {
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static std::string Convert(const Array<uint8_t>& input);
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_COMMON_EXPORT TypeConverter<Array<uint8_t>, std::string> {
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static Array<uint8_t> Convert(const std::string& input);
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
63a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}  // namespace mojo
64a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
65a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif  // MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_
66