diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 16:10:36 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-26 16:10:36 +0000 |
commit | cbf95636d13a9239987ca22d39941adf121c3c3f (patch) | |
tree | 88ca5d8e07989b84b5798a623867e2c15a95e0d1 /mojo/common | |
parent | 3ec029031d606e964a97dadbfb191fcf9c9c7895 (diff) | |
download | chromium_src-cbf95636d13a9239987ca22d39941adf121c3c3f.zip chromium_src-cbf95636d13a9239987ca22d39941adf121c3c3f.tar.gz chromium_src-cbf95636d13a9239987ca22d39941adf121c3c3f.tar.bz2 |
Adds type converters for string16
BUG=none
TEST=covered by unit tests
R=darin@chromium.org
Review URL: https://codereview.chromium.org/208743010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@259596 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/common')
-rw-r--r-- | mojo/common/common_type_converters.cc | 18 | ||||
-rw-r--r-- | mojo/common/common_type_converters.h | 8 | ||||
-rw-r--r-- | mojo/common/common_type_converters_unittest.cc | 26 |
3 files changed, 52 insertions, 0 deletions
diff --git a/mojo/common/common_type_converters.cc b/mojo/common/common_type_converters.cc index f02be67..b207e1e 100644 --- a/mojo/common/common_type_converters.cc +++ b/mojo/common/common_type_converters.cc @@ -4,6 +4,10 @@ #include "mojo/common/common_type_converters.h" +#include <string> + +#include "base/strings/utf_string_conversions.h" + namespace mojo { // static @@ -21,4 +25,18 @@ base::StringPiece TypeConverter<String, base::StringPiece>::ConvertTo( base::StringPiece(&input[0], input.size()); } +// static +String TypeConverter<String, base::string16>::ConvertFrom( + const base::string16& input, + Buffer* buf) { + return TypeConverter<String, base::StringPiece>::ConvertFrom( + base::UTF16ToUTF8(input), buf); +} +// static +base::string16 TypeConverter<String, base::string16>::ConvertTo( + const String& input) { + return input.is_null() ? base::string16() : + base::UTF8ToUTF16(base::StringPiece(&input[0], input.size())); +} + } // namespace mojo diff --git a/mojo/common/common_type_converters.h b/mojo/common/common_type_converters.h index 1c4ca75..5437ec4 100644 --- a/mojo/common/common_type_converters.h +++ b/mojo/common/common_type_converters.h @@ -5,6 +5,7 @@ #ifndef MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_ #define MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_ +#include "base/strings/string16.h" #include "base/strings/string_piece.h" #include "mojo/common/mojo_common_export.h" #include "mojo/public/bindings/array.h" @@ -19,6 +20,13 @@ class MOJO_COMMON_EXPORT TypeConverter<String, base::StringPiece> { static base::StringPiece ConvertTo(const String& input); }; +template <> +class MOJO_COMMON_EXPORT TypeConverter<String, base::string16> { + public: + static String ConvertFrom(const base::string16& input, Buffer* buf); + static base::string16 ConvertTo(const String& input); +}; + } // namespace mojo #endif // MOJO_COMMON_COMMON_TYPE_CONVERTERS_H_ diff --git a/mojo/common/common_type_converters_unittest.cc b/mojo/common/common_type_converters_unittest.cc index 5c7a47b..5e825c0 100644 --- a/mojo/common/common_type_converters_unittest.cc +++ b/mojo/common/common_type_converters_unittest.cc @@ -3,6 +3,8 @@ // found in the LICENSE file. #include "mojo/common/common_type_converters.h" + +#include "base/strings/utf_string_conversions.h" #include "mojo/public/bindings/allocation_scope.h" #include "testing/gtest/include/gtest/gtest.h" @@ -21,6 +23,16 @@ void ExpectEqualsMojoString(const std::string& expected, EXPECT_EQ(expected, str.To<std::string>()); } +void ExpectEqualsString16(const base::string16& expected, + const base::string16& actual) { + EXPECT_EQ(expected, actual); +} + +void ExpectEqualsMojoString(const base::string16& expected, + const String& str) { + EXPECT_EQ(expected, str.To<base::string16>()); +} + } // namespace TEST(CommonTypeConvertersTest, StringPiece) { @@ -43,6 +55,20 @@ TEST(CommonTypeConvertersTest, StringPiece) { EXPECT_TRUE(empty_string_piece.empty()); } +TEST(CommonTypeConvertersTest, String16) { + AllocationScope scope; + + const base::string16 string16(base::ASCIIToUTF16("hello world")); + const String mojo_string(string16); + + ExpectEqualsMojoString(string16, mojo_string); + EXPECT_EQ(string16, mojo_string.To<base::string16>()); + + // Test implicit construction and conversion: + ExpectEqualsMojoString(string16, string16); + ExpectEqualsString16(string16, mojo_string); +} + } // namespace test } // namespace common } // namespace mojo |