Index: net/base/escape.cc |
diff --git a/net/base/escape.cc b/net/base/escape.cc |
index 9f22778f0a55166c05301954e70644bb549bb90d..65a23c1c3957f75938310aefb736d0eea89564e4 100644 |
--- a/net/base/escape.cc |
+++ b/net/base/escape.cc |
@@ -4,13 +4,8 @@ |
#include "net/base/escape.h" |
-#include <algorithm> |
-#include <memory> |
- |
#include "base/logging.h" |
-#include "base/strings/string_piece.h" |
#include "base/strings/string_util.h" |
-#include "base/strings/utf_offset_string_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
namespace net { |
@@ -41,7 +36,7 @@ struct Charmap { |
// to +, otherwise, if spaces are in the charmap, they are converted to |
// %20. And if keep_escaped is true, %XX will be kept as it is, otherwise, if |
// '%' is in the charmap, it is converted to %25. |
-std::string Escape(const std::string& text, |
+std::string Escape(base::StringPiece text, |
const Charmap& charmap, |
bool use_plus, |
bool keep_escaped = false) { |
@@ -106,8 +101,8 @@ const char kUrlUnescape[128] = { |
// Attempts to unescape the sequence at |index| within |escaped_text|. If |
// successful, sets |value| to the unescaped value. Returns whether |
// unescaping succeeded. |
-template<typename STR> |
-bool UnescapeUnsignedCharAtIndex(const STR& escaped_text, |
+template <typename STR> |
+bool UnescapeUnsignedCharAtIndex(STR escaped_text, |
size_t index, |
unsigned char* value) { |
if ((index + 2) >= escaped_text.size()) |
@@ -128,8 +123,8 @@ bool UnescapeUnsignedCharAtIndex(const STR& escaped_text, |
// Returns true if there is an Arabic Language Mark at |index|. |first_byte| |
// is the byte at |index|. |
-template<typename STR> |
-bool HasArabicLanguageMarkAtIndex(const STR& escaped_text, |
+template <typename STR> |
+bool HasArabicLanguageMarkAtIndex(STR escaped_text, |
unsigned char first_byte, |
size_t index) { |
if (first_byte != 0xD8) |
@@ -142,8 +137,8 @@ bool HasArabicLanguageMarkAtIndex(const STR& escaped_text, |
// Returns true if there is a BiDi control char at |index|. |first_byte| is the |
// byte at |index|. |
-template<typename STR> |
-bool HasThreeByteBidiControlCharAtIndex(const STR& escaped_text, |
+template <typename STR> |
+bool HasThreeByteBidiControlCharAtIndex(STR escaped_text, |
unsigned char first_byte, |
size_t index) { |
if (first_byte != 0xE2) |
@@ -167,7 +162,7 @@ bool HasThreeByteBidiControlCharAtIndex(const STR& escaped_text, |
// Returns true if there is a four-byte banned char at |index|. |first_byte| is |
// the byte at |index|. |
template <typename STR> |
-bool HasFourByteBannedCharAtIndex(const STR& escaped_text, |
+bool HasFourByteBannedCharAtIndex(STR escaped_text, |
unsigned char first_byte, |
size_t index) { |
// The following characters are blacklisted for spoofability concerns. |
@@ -201,16 +196,16 @@ bool HasFourByteBannedCharAtIndex(const STR& escaped_text, |
// the alterations done to the string that are not one-character-to-one- |
// character. The resulting |adjustments| will always be sorted by increasing |
// offset. |
-template<typename STR> |
+template <typename STR> |
STR UnescapeURLWithAdjustmentsImpl( |
- const STR& escaped_text, |
+ base::BasicStringPiece<STR> escaped_text, |
UnescapeRule::Type rules, |
base::OffsetAdjuster::Adjustments* adjustments) { |
if (adjustments) |
adjustments->clear(); |
// Do not unescape anything, return the |escaped_text| text. |
if (rules == UnescapeRule::NONE) |
- return escaped_text; |
+ return escaped_text.as_string(); |
// The output of the unescaping is always smaller than the input, so we can |
// reserve the input size to make sure we have enough buffer and don't have |
@@ -265,19 +260,19 @@ STR UnescapeURLWithAdjustmentsImpl( |
if (!(rules & UnescapeRule::SPOOFING_AND_CONTROL_CHARS)) { |
if (HasArabicLanguageMarkAtIndex(escaped_text, first_byte, i)) { |
// Keep Arabic Language Mark escaped. |
- result.append(escaped_text, i, 6); |
+ escaped_text.substr(i, 6).AppendToString(&result); |
i += 5; |
continue; |
} |
if (HasThreeByteBidiControlCharAtIndex(escaped_text, first_byte, i)) { |
// Keep BiDi control char escaped. |
- result.append(escaped_text, i, 9); |
+ escaped_text.substr(i, 9).AppendToString(&result); |
i += 8; |
continue; |
} |
if (HasFourByteBannedCharAtIndex(escaped_text, first_byte, i)) { |
// Keep banned char escaped. |
- result.append(escaped_text, i, 12); |
+ escaped_text.substr(i, 12).AppendToString(&result); |
i += 11; |
continue; |
} |
@@ -345,12 +340,13 @@ void AppendEscapedCharForHTMLImpl(typename str::value_type c, str* output) { |
} |
template <class str> |
-str EscapeForHTMLImpl(const str& input) { |
+str EscapeForHTMLImpl(base::BasicStringPiece<str> input) { |
str result; |
result.reserve(input.size()); // Optimize for no escaping. |
- for (typename str::const_iterator i = input.begin(); i != input.end(); ++i) |
- AppendEscapedCharForHTMLImpl(*i, &result); |
+ for (auto c : input) { |
+ AppendEscapedCharForHTMLImpl(c, &result); |
+ } |
return result; |
} |
@@ -397,29 +393,29 @@ static const Charmap kExternalHandlerCharmap = {{ |
} // namespace |
-std::string EscapeQueryParamValue(const std::string& text, bool use_plus) { |
+std::string EscapeQueryParamValue(base::StringPiece text, bool use_plus) { |
return Escape(text, kQueryCharmap, use_plus); |
} |
-std::string EscapePath(const std::string& path) { |
+std::string EscapePath(base::StringPiece path) { |
return Escape(path, kPathCharmap, false); |
} |
#if defined(OS_MACOSX) |
-std::string EscapeNSURLPrecursor(const std::string& precursor) { |
+std::string EscapeNSURLPrecursor(base::StringPiece precursor) { |
return Escape(precursor, kNSURLCharmap, false, true); |
} |
#endif // defined(OS_MACOSX) |
-std::string EscapeUrlEncodedData(const std::string& path, bool use_plus) { |
+std::string EscapeUrlEncodedData(base::StringPiece path, bool use_plus) { |
return Escape(path, kUrlEscape, use_plus); |
} |
-std::string EscapeNonASCII(const std::string& input) { |
+std::string EscapeNonASCII(base::StringPiece input) { |
return Escape(input, kNonASCIICharmap, false); |
} |
-std::string EscapeExternalHandlerValue(const std::string& text) { |
+std::string EscapeExternalHandlerValue(base::StringPiece text) { |
return Escape(text, kExternalHandlerCharmap, false, true); |
} |
@@ -427,31 +423,31 @@ void AppendEscapedCharForHTML(char c, std::string* output) { |
AppendEscapedCharForHTMLImpl(c, output); |
} |
-std::string EscapeForHTML(const std::string& input) { |
+std::string EscapeForHTML(base::StringPiece input) { |
return EscapeForHTMLImpl(input); |
} |
-base::string16 EscapeForHTML(const base::string16& input) { |
+base::string16 EscapeForHTML(base::StringPiece16 input) { |
return EscapeForHTMLImpl(input); |
} |
-std::string UnescapeURLComponent(const std::string& escaped_text, |
+std::string UnescapeURLComponent(base::StringPiece escaped_text, |
UnescapeRule::Type rules) { |
return UnescapeURLWithAdjustmentsImpl(escaped_text, rules, NULL); |
} |
-base::string16 UnescapeURLComponent(const base::string16& escaped_text, |
+base::string16 UnescapeURLComponent(base::StringPiece16 escaped_text, |
UnescapeRule::Type rules) { |
return UnescapeURLWithAdjustmentsImpl(escaped_text, rules, NULL); |
} |
-base::string16 UnescapeAndDecodeUTF8URLComponent(const std::string& text, |
+base::string16 UnescapeAndDecodeUTF8URLComponent(base::StringPiece text, |
UnescapeRule::Type rules) { |
return UnescapeAndDecodeUTF8URLComponentWithAdjustments(text, rules, NULL); |
} |
base::string16 UnescapeAndDecodeUTF8URLComponentWithAdjustments( |
- const std::string& text, |
+ base::StringPiece text, |
UnescapeRule::Type rules, |
base::OffsetAdjuster::Adjustments* adjustments) { |
base::string16 result; |
@@ -472,7 +468,7 @@ base::string16 UnescapeAndDecodeUTF8URLComponentWithAdjustments( |
return base::UTF8ToUTF16WithAdjustments(text, adjustments); |
} |
-base::string16 UnescapeForHTML(const base::string16& input) { |
+base::string16 UnescapeForHTML(base::StringPiece16 input) { |
static const struct { |
const char* ampersand_code; |
const char replacement; |
@@ -485,10 +481,10 @@ base::string16 UnescapeForHTML(const base::string16& input) { |
}; |
if (input.find(base::ASCIIToUTF16("&")) == std::string::npos) |
- return input; |
+ return input.as_string(); |
base::string16 ampersand_chars[arraysize(kEscapeToChars)]; |
- base::string16 text(input); |
+ base::string16 text = input.as_string(); |
for (base::string16::iterator iter = text.begin(); |
iter != text.end(); ++iter) { |
if (*iter == '&') { |