summaryrefslogtreecommitdiffstats
path: root/webkit/glue/glue_util.cc
diff options
context:
space:
mode:
authoravi@google.com <avi@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-18 21:11:36 +0000
committeravi@google.com <avi@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-18 21:11:36 +0000
commit57978b2e692371f66c2887089315cac8a44493bb (patch)
tree6f6e349ef97739f1a9fd2873e625434fc94ce6c8 /webkit/glue/glue_util.cc
parent54c2e1f9f389f089afcf0e12e5a2a0d5d6e7e509 (diff)
downloadchromium_src-57978b2e692371f66c2887089315cac8a44493bb.zip
chromium_src-57978b2e692371f66c2887089315cac8a44493bb.tar.gz
chromium_src-57978b2e692371f66c2887089315cac8a44493bb.tar.bz2
Rev string conversions to work in UTF-32 land.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/glue_util.cc')
-rw-r--r--webkit/glue/glue_util.cc32
1 files changed, 31 insertions, 1 deletions
diff --git a/webkit/glue/glue_util.cc b/webkit/glue/glue_util.cc
index b2eebb3..7893dd2 100644
--- a/webkit/glue/glue_util.cc
+++ b/webkit/glue/glue_util.cc
@@ -56,11 +56,27 @@ WebCore::CString StdStringToCString(const std::string& str) {
std::wstring StringToStdWString(const WebCore::String& str) {
const UChar* chars = str.characters();
+#if defined(WCHAR_T_IS_UTF16)
return std::wstring(chars ? chars : L"", str.length());
+#elif defined(WCHAR_T_IS_UTF32)
+ std::string16 str16(chars ? chars : reinterpret_cast<const char16 *>(L""),
+ str.length());
+ return UTF16ToWide(str16);
+#endif
+}
+
+std::string16 StringToStdString16(const WebCore::String& str) {
+ const UChar* chars = str.characters();
+ return std::string16(chars ? chars : (UChar *)L"", str.length());
}
WebCore::String StdWStringToString(const std::wstring& str) {
+#if defined(WCHAR_T_IS_UTF16)
return WebCore::String(str.data(), static_cast<unsigned>(str.length()));
+#elif defined(WCHAR_T_IS_UTF32)
+ std::string16 str16 = WideToUTF16(str);
+ return WebCore::String(str16.data(), static_cast<unsigned>(str16.length()));
+#endif
}
WebCore::String StdStringToString(const std::string& str) {
@@ -69,15 +85,28 @@ WebCore::String StdStringToString(const std::string& str) {
WebCore::DeprecatedString StdWStringToDeprecatedString(
const std::wstring& str) {
+#if defined(WCHAR_T_IS_UTF16)
return WebCore::DeprecatedString(
reinterpret_cast<const WebCore::DeprecatedChar*>(str.c_str()),
static_cast<int>(str.size()));
+#elif defined(WCHAR_T_IS_UTF32)
+ std::string16 str16 = WideToUTF16(str);
+ return WebCore::DeprecatedString(
+ reinterpret_cast<const WebCore::DeprecatedChar*>(str16.c_str()),
+ static_cast<int>(str16.size()));
+#endif
}
std::wstring DeprecatedStringToStdWString(
const WebCore::DeprecatedString& dep) {
+#if defined(WCHAR_T_IS_UTF16)
return std::wstring(reinterpret_cast<const wchar_t*>(dep.unicode()),
- dep.length());
+ dep.length());
+#elif defined(WCHAR_T_IS_UTF32)
+ std::string16 str16(reinterpret_cast<const char16*>(dep.unicode()),
+ dep.length());
+ return UTF16ToWide(str16);
+#endif
}
// URL conversions -------------------------------------------------------------
@@ -89,6 +118,7 @@ GURL KURLToGURL(const WebCore::KURL& url) {
return GURL();
return GURL(spec.data(), spec.length(), url.parsed(), url.isValid());
#else
+ const WebCore::DeprecatedString& spec = url.deprecatedString();
return GURL(WideToUTF8(DeprecatedStringToStdWString(spec)));
#endif
}