From bd6c6fa3090ead63c62e51bab257e98b9b990253 Mon Sep 17 00:00:00 2001 From: nisse Date: Wed, 14 Dec 2016 01:42:53 -0800 Subject: [PATCH] Delete method Pathname::url and base/urlencode* BUG=webrtc:6424 Review-Url: https://codereview.webrtc.org/2572703002 Cr-Commit-Position: refs/heads/master@{#15595} --- webrtc/BUILD.gn | 1 - webrtc/base/BUILD.gn | 2 - webrtc/base/pathutils.cc | 14 --- webrtc/base/pathutils.h | 2 - webrtc/base/pathutils_unittest.cc | 3 - webrtc/base/urlencode.cc | 181 ------------------------------ webrtc/base/urlencode.h | 46 -------- webrtc/base/urlencode_unittest.cc | 84 -------------- 8 files changed, 333 deletions(-) delete mode 100644 webrtc/base/urlencode.cc delete mode 100644 webrtc/base/urlencode.h delete mode 100644 webrtc/base/urlencode_unittest.cc diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn index ea23e39eb6..2130cfb3d6 100644 --- a/webrtc/BUILD.gn +++ b/webrtc/BUILD.gn @@ -445,7 +445,6 @@ if (rtc_include_tests) { "base/thread_unittest.cc", "base/timestampaligner_unittest.cc", "base/timeutils_unittest.cc", - "base/urlencode_unittest.cc", "base/weak_ptr_unittest.cc", "p2p/base/asyncstuntcpsocket_unittest.cc", "p2p/base/dtlstransportchannel_unittest.cc", diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn index adb639537f..b46e4c2a79 100644 --- a/webrtc/base/BUILD.gn +++ b/webrtc/base/BUILD.gn @@ -183,8 +183,6 @@ rtc_static_library("rtc_base_approved") { "timeutils.h", "trace_event.h", "type_traits.h", - "urlencode.cc", - "urlencode.h", ] if (is_android) { diff --git a/webrtc/base/pathutils.cc b/webrtc/base/pathutils.cc index c4a2c30dc8..80df0ef9e8 100644 --- a/webrtc/base/pathutils.cc +++ b/webrtc/base/pathutils.cc @@ -20,7 +20,6 @@ #include "webrtc/base/logging.h" #include "webrtc/base/pathutils.h" #include "webrtc/base/stringutils.h" -#include "webrtc/base/urlencode.h" namespace rtc { @@ -106,19 +105,6 @@ std::string Pathname::pathname() const { return pathname; } -std::string Pathname::url() const { - std::string s = "file:///"; - for (size_t i=0; i= '0' && digit <= '9') { - value += digit - '0'; - } - else if (digit >= 'A' && digit <= 'F') { - value += digit - 'A' + 10; - } - else if (digit >= 'a' && digit <= 'f') { - value += digit - 'a' + 10; - } - else { - return -1; - } - } - return value; -} - -static int InternalUrlDecode(const char *source, char *dest, - bool encode_space_as_plus) { - char * start = dest; - - while (*source) { - switch (*source) { - case '+': - if (encode_space_as_plus) { - *(dest++) = ' '; - } else { - *dest++ = *source; - } - break; - case '%': - if (source[1] && source[2]) { - int value = HexPairValue(source + 1); - if (value >= 0) { - *(dest++) = static_cast(value); - source += 2; - } - else { - *dest++ = '?'; - } - } - else { - *dest++ = '?'; - } - break; - default: - *dest++ = *source; - } - source++; - } - - *dest = 0; - return static_cast(dest - start); -} - -static bool IsValidUrlChar(char ch, bool unsafe_only) { - if (unsafe_only) { - return !(ch <= ' ' || strchr("\\\"^&`<>[]{}", ch)); - } else { - return isalnum(ch) || strchr("-_.!~*'()", ch); - } -} - -namespace rtc { - -int UrlDecode(const char *source, char *dest) { - return InternalUrlDecode(source, dest, true); -} - -int UrlDecodeWithoutEncodingSpaceAsPlus(const char *source, char *dest) { - return InternalUrlDecode(source, dest, false); -} - -int InternalUrlEncode(const char *source, char *dest, unsigned int max, - bool encode_space_as_plus, bool unsafe_only) { - static const char *digits = "0123456789ABCDEF"; - if (max == 0) { - return 0; - } - - char *start = dest; - while (static_cast(dest - start) < max && *source) { - unsigned char ch = static_cast(*source); - if (*source == ' ' && encode_space_as_plus && !unsafe_only) { - *dest++ = '+'; - } else if (IsValidUrlChar(ch, unsafe_only)) { - *dest++ = *source; - } else { - if (static_cast(dest - start) + 4 > max) { - break; - } - *dest++ = '%'; - *dest++ = digits[(ch >> 4) & 0x0F]; - *dest++ = digits[ ch & 0x0F]; - } - source++; - } - RTC_DCHECK_LT(static_cast(dest - start), max); - *dest = 0; - - return static_cast(dest - start); -} - -int UrlEncode(const char *source, char *dest, unsigned max) { - return InternalUrlEncode(source, dest, max, true, false); -} - -int UrlEncodeWithoutEncodingSpaceAsPlus(const char *source, char *dest, - unsigned max) { - return InternalUrlEncode(source, dest, max, false, false); -} - -int UrlEncodeOnlyUnsafeChars(const char *source, char *dest, unsigned max) { - return InternalUrlEncode(source, dest, max, false, true); -} - -std::string -InternalUrlDecodeString(const std::string & encoded, - bool encode_space_as_plus) { - size_t needed_length = encoded.length() + 1; - char* buf = STACK_ARRAY(char, needed_length); - InternalUrlDecode(encoded.c_str(), buf, encode_space_as_plus); - return buf; -} - -std::string -UrlDecodeString(const std::string & encoded) { - return InternalUrlDecodeString(encoded, true); -} - -std::string -UrlDecodeStringWithoutEncodingSpaceAsPlus(const std::string & encoded) { - return InternalUrlDecodeString(encoded, false); -} - -std::string -InternalUrlEncodeString(const std::string & decoded, - bool encode_space_as_plus, - bool unsafe_only) { - int needed_length = static_cast(decoded.length()) * 3 + 1; - char* buf = STACK_ARRAY(char, needed_length); - InternalUrlEncode(decoded.c_str(), buf, needed_length, - encode_space_as_plus, unsafe_only); - return buf; -} - -std::string -UrlEncodeString(const std::string & decoded) { - return InternalUrlEncodeString(decoded, true, false); -} - -std::string -UrlEncodeStringWithoutEncodingSpaceAsPlus(const std::string & decoded) { - return InternalUrlEncodeString(decoded, false, false); -} - -std::string -UrlEncodeStringForOnlyUnsafeChars(const std::string & decoded) { - return InternalUrlEncodeString(decoded, false, true); -} - -} // namespace rtc diff --git a/webrtc/base/urlencode.h b/webrtc/base/urlencode.h deleted file mode 100644 index fc10f3880c..0000000000 --- a/webrtc/base/urlencode.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2008 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef _URLENCODE_H_ -#define _URLENCODE_H_ - -#include - -namespace rtc { - -// Decode all encoded characters. Also decode + as space. -int UrlDecode(const char *source, char *dest); - -// Decode all encoded characters. -int UrlDecodeWithoutEncodingSpaceAsPlus(const char *source, char *dest); - -// Encode all characters except alphas, numbers, and -_.!~*'() -// Also encode space as +. -int UrlEncode(const char *source, char *dest, unsigned max); - -// Encode all characters except alphas, numbers, and -_.!~*'() -int UrlEncodeWithoutEncodingSpaceAsPlus(const char *source, char *dest, - unsigned max); - -// Encode only unsafe chars, including \ "^&`<>[]{} -// Also encode space as %20, instead of + -int UrlEncodeOnlyUnsafeChars(const char *source, char *dest, unsigned max); - -std::string UrlDecodeString(const std::string & encoded); -std::string UrlDecodeStringWithoutEncodingSpaceAsPlus( - const std::string & encoded); -std::string UrlEncodeString(const std::string & decoded); -std::string UrlEncodeStringWithoutEncodingSpaceAsPlus( - const std::string & decoded); -std::string UrlEncodeStringForOnlyUnsafeChars(const std::string & decoded); - -#endif - -} // namespace rtc diff --git a/webrtc/base/urlencode_unittest.cc b/webrtc/base/urlencode_unittest.cc deleted file mode 100644 index 6a61db3ae3..0000000000 --- a/webrtc/base/urlencode_unittest.cc +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2004 The WebRTC Project Authors. All rights reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "webrtc/base/arraysize.h" -#include "webrtc/base/common.h" -#include "webrtc/base/gunit.h" -#include "webrtc/base/thread.h" -#include "webrtc/base/urlencode.h" - -using rtc::UrlEncode; - -TEST(Urlencode, SourceTooLong) { - char source[] = "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" - "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"; - char dest[1]; - ASSERT_EQ(0, UrlEncode(source, dest, arraysize(dest))); - ASSERT_EQ('\0', dest[0]); - - dest[0] = 'a'; - ASSERT_EQ(0, UrlEncode(source, dest, 0)); - ASSERT_EQ('a', dest[0]); -} - -TEST(Urlencode, OneCharacterConversion) { - char source[] = "^"; - char dest[4]; - ASSERT_EQ(3, UrlEncode(source, dest, arraysize(dest))); - ASSERT_STREQ("%5E", dest); -} - -TEST(Urlencode, ShortDestinationNoEncoding) { - // In this case we have a destination that would not be - // big enough to hold an encoding but is big enough to - // hold the text given. - char source[] = "aa"; - char dest[3]; - ASSERT_EQ(2, UrlEncode(source, dest, arraysize(dest))); - ASSERT_STREQ("aa", dest); -} - -TEST(Urlencode, ShortDestinationEncoding) { - // In this case we have a destination that is not - // big enough to hold the encoding. - char source[] = "&"; - char dest[3]; - ASSERT_EQ(0, UrlEncode(source, dest, arraysize(dest))); - ASSERT_EQ('\0', dest[0]); -} - -TEST(Urlencode, Encoding1) { - char source[] = "A^ "; - char dest[8]; - ASSERT_EQ(5, UrlEncode(source, dest, arraysize(dest))); - ASSERT_STREQ("A%5E+", dest); -} - -TEST(Urlencode, Encoding2) { - char source[] = "A^ "; - char dest[8]; - ASSERT_EQ(7, rtc::UrlEncodeWithoutEncodingSpaceAsPlus(source, dest, - arraysize(dest))); - ASSERT_STREQ("A%5E%20", dest); -} - -TEST(Urldecode, Decoding1) { - char source[] = "A%5E+"; - char dest[8]; - ASSERT_EQ(3, rtc::UrlDecode(source, dest)); - ASSERT_STREQ("A^ ", dest); -} - -TEST(Urldecode, Decoding2) { - char source[] = "A%5E+"; - char dest[8]; - ASSERT_EQ(3, rtc::UrlDecodeWithoutEncodingSpaceAsPlus(source, dest)); - ASSERT_STREQ("A^+", dest); -}