diff options
author | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-29 23:21:30 +0000 |
---|---|---|
committer | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-29 23:21:30 +0000 |
commit | 45dba2731166c1dfd7093b08afa22f73afc5f3c3 (patch) | |
tree | 353d3ea869d0c7521afe8a44d19e818c2744ca52 /base | |
parent | 34ea9067e109e321d4418c80117bc667e6fba2cc (diff) | |
download | chromium_src-45dba2731166c1dfd7093b08afa22f73afc5f3c3.zip chromium_src-45dba2731166c1dfd7093b08afa22f73afc5f3c3.tar.gz chromium_src-45dba2731166c1dfd7093b08afa22f73afc5f3c3.tar.bz2 |
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
Diffstat (limited to 'base')
-rw-r--r-- | base/base.gypi | 4 | ||||
-rw-r--r-- | base/strings/latin1_string_conversions.cc | 19 | ||||
-rw-r--r-- | base/strings/latin1_string_conversions.h | 32 |
3 files changed, 54 insertions, 1 deletions
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 <string> + +#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_ |