Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_BASE_NET_UTIL_H_ | 5 #ifndef NET_BASE_NET_UTIL_H_ |
| 6 #define NET_BASE_NET_UTIL_H_ | 6 #define NET_BASE_NET_UTIL_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
| 10 | 10 |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 164 // When a param value is ASCII, but is not in format #2 or format #4 above, | 164 // When a param value is ASCII, but is not in format #2 or format #4 above, |
| 165 // it is returned as it is unless it's pretty close to two supported | 165 // it is returned as it is unless it's pretty close to two supported |
| 166 // formats but not well-formed. In that case, an empty string is returned. | 166 // formats but not well-formed. In that case, an empty string is returned. |
| 167 // | 167 // |
| 168 // In any case, a caller must check for the empty return value and resort to | 168 // In any case, a caller must check for the empty return value and resort to |
| 169 // another means to get a filename (e.g. url). | 169 // another means to get a filename (e.g. url). |
| 170 // | 170 // |
| 171 // This function does not do any escaping and callers are responsible for | 171 // This function does not do any escaping and callers are responsible for |
| 172 // escaping 'unsafe' characters (e.g. (back)slash, colon) as they see fit. | 172 // escaping 'unsafe' characters (e.g. (back)slash, colon) as they see fit. |
| 173 // | 173 // |
| 174 // TODO(jungshik): revisit this issue. At the moment, the only caller | 174 // TODO(jungshik): revisit this issue. At the moment, the only caller is |
| 175 // net_util::GetSuggestedFilename and it calls ReplaceIllegalCharacters. The | 175 // net::GenerateFilename and it calls ReplaceIllegalCharacters. The other |
| 176 // other caller is a unit test. Need to figure out expose this function only to | 176 // caller is a unit test. Need to figure out expose this function only to |
| 177 // net_util_unittest. | 177 // net_util_unittest. |
|
rvargas (doing something else)
2011/07/26 00:10:57
You can remove this TODO because that's basically
asanka
2011/07/28 20:04:38
Done.
| |
| 178 // | |
| 179 NET_TEST std::string GetFileNameFromCD(const std::string& header, | 178 NET_TEST std::string GetFileNameFromCD(const std::string& header, |
| 180 const std::string& referrer_charset); | 179 const std::string& referrer_charset); |
| 181 | 180 |
| 182 // Converts the given host name to unicode characters. This can be called for | 181 // Converts the given host name to unicode characters. This can be called for |
| 183 // any host name, if the input is not IDN or is invalid in some way, we'll just | 182 // any host name, if the input is not IDN or is invalid in some way, we'll just |
| 184 // return the ASCII source so it is still usable. | 183 // return the ASCII source so it is still usable. |
| 185 // | 184 // |
| 186 // The input should be the canonicalized ASCII host name from GURL. This | 185 // The input should be the canonicalized ASCII host name from GURL. This |
| 187 // function does NOT accept UTF-8! | 186 // function does NOT accept UTF-8! |
| 188 // | 187 // |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 239 // Both |name| and |raw_bytes| are escaped internally. | 238 // Both |name| and |raw_bytes| are escaped internally. |
| 240 NET_API std::string GetDirectoryListingEntry(const string16& name, | 239 NET_API std::string GetDirectoryListingEntry(const string16& name, |
| 241 const std::string& raw_bytes, | 240 const std::string& raw_bytes, |
| 242 bool is_dir, int64 size, | 241 bool is_dir, int64 size, |
| 243 base::Time modified); | 242 base::Time modified); |
| 244 | 243 |
| 245 // If text starts with "www." it is removed, otherwise text is returned | 244 // If text starts with "www." it is removed, otherwise text is returned |
| 246 // unmodified. | 245 // unmodified. |
| 247 NET_API string16 StripWWW(const string16& text); | 246 NET_API string16 StripWWW(const string16& text); |
| 248 | 247 |
| 249 // Gets the filename in the following order: | 248 // Generates a filename using the first successful method from the following (in |
| 250 // 1) the raw Content-Disposition header (as read from the network). | 249 // order): |
| 251 // |referrer_charset| is used as one of charsets to interpret a raw 8bit | 250 // |
| 252 // string in C-D header (after interpreting as UTF-8 fails). | 251 // 1) The raw Content-Disposition header in |content_disposition| (as read from |
| 253 // See the comment for GetFilenameFromCD for more details. | 252 // the network. |referrer_charset| is used as described in the comment for |
| 254 // 2) the suggested name | 253 // GetFileNameFromCD(). |
| 255 // 3) the last path component name or hostname from |url| | 254 // 2) |suggested_name| if specified. |suggested_name| is assumed to be in |
| 256 // 4) the given |default_name| | 255 // UTF-8. |
| 257 // 5) the hard-coded name "download", as the last resort | 256 // 3) The filename extracted from the |url|. |referrer_charset| will be used to |
| 257 // interpret the URL if there are non-ascii characters. | |
| 258 // 4) |default_name|. If non-empty, |default_name| is assumed to be a filename | |
| 259 // and shouldn't contain a path. | |
| 260 // 5) The hostname portion from the |url| | |
| 261 // 6) The string "download" | |
| 262 // | |
| 263 // For each method, except 4), leading and trailing '.'s will be removed. On | |
| 264 // OS_WIN, trailing spaces are also removed. | |
|
rvargas (doing something else)
2011/07/26 22:25:41
nit: I think that we use "Windows" when describing
asanka
2011/07/28 20:04:38
Done.
| |
| 265 // | |
| 266 // Once the filename is determined, any illegal characters will be replaced by | |
| 267 // '-'. If the filename doesn't contain an extension, and a |mime_type| is | |
| 268 // specified, the preferred extension for the |mime_type| will be appended to | |
| 269 // the filename. The resulting filename is then checked against a list of | |
| 270 // reserved names on OS_WIN. If the name is reserved, an underscore will be | |
| 271 // prepended to the filename. | |
| 272 // | |
| 273 // Note: |mime_type| should only be specified if this function is called from a | |
| 274 // thread that allows IO. | |
| 258 NET_API string16 GetSuggestedFilename(const GURL& url, | 275 NET_API string16 GetSuggestedFilename(const GURL& url, |
| 259 const std::string& content_disposition, | 276 const std::string& content_disposition, |
| 260 const std::string& referrer_charset, | 277 const std::string& referrer_charset, |
| 261 const std::string& suggested_name, | 278 const std::string& suggested_name, |
| 279 const std::string& mime_type, | |
| 262 const string16& default_name); | 280 const string16& default_name); |
| 263 | 281 |
| 282 // Similar to GetSuggestedFilename(), but returns a FilePath. | |
|
rvargas (doing something else)
2011/07/26 22:25:41
It looks like long term we should have just one me
asanka
2011/07/28 20:04:38
Perhaps the correct solution is to move the encodi
rvargas (doing something else)
2011/07/29 01:34:53
Yeah, I saw the WebUrlLoader case... The helper ca
| |
| 283 NET_API FilePath GenerateFileName(const GURL& url, | |
| 284 const std::string& content_disposition, | |
| 285 const std::string& referrer_charset, | |
| 286 const std::string& suggested_name, | |
| 287 const std::string& mime_type, | |
| 288 const string16& default_name); | |
| 289 | |
| 290 // Ensure that the filename and extension is safe to use in the filesystem. | |
|
rvargas (doing something else)
2011/07/26 22:25:41
nit: Ensures
asanka
2011/07/28 20:04:38
Done.
| |
| 291 // | |
| 292 // Assumes that |file_path| already contains a valid path or file name. On | |
| 293 // Windows if the extension causes the file to have an unsafe interaction with | |
| 294 // the shell (see net_util::IsShellIntegratedExtension()), then it will be | |
| 295 // replaced by the string 'download'. If |file_path| doesn't contain an | |
| 296 // extension and |mime_type| is non-empty, the preferred extension for | |
| 297 // |mime_type| will be used as the extension. | |
| 298 // | |
| 299 // On Windows, the filename will be checked against a set of reserved names, and | |
| 300 // if so, an underscore will be prepended to the name. | |
| 301 // | |
| 302 // |file_name| can either be just the file name or it can be a full path to a | |
| 303 // file. | |
| 304 // | |
| 305 // Note: |mime_type| should only be non-empty if this function is called from a | |
| 306 // thread that allows IO. | |
| 307 NET_API void GenerateSafeFileName(const std::string& mime_type, | |
| 308 FilePath* file_path); | |
| 309 | |
| 264 // Checks the given port against a list of ports which are restricted by | 310 // Checks the given port against a list of ports which are restricted by |
| 265 // default. Returns true if the port is allowed, false if it is restricted. | 311 // default. Returns true if the port is allowed, false if it is restricted. |
| 266 bool IsPortAllowedByDefault(int port); | 312 bool IsPortAllowedByDefault(int port); |
| 267 | 313 |
| 268 // Checks the given port against a list of ports which are restricted by the | 314 // Checks the given port against a list of ports which are restricted by the |
| 269 // FTP protocol. Returns true if the port is allowed, false if it is | 315 // FTP protocol. Returns true if the port is allowed, false if it is |
| 270 // restricted. | 316 // restricted. |
| 271 bool IsPortAllowedByFtp(int port); | 317 bool IsPortAllowedByFtp(int port); |
| 272 | 318 |
| 273 // Check if banned |port| has been overriden by an entry in | 319 // Check if banned |port| has been overriden by an entry in |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 459 | 505 |
| 460 // Returns list of network interfaces except loopback interface. If an | 506 // Returns list of network interfaces except loopback interface. If an |
| 461 // interface has more than one address, a separate entry is added to | 507 // interface has more than one address, a separate entry is added to |
| 462 // the list for each address. | 508 // the list for each address. |
| 463 // Can be called only on a thread that allows IO. | 509 // Can be called only on a thread that allows IO. |
| 464 NET_API bool GetNetworkList(NetworkInterfaceList* networks); | 510 NET_API bool GetNetworkList(NetworkInterfaceList* networks); |
| 465 | 511 |
| 466 } // namespace net | 512 } // namespace net |
| 467 | 513 |
| 468 #endif // NET_BASE_NET_UTIL_H_ | 514 #endif // NET_BASE_NET_UTIL_H_ |
| OLD | NEW |