Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: src/shared/Utils.h

Issue 5921969115496448: Issue 1115 - Some yahoo page not correctly shown on IE8 when ABP enabled (Closed)
Left Patch Set: address comments Created Feb. 13, 2015, 3:19 p.m.
Right Patch Set: fix and rebase Created March 4, 2015, 1:21 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « src/plugin/PluginWbPassThrough.cpp ('k') | src/shared/Utils.cpp » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2015 Eyeo GmbH 3 * Copyright (C) 2006-2015 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 #ifndef UTILS_H 18 #ifndef UTILS_H
19 #define UTILS_H 19 #define UTILS_H
20 20
21 #include <algorithm> 21 #include <algorithm>
22 #include <locale> 22 #include <locale>
23 #include <functional> 23 #include <functional>
24 #include <string> 24 #include <string>
25 #include <vector>
25 26
26 #define WM_ALREADY_UP_TO_DATE WM_APP+1 27 #define WM_ALREADY_UP_TO_DATE WM_APP+1
27 #define WM_UPDATE_CHECK_ERROR WM_APP+2 28 #define WM_UPDATE_CHECK_ERROR WM_APP+2
28 #define WM_DOWNLOADING_UPDATE WM_APP+3 29 #define WM_DOWNLOADING_UPDATE WM_APP+3
29 30
30 // 31 //
31 // Application Package Authority. 32 // Application Package Authority.
32 // 33 //
33 34
34 #define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15} 35 #define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15}
(...skipping 10 matching lines...) Expand all
45 // 46 //
46 47
47 #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x00000001L) 48 #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x00000001L)
48 49
49 50
50 bool IsWindowsVistaOrLater(); 51 bool IsWindowsVistaOrLater();
51 bool IsWindows8OrLater(); 52 bool IsWindows8OrLater();
52 53
53 std::string ToUtf8String(const std::wstring& str); 54 std::string ToUtf8String(const std::wstring& str);
54 std::wstring ToUtf16String(const std::string& str); 55 std::wstring ToUtf16String(const std::string& str);
56 std::vector<std::wstring> ToUtf16Strings(const std::vector<std::string>& value);
55 std::wstring GetDllDir(); 57 std::wstring GetDllDir();
56 std::wstring GetAppDataPath(); 58 std::wstring GetAppDataPath();
57 void ReplaceString(std::wstring& input, const std::wstring placeholder, const st d::wstring replacement); 59 void ReplaceString(std::wstring& input, const std::wstring placeholder, const st d::wstring replacement);
58 60
59 /** 61 /**
60 * Returns the begging of the URL which includes the scheme and hierarchical 62 * Returns the beginning of the URL which includes the scheme and hierarchical
61 * part according to http://en.wikipedia.org/wiki/URI_scheme . 63 * part according to http://en.wikipedia.org/wiki/URI_scheme.
62 */ 64 */
63 std::wstring GetSchemeAndHierarchicalPart(const std::wstring& url); 65 std::wstring GetSchemeAndHierarchicalPart(const std::wstring& url);
64 66
65 std::wstring GetQueryString(const std::wstring& url); 67 std::wstring GetQueryString(const std::wstring& url);
66 /**
67 * Splits a string into tokens separated by a delimiter.
68 * Applies a function to each token.
69 * Terminates early if the function returns false.
70 * Throws if `fn` is empty, see the reference of std::function::operator().
71 */
72 void ForEachToken(const std::wstring& value, wchar_t delimiter,
73 const std::function<bool(std::wstring::const_iterator begin, std::wstring::con st_iterator end)>& fn);
74
75 /**
76 * Applies a function to each name=value pair in a query string.
77 * Terminates early if the function returns false.
78 * Throws if `fn` is empty, see the reference of std::function::operator().
79 */
80 void ForEachQueryStringParameter(const std::wstring& urlQueryString,
81 const std::function<bool(const std::wstring& name, const std::wstring& value)> & fn);
82 68
83 template<class T> 69 template<class T>
84 T TrimString(T text) 70 T TrimString(T text)
85 { 71 {
86 // Via http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-st dstring 72 // Via http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-st dstring
87 T trimmed(text); 73 T trimmed(text);
88 std::function<bool(T::value_type)> isspace = std::bind(&std::isspace<T::value_ type>, std::placeholders::_1, std::locale::classic()); 74 std::function<bool(T::value_type)> isspace = std::bind(&std::isspace<T::value_ type>, std::placeholders::_1, std::locale::classic());
89 trimmed.erase(trimmed.begin(), std::find_if(trimmed.begin(), trimmed.end(), st d::not1(isspace))); 75 trimmed.erase(trimmed.begin(), std::find_if(trimmed.begin(), trimmed.end(), st d::not1(isspace)));
90 trimmed.erase(std::find_if(trimmed.rbegin(), trimmed.rend(), std::not1(isspace )).base(), trimmed.end()); 76 trimmed.erase(std::find_if(trimmed.rbegin(), trimmed.rend(), std::not1(isspace )).base(), trimmed.end());
91 return trimmed; 77 return trimmed;
92 } 78 }
93 79
94 #endif // UTILS_H 80 #endif // UTILS_H
LEFTRIGHT

Powered by Google App Engine
This is Rietveld