| 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 // This is a port of ManifestParser.cc from WebKit/WebCore/loader/appcache. | 5 // This is a port of ManifestParser.cc from WebKit/WebCore/loader/appcache. |
| 6 | 6 |
| 7 /* | 7 /* |
| 8 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 8 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
| 9 * | 9 * |
| 10 * Redistribution and use in source and binary forms, with or without | 10 * Redistribution and use in source and binary forms, with or without |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 continue; | 180 continue; |
| 181 } else if (mode == EXPLICIT || mode == ONLINE_WHITELIST) { | 181 } else if (mode == EXPLICIT || mode == ONLINE_WHITELIST) { |
| 182 const wchar_t *line_p = line.c_str(); | 182 const wchar_t *line_p = line.c_str(); |
| 183 const wchar_t *line_end = line_p + line.length(); | 183 const wchar_t *line_end = line_p + line.length(); |
| 184 | 184 |
| 185 // Look for whitespace separating the URL from subsequent ignored tokens. | 185 // Look for whitespace separating the URL from subsequent ignored tokens. |
| 186 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') | 186 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') |
| 187 ++line_p; | 187 ++line_p; |
| 188 | 188 |
| 189 base::string16 url16; | 189 base::string16 url16; |
| 190 WideToUTF16(line.c_str(), line_p - line.c_str(), &url16); | 190 base::WideToUTF16(line.c_str(), line_p - line.c_str(), &url16); |
| 191 GURL url = manifest_url.Resolve(url16); | 191 GURL url = manifest_url.Resolve(url16); |
| 192 if (!url.is_valid()) | 192 if (!url.is_valid()) |
| 193 continue; | 193 continue; |
| 194 if (url.has_ref()) { | 194 if (url.has_ref()) { |
| 195 GURL::Replacements replacements; | 195 GURL::Replacements replacements; |
| 196 replacements.ClearRef(); | 196 replacements.ClearRef(); |
| 197 url = url.ReplaceComponents(replacements); | 197 url = url.ReplaceComponents(replacements); |
| 198 } | 198 } |
| 199 | 199 |
| 200 // Scheme component must be the same as the manifest URL's. | 200 // Scheme component must be the same as the manifest URL's. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 225 | 225 |
| 226 // Look for first whitespace separating the url namespace from | 226 // Look for first whitespace separating the url namespace from |
| 227 // the intercept type. | 227 // the intercept type. |
| 228 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') | 228 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') |
| 229 ++line_p; | 229 ++line_p; |
| 230 | 230 |
| 231 if (line_p == line_end) | 231 if (line_p == line_end) |
| 232 continue; // There was no whitespace separating the URLs. | 232 continue; // There was no whitespace separating the URLs. |
| 233 | 233 |
| 234 base::string16 namespace_url16; | 234 base::string16 namespace_url16; |
| 235 WideToUTF16(line.c_str(), line_p - line.c_str(), &namespace_url16); | 235 base::WideToUTF16(line.c_str(), line_p - line.c_str(), &namespace_url16); |
| 236 GURL namespace_url = manifest_url.Resolve(namespace_url16); | 236 GURL namespace_url = manifest_url.Resolve(namespace_url16); |
| 237 if (!namespace_url.is_valid()) | 237 if (!namespace_url.is_valid()) |
| 238 continue; | 238 continue; |
| 239 if (namespace_url.has_ref()) { | 239 if (namespace_url.has_ref()) { |
| 240 GURL::Replacements replacements; | 240 GURL::Replacements replacements; |
| 241 replacements.ClearRef(); | 241 replacements.ClearRef(); |
| 242 namespace_url = namespace_url.ReplaceComponents(replacements); | 242 namespace_url = namespace_url.ReplaceComponents(replacements); |
| 243 } | 243 } |
| 244 | 244 |
| 245 // The namespace URL must have the same scheme, host and port | 245 // The namespace URL must have the same scheme, host and port |
| (...skipping 26 matching lines...) Expand all Loading... |
| 272 // Skip whitespace separating type from the target_url. | 272 // Skip whitespace separating type from the target_url. |
| 273 while (line_p < line_end && (*line_p == '\t' || *line_p == ' ')) | 273 while (line_p < line_end && (*line_p == '\t' || *line_p == ' ')) |
| 274 ++line_p; | 274 ++line_p; |
| 275 | 275 |
| 276 // Look for whitespace separating the URL from subsequent ignored tokens. | 276 // Look for whitespace separating the URL from subsequent ignored tokens. |
| 277 const wchar_t* target_url_start = line_p; | 277 const wchar_t* target_url_start = line_p; |
| 278 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') | 278 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') |
| 279 ++line_p; | 279 ++line_p; |
| 280 | 280 |
| 281 base::string16 target_url16; | 281 base::string16 target_url16; |
| 282 WideToUTF16(target_url_start, line_p - target_url_start, &target_url16); | 282 base::WideToUTF16(target_url_start, line_p - target_url_start, |
| 283 &target_url16); |
| 283 GURL target_url = manifest_url.Resolve(target_url16); | 284 GURL target_url = manifest_url.Resolve(target_url16); |
| 284 if (!target_url.is_valid()) | 285 if (!target_url.is_valid()) |
| 285 continue; | 286 continue; |
| 286 | 287 |
| 287 if (target_url.has_ref()) { | 288 if (target_url.has_ref()) { |
| 288 GURL::Replacements replacements; | 289 GURL::Replacements replacements; |
| 289 replacements.ClearRef(); | 290 replacements.ClearRef(); |
| 290 target_url = target_url.ReplaceComponents(replacements); | 291 target_url = target_url.ReplaceComponents(replacements); |
| 291 } | 292 } |
| 292 if (manifest_url.GetOrigin() != target_url.GetOrigin()) | 293 if (manifest_url.GetOrigin() != target_url.GetOrigin()) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 303 // Look for whitespace separating the two URLs | 304 // Look for whitespace separating the two URLs |
| 304 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') | 305 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') |
| 305 ++line_p; | 306 ++line_p; |
| 306 | 307 |
| 307 if (line_p == line_end) { | 308 if (line_p == line_end) { |
| 308 // There was no whitespace separating the URLs. | 309 // There was no whitespace separating the URLs. |
| 309 continue; | 310 continue; |
| 310 } | 311 } |
| 311 | 312 |
| 312 base::string16 namespace_url16; | 313 base::string16 namespace_url16; |
| 313 WideToUTF16(line.c_str(), line_p - line.c_str(), &namespace_url16); | 314 base::WideToUTF16(line.c_str(), line_p - line.c_str(), &namespace_url16); |
| 314 GURL namespace_url = manifest_url.Resolve(namespace_url16); | 315 GURL namespace_url = manifest_url.Resolve(namespace_url16); |
| 315 if (!namespace_url.is_valid()) | 316 if (!namespace_url.is_valid()) |
| 316 continue; | 317 continue; |
| 317 if (namespace_url.has_ref()) { | 318 if (namespace_url.has_ref()) { |
| 318 GURL::Replacements replacements; | 319 GURL::Replacements replacements; |
| 319 replacements.ClearRef(); | 320 replacements.ClearRef(); |
| 320 namespace_url = namespace_url.ReplaceComponents(replacements); | 321 namespace_url = namespace_url.ReplaceComponents(replacements); |
| 321 } | 322 } |
| 322 | 323 |
| 323 // Fallback namespace URL must have the same scheme, host and port | 324 // Fallback namespace URL must have the same scheme, host and port |
| 324 // as the manifest's URL. | 325 // as the manifest's URL. |
| 325 if (manifest_url.GetOrigin() != namespace_url.GetOrigin()) { | 326 if (manifest_url.GetOrigin() != namespace_url.GetOrigin()) { |
| 326 continue; | 327 continue; |
| 327 } | 328 } |
| 328 | 329 |
| 329 // Skip whitespace separating fallback namespace from URL. | 330 // Skip whitespace separating fallback namespace from URL. |
| 330 while (line_p < line_end && (*line_p == '\t' || *line_p == ' ')) | 331 while (line_p < line_end && (*line_p == '\t' || *line_p == ' ')) |
| 331 ++line_p; | 332 ++line_p; |
| 332 | 333 |
| 333 // Look for whitespace separating the URL from subsequent ignored tokens. | 334 // Look for whitespace separating the URL from subsequent ignored tokens. |
| 334 const wchar_t* fallback_start = line_p; | 335 const wchar_t* fallback_start = line_p; |
| 335 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') | 336 while (line_p < line_end && *line_p != '\t' && *line_p != ' ') |
| 336 ++line_p; | 337 ++line_p; |
| 337 | 338 |
| 338 base::string16 fallback_url16; | 339 base::string16 fallback_url16; |
| 339 WideToUTF16(fallback_start, line_p - fallback_start, &fallback_url16); | 340 base::WideToUTF16(fallback_start, line_p - fallback_start, |
| 341 &fallback_url16); |
| 340 GURL fallback_url = manifest_url.Resolve(fallback_url16); | 342 GURL fallback_url = manifest_url.Resolve(fallback_url16); |
| 341 if (!fallback_url.is_valid()) | 343 if (!fallback_url.is_valid()) |
| 342 continue; | 344 continue; |
| 343 if (fallback_url.has_ref()) { | 345 if (fallback_url.has_ref()) { |
| 344 GURL::Replacements replacements; | 346 GURL::Replacements replacements; |
| 345 replacements.ClearRef(); | 347 replacements.ClearRef(); |
| 346 fallback_url = fallback_url.ReplaceComponents(replacements); | 348 fallback_url = fallback_url.ReplaceComponents(replacements); |
| 347 } | 349 } |
| 348 | 350 |
| 349 // Fallback entry URL must have the same scheme, host and port | 351 // Fallback entry URL must have the same scheme, host and port |
| (...skipping 11 matching lines...) Expand all Loading... |
| 361 fallback_url, is_pattern)); | 363 fallback_url, is_pattern)); |
| 362 } else { | 364 } else { |
| 363 NOTREACHED(); | 365 NOTREACHED(); |
| 364 } | 366 } |
| 365 } | 367 } |
| 366 | 368 |
| 367 return true; | 369 return true; |
| 368 } | 370 } |
| 369 | 371 |
| 370 } // namespace appcache | 372 } // namespace appcache |
| OLD | NEW |