From 45dba2731166c1dfd7093b08afa22f73afc5f3c3 Mon Sep 17 00:00:00 2001 From: "abarth@chromium.org" Date: Wed, 29 May 2013 23:21:30 +0000 Subject: Move latin1_string_conversions to base Unfortunately, we can't keep this function in webkit/glue because not everyone who links in Blink depends on webkit/glue. For example, cc uses WebString but doesn't depend on webkit/glue. IMHO, the best solution to all these constraints is to put this function in base. It's concerned with concepts that make sense in base (strings and character sets). The only thing odd about the function is that it accepts Latin-1 or UTF-16, which is because of the underlying string representation in Blink. Review URL: https://chromiumcodereview.appspot.com/15732022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203003 0039d316-1c4b-4281-b951-d872f2087c98 --- base/base.gypi | 4 +++- base/strings/latin1_string_conversions.cc | 19 ++++++++++++++++++ base/strings/latin1_string_conversions.h | 32 +++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 base/strings/latin1_string_conversions.cc create mode 100644 base/strings/latin1_string_conversions.h (limited to 'base') diff --git a/base/base.gypi b/base/base.gypi index abfe1f5..34f2c7a 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -424,9 +424,11 @@ 'string16.h', 'stringprintf.cc', 'stringprintf.h', + 'strings/latin1_string_conversions.cc', + 'strings/latin1_string_conversions.h', + 'strings/string_number_conversions.cc', 'strings/string_split.cc', 'strings/string_split.h', - 'strings/string_number_conversions.cc', 'strings/string_number_conversions.h', 'strings/string_piece.cc', 'strings/string_piece.h', diff --git a/base/strings/latin1_string_conversions.cc b/base/strings/latin1_string_conversions.cc new file mode 100644 index 0000000..dca62ce --- /dev/null +++ b/base/strings/latin1_string_conversions.cc @@ -0,0 +1,19 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/strings/latin1_string_conversions.h" + +namespace base { + +string16 Latin1OrUTF16ToUTF16(size_t length, + const Latin1Char* latin1, + const char16* utf16) { + if (!length) + return string16(); + if (latin1) + return string16(latin1, latin1 + length); + return string16(utf16, utf16 + length); +} + +} // namespace base diff --git a/base/strings/latin1_string_conversions.h b/base/strings/latin1_string_conversions.h new file mode 100644 index 0000000..b79c455 --- /dev/null +++ b/base/strings/latin1_string_conversions.h @@ -0,0 +1,32 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_STRINGS_LATIN1_STRING_CONVERSIONS_H_ +#define BASE_STRINGS_LATIN1_STRING_CONVERSIONS_H_ + +#include + +#include "base/base_export.h" +#include "base/string16.h" + +namespace base { + +// This definition of Latin1Char matches the definition of LChar in Blink. We +// use unsigned char rather than char to make less tempting to mix and match +// Latin-1 and UTF-8 characters.. +typedef unsigned char Latin1Char; + +// This somewhat odd function is designed to help us convert from Blink Strings +// to string16. A Blink string is either backed by an array of Latin-1 +// characters or an array of UTF-16 characters. This function is called by +// WebString::operator string16() to convert one or the other character array +// to string16. This function is defined here rather than in WebString.h to +// avoid binary bloat in all the callers of the conversion operator. +BASE_EXPORT string16 Latin1OrUTF16ToUTF16(size_t length, + const Latin1Char* latin1, + const char16* utf16); + +} // namespace base + +#endif // BASE_STRINGS_LATIN1_STRING_CONVERSIONS_H_ -- cgit v1.1