Commit de3c97f8 authored by David Benjamin's avatar David Benjamin Committed by Commit Bot

Support StringPiece in net_string_util.h

Bug: 820198
Change-Id: I0c7689b2e866264494816eda4df400c2cf337636
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1574589
Commit-Queue: David Benjamin <davidben@chromium.org>
Reviewed-by: default avatarEric Roman <eroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652649}
parent 30e08b71
......@@ -8,6 +8,7 @@
#include <string>
#include "base/strings/string16.h"
#include "base/strings/string_piece_forward.h"
#include "net/base/net_export.h"
// String conversion functions. By default, they're implemented with ICU, but
......@@ -19,28 +20,31 @@ extern const char* const kCharsetLatin1;
// Converts |text| using |charset| to UTF-8, and writes it to |output|.
// On failure, returns false and |output| is cleared.
bool ConvertToUtf8(const std::string& text, const char* charset,
bool ConvertToUtf8(base::StringPiece text,
const char* charset,
std::string* output);
// Converts |text| using |charset| to UTF-8, normalizes the result, and writes
// it to |output|. On failure, returns false and |output| is cleared.
bool ConvertToUtf8AndNormalize(const std::string& text, const char* charset,
bool ConvertToUtf8AndNormalize(base::StringPiece text,
const char* charset,
std::string* output);
// Converts |text| using |charset| to UTF-16, and writes it to |output|.
// On failure, returns false and |output| is cleared.
bool ConvertToUTF16(const std::string& text, const char* charset,
bool ConvertToUTF16(base::StringPiece text,
const char* charset,
base::string16* output);
// Converts |text| using |charset| to UTF-16, and writes it to |output|.
// Any characters that can not be converted are replaced with U+FFFD.
bool ConvertToUTF16WithSubstitutions(const std::string& text,
bool ConvertToUTF16WithSubstitutions(base::StringPiece text,
const char* charset,
base::string16* output);
// Converts |str| to uppercase using the default locale, and writes it to
// |output|. On failure returns false and |output| is cleared.
NET_EXPORT_PRIVATE bool ToUpper(const base::string16& str,
NET_EXPORT_PRIVATE bool ToUpper(base::StringPiece16 str,
base::string16* output);
} // namespace net
......
......@@ -7,6 +7,7 @@
#include "base/i18n/case_conversion.h"
#include "base/i18n/i18n_constants.h"
#include "base/i18n/icu_string_conversions.h"
#include "base/strings/string_piece.h"
#include "base/strings/string_util.h"
#include "third_party/icu/source/common/unicode/ucnv.h"
......@@ -14,7 +15,8 @@ namespace net {
const char* const kCharsetLatin1 = base::kCodepageLatin1;
bool ConvertToUtf8(const std::string& text, const char* charset,
bool ConvertToUtf8(base::StringPiece text,
const char* charset,
std::string* output) {
output->clear();
......@@ -41,26 +43,27 @@ bool ConvertToUtf8(const std::string& text, const char* charset,
return true;
}
bool ConvertToUtf8AndNormalize(const std::string& text, const char* charset,
bool ConvertToUtf8AndNormalize(base::StringPiece text,
const char* charset,
std::string* output) {
return base::ConvertToUtf8AndNormalize(text, charset, output);
return base::ConvertToUtf8AndNormalize(text, charset, output);
}
bool ConvertToUTF16(const std::string& text, const char* charset,
bool ConvertToUTF16(base::StringPiece text,
const char* charset,
base::string16* output) {
return base::CodepageToUTF16(text, charset,
base::OnStringConversionError::FAIL, output);
}
bool ConvertToUTF16WithSubstitutions(const std::string& text,
bool ConvertToUTF16WithSubstitutions(base::StringPiece text,
const char* charset,
base::string16* output) {
return base::CodepageToUTF16(text, charset,
base::OnStringConversionError::SUBSTITUTE,
output);
return base::CodepageToUTF16(
text, charset, base::OnStringConversionError::SUBSTITUTE, output);
}
bool ToUpper(const base::string16& str, base::string16* output) {
bool ToUpper(base::StringPiece16 str, base::string16* output) {
*output = base::i18n::ToUpper(str);
return true;
}
......
......@@ -17,7 +17,7 @@ namespace {
// Attempts to convert |text| encoded in |charset| to a jstring (Java unicode
// string). Returns the result jstring, or NULL on failure.
ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text,
ScopedJavaLocalRef<jstring> ConvertToJstring(base::StringPiece text,
const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> java_byte_buffer(
......@@ -34,8 +34,8 @@ ScopedJavaLocalRef<jstring> ConvertToJstring(const std::string& text,
// Attempts to convert |text| encoded in |charset| to a jstring (Java unicode
// string) and then normalizes the string. Returns the result jstring, or NULL
// on failure.
ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring(
const std::string& text, const char* charset) {
ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring(base::StringPiece text,
const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> java_byte_buffer(
env,
......@@ -51,7 +51,8 @@ ScopedJavaLocalRef<jstring> ConvertToNormalizedJstring(
// Converts |text| encoded in |charset| to a jstring (Java unicode string).
// Any characters that can not be converted are replaced with U+FFFD.
ScopedJavaLocalRef<jstring> ConvertToJstringWithSubstitutions(
const std::string& text, const char* charset) {
base::StringPiece text,
const char* charset) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jobject> java_byte_buffer(
env,
......@@ -70,7 +71,8 @@ ScopedJavaLocalRef<jstring> ConvertToJstringWithSubstitutions(
// by base::kCodepageLatin1 (which is const char[]) in net_string_util_icu.cc.
const char* const kCharsetLatin1 = "ISO-8859-1";
bool ConvertToUtf8(const std::string& text, const char* charset,
bool ConvertToUtf8(base::StringPiece text,
const char* charset,
std::string* output) {
output->clear();
ScopedJavaLocalRef<jstring> java_result = ConvertToJstring(text, charset);
......@@ -80,7 +82,8 @@ bool ConvertToUtf8(const std::string& text, const char* charset,
return true;
}
bool ConvertToUtf8AndNormalize(const std::string& text, const char* charset,
bool ConvertToUtf8AndNormalize(base::StringPiece text,
const char* charset,
std::string* output) {
output->clear();
ScopedJavaLocalRef<jstring> java_result = ConvertToNormalizedJstring(
......@@ -91,7 +94,8 @@ bool ConvertToUtf8AndNormalize(const std::string& text, const char* charset,
return true;
}
bool ConvertToUTF16(const std::string& text, const char* charset,
bool ConvertToUTF16(base::StringPiece text,
const char* charset,
base::string16* output) {
output->clear();
ScopedJavaLocalRef<jstring> java_result = ConvertToJstring(text, charset);
......@@ -101,19 +105,19 @@ bool ConvertToUTF16(const std::string& text, const char* charset,
return true;
}
bool ConvertToUTF16WithSubstitutions(const std::string& text,
bool ConvertToUTF16WithSubstitutions(base::StringPiece text,
const char* charset,
base::string16* output) {
output->clear();
ScopedJavaLocalRef<jstring> java_result =
ConvertToJstringWithSubstitutions(text, charset);
ConvertToJstringWithSubstitutions(text, charset);
if (java_result.is_null())
return false;
*output = base::android::ConvertJavaStringToUTF16(java_result);
return true;
}
bool ToUpper(const base::string16& str, base::string16* output) {
bool ToUpper(base::StringPiece16 str, base::string16* output) {
output->clear();
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> java_new_str(
......
......@@ -35,7 +35,7 @@ bool CharsetToCFStringEncoding(const char* charset,
// by base::kCodepageLatin1 (which is const char[]) in net_string_util_icu.cc.
const char* const kCharsetLatin1 = "ISO-8859-1";
bool ConvertToUtf8(const std::string& text,
bool ConvertToUtf8(base::StringPiece text,
const char* charset,
std::string* output) {
CFStringEncoding encoding;
......@@ -52,28 +52,28 @@ bool ConvertToUtf8(const std::string& text,
return true;
}
bool ConvertToUtf8AndNormalize(const std::string& text,
bool ConvertToUtf8AndNormalize(base::StringPiece text,
const char* charset,
std::string* output) {
DCHECK(false) << "Not implemented yet.";
return false;
}
bool ConvertToUTF16(const std::string& text,
bool ConvertToUTF16(base::StringPiece text,
const char* charset,
base::string16* output) {
DCHECK(false) << "Not implemented yet.";
return false;
}
bool ConvertToUTF16WithSubstitutions(const std::string& text,
bool ConvertToUTF16WithSubstitutions(base::StringPiece text,
const char* charset,
base::string16* output) {
DCHECK(false) << "Not implemented yet.";
return false;
}
bool ToUpper(const base::string16& str, base::string16* output) {
bool ToUpper(base::StringPiece16 str, base::string16* output) {
base::ScopedCFTypeRef<CFStringRef> cfstring(base::SysUTF16ToCFStringRef(str));
base::ScopedCFTypeRef<CFMutableStringRef> mutable_cfstring(
CFStringCreateMutableCopy(kCFAllocatorDefault, 0, cfstring.get()));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment