| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2009 Google Inc. All rights reserved. | 3 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 m_httpStatusText = statusText; | 286 m_httpStatusText = statusText; |
| 287 } | 287 } |
| 288 | 288 |
| 289 const AtomicString& ResourceResponse::httpHeaderField(const AtomicString& name)
const | 289 const AtomicString& ResourceResponse::httpHeaderField(const AtomicString& name)
const |
| 290 { | 290 { |
| 291 return m_httpHeaderFields.get(name); | 291 return m_httpHeaderFields.get(name); |
| 292 } | 292 } |
| 293 | 293 |
| 294 static const AtomicString& cacheControlHeaderString() | 294 static const AtomicString& cacheControlHeaderString() |
| 295 { | 295 { |
| 296 DEFINE_STATIC_LOCAL(const AtomicString, cacheControlHeader, ("cache-control"
, AtomicString::ConstructFromLiteral)); | 296 DEFINE_STATIC_LOCAL(const AtomicString, cacheControlHeader, ("cache-control"
)); |
| 297 return cacheControlHeader; | 297 return cacheControlHeader; |
| 298 } | 298 } |
| 299 | 299 |
| 300 static const AtomicString& pragmaHeaderString() | 300 static const AtomicString& pragmaHeaderString() |
| 301 { | 301 { |
| 302 DEFINE_STATIC_LOCAL(const AtomicString, pragmaHeader, ("pragma", AtomicStrin
g::ConstructFromLiteral)); | 302 DEFINE_STATIC_LOCAL(const AtomicString, pragmaHeader, ("pragma")); |
| 303 return pragmaHeader; | 303 return pragmaHeader; |
| 304 } | 304 } |
| 305 | 305 |
| 306 void ResourceResponse::updateHeaderParsedState(const AtomicString& name) | 306 void ResourceResponse::updateHeaderParsedState(const AtomicString& name) |
| 307 { | 307 { |
| 308 DEFINE_STATIC_LOCAL(const AtomicString, ageHeader, ("age", AtomicString::Con
structFromLiteral)); | 308 DEFINE_STATIC_LOCAL(const AtomicString, ageHeader, ("age")); |
| 309 DEFINE_STATIC_LOCAL(const AtomicString, dateHeader, ("date", AtomicString::C
onstructFromLiteral)); | 309 DEFINE_STATIC_LOCAL(const AtomicString, dateHeader, ("date")); |
| 310 DEFINE_STATIC_LOCAL(const AtomicString, expiresHeader, ("expires", AtomicStr
ing::ConstructFromLiteral)); | 310 DEFINE_STATIC_LOCAL(const AtomicString, expiresHeader, ("expires")); |
| 311 DEFINE_STATIC_LOCAL(const AtomicString, lastModifiedHeader, ("last-modified"
, AtomicString::ConstructFromLiteral)); | 311 DEFINE_STATIC_LOCAL(const AtomicString, lastModifiedHeader, ("last-modified"
)); |
| 312 | 312 |
| 313 if (equalIgnoringCase(name, ageHeader)) | 313 if (equalIgnoringCase(name, ageHeader)) |
| 314 m_haveParsedAgeHeader = false; | 314 m_haveParsedAgeHeader = false; |
| 315 else if (equalIgnoringCase(name, cacheControlHeaderString()) || equalIgnorin
gCase(name, pragmaHeaderString())) | 315 else if (equalIgnoringCase(name, cacheControlHeaderString()) || equalIgnorin
gCase(name, pragmaHeaderString())) |
| 316 m_cacheControlHeader = CacheControlHeader(); | 316 m_cacheControlHeader = CacheControlHeader(); |
| 317 else if (equalIgnoringCase(name, dateHeader)) | 317 else if (equalIgnoringCase(name, dateHeader)) |
| 318 m_haveParsedDateHeader = false; | 318 m_haveParsedDateHeader = false; |
| 319 else if (equalIgnoringCase(name, expiresHeader)) | 319 else if (equalIgnoringCase(name, expiresHeader)) |
| 320 m_haveParsedExpiresHeader = false; | 320 m_haveParsedExpiresHeader = false; |
| 321 else if (equalIgnoringCase(name, lastModifiedHeader)) | 321 else if (equalIgnoringCase(name, lastModifiedHeader)) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 | 376 |
| 377 bool ResourceResponse::cacheControlContainsMustRevalidate() | 377 bool ResourceResponse::cacheControlContainsMustRevalidate() |
| 378 { | 378 { |
| 379 if (!m_cacheControlHeader.parsed) | 379 if (!m_cacheControlHeader.parsed) |
| 380 m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.ge
t(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); | 380 m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.ge
t(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); |
| 381 return m_cacheControlHeader.containsMustRevalidate; | 381 return m_cacheControlHeader.containsMustRevalidate; |
| 382 } | 382 } |
| 383 | 383 |
| 384 bool ResourceResponse::hasCacheValidatorFields() const | 384 bool ResourceResponse::hasCacheValidatorFields() const |
| 385 { | 385 { |
| 386 DEFINE_STATIC_LOCAL(const AtomicString, lastModifiedHeader, ("last-modified"
, AtomicString::ConstructFromLiteral)); | 386 DEFINE_STATIC_LOCAL(const AtomicString, lastModifiedHeader, ("last-modified"
)); |
| 387 DEFINE_STATIC_LOCAL(const AtomicString, eTagHeader, ("etag", AtomicString::C
onstructFromLiteral)); | 387 DEFINE_STATIC_LOCAL(const AtomicString, eTagHeader, ("etag")); |
| 388 return !m_httpHeaderFields.get(lastModifiedHeader).isEmpty() || !m_httpHeade
rFields.get(eTagHeader).isEmpty(); | 388 return !m_httpHeaderFields.get(lastModifiedHeader).isEmpty() || !m_httpHeade
rFields.get(eTagHeader).isEmpty(); |
| 389 } | 389 } |
| 390 | 390 |
| 391 double ResourceResponse::cacheControlMaxAge() | 391 double ResourceResponse::cacheControlMaxAge() |
| 392 { | 392 { |
| 393 if (!m_cacheControlHeader.parsed) | 393 if (!m_cacheControlHeader.parsed) |
| 394 m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.ge
t(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); | 394 m_cacheControlHeader = parseCacheControlDirectives(m_httpHeaderFields.ge
t(cacheControlHeaderString()), m_httpHeaderFields.get(pragmaHeaderString())); |
| 395 return m_cacheControlHeader.maxAge; | 395 return m_cacheControlHeader.maxAge; |
| 396 } | 396 } |
| 397 | 397 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 413 // Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format | 413 // Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format |
| 414 double dateInMilliseconds = parseDate(headerValue); | 414 double dateInMilliseconds = parseDate(headerValue); |
| 415 if (!std::isfinite(dateInMilliseconds)) | 415 if (!std::isfinite(dateInMilliseconds)) |
| 416 return std::numeric_limits<double>::quiet_NaN(); | 416 return std::numeric_limits<double>::quiet_NaN(); |
| 417 return dateInMilliseconds / 1000; | 417 return dateInMilliseconds / 1000; |
| 418 } | 418 } |
| 419 | 419 |
| 420 double ResourceResponse::date() const | 420 double ResourceResponse::date() const |
| 421 { | 421 { |
| 422 if (!m_haveParsedDateHeader) { | 422 if (!m_haveParsedDateHeader) { |
| 423 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("date", AtomicStrin
g::ConstructFromLiteral)); | 423 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("date")); |
| 424 m_date = parseDateValueInHeader(m_httpHeaderFields, headerName); | 424 m_date = parseDateValueInHeader(m_httpHeaderFields, headerName); |
| 425 m_haveParsedDateHeader = true; | 425 m_haveParsedDateHeader = true; |
| 426 } | 426 } |
| 427 return m_date; | 427 return m_date; |
| 428 } | 428 } |
| 429 | 429 |
| 430 double ResourceResponse::age() const | 430 double ResourceResponse::age() const |
| 431 { | 431 { |
| 432 if (!m_haveParsedAgeHeader) { | 432 if (!m_haveParsedAgeHeader) { |
| 433 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("age", AtomicString
::ConstructFromLiteral)); | 433 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("age")); |
| 434 const AtomicString& headerValue = m_httpHeaderFields.get(headerName); | 434 const AtomicString& headerValue = m_httpHeaderFields.get(headerName); |
| 435 bool ok; | 435 bool ok; |
| 436 m_age = headerValue.toDouble(&ok); | 436 m_age = headerValue.toDouble(&ok); |
| 437 if (!ok) | 437 if (!ok) |
| 438 m_age = std::numeric_limits<double>::quiet_NaN(); | 438 m_age = std::numeric_limits<double>::quiet_NaN(); |
| 439 m_haveParsedAgeHeader = true; | 439 m_haveParsedAgeHeader = true; |
| 440 } | 440 } |
| 441 return m_age; | 441 return m_age; |
| 442 } | 442 } |
| 443 | 443 |
| 444 double ResourceResponse::expires() const | 444 double ResourceResponse::expires() const |
| 445 { | 445 { |
| 446 if (!m_haveParsedExpiresHeader) { | 446 if (!m_haveParsedExpiresHeader) { |
| 447 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("expires", AtomicSt
ring::ConstructFromLiteral)); | 447 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("expires")); |
| 448 m_expires = parseDateValueInHeader(m_httpHeaderFields, headerName); | 448 m_expires = parseDateValueInHeader(m_httpHeaderFields, headerName); |
| 449 m_haveParsedExpiresHeader = true; | 449 m_haveParsedExpiresHeader = true; |
| 450 } | 450 } |
| 451 return m_expires; | 451 return m_expires; |
| 452 } | 452 } |
| 453 | 453 |
| 454 double ResourceResponse::lastModified() const | 454 double ResourceResponse::lastModified() const |
| 455 { | 455 { |
| 456 if (!m_haveParsedLastModifiedHeader) { | 456 if (!m_haveParsedLastModifiedHeader) { |
| 457 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("last-modified", At
omicString::ConstructFromLiteral)); | 457 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("last-modified")); |
| 458 m_lastModified = parseDateValueInHeader(m_httpHeaderFields, headerName); | 458 m_lastModified = parseDateValueInHeader(m_httpHeaderFields, headerName); |
| 459 m_haveParsedLastModifiedHeader = true; | 459 m_haveParsedLastModifiedHeader = true; |
| 460 } | 460 } |
| 461 return m_lastModified; | 461 return m_lastModified; |
| 462 } | 462 } |
| 463 | 463 |
| 464 bool ResourceResponse::isAttachment() const | 464 bool ResourceResponse::isAttachment() const |
| 465 { | 465 { |
| 466 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("content-disposition",
AtomicString::ConstructFromLiteral)); | 466 DEFINE_STATIC_LOCAL(const AtomicString, headerName, ("content-disposition"))
; |
| 467 String value = m_httpHeaderFields.get(headerName); | 467 String value = m_httpHeaderFields.get(headerName); |
| 468 size_t loc = value.find(';'); | 468 size_t loc = value.find(';'); |
| 469 if (loc != kNotFound) | 469 if (loc != kNotFound) |
| 470 value = value.left(loc); | 470 value = value.left(loc); |
| 471 value = value.stripWhiteSpace(); | 471 value = value.stripWhiteSpace(); |
| 472 DEFINE_STATIC_LOCAL(const AtomicString, attachmentString, ("attachment", Ato
micString::ConstructFromLiteral)); | 472 DEFINE_STATIC_LOCAL(const AtomicString, attachmentString, ("attachment")); |
| 473 return equalIgnoringCase(value, attachmentString); | 473 return equalIgnoringCase(value, attachmentString); |
| 474 } | 474 } |
| 475 | 475 |
| 476 void ResourceResponse::setLastModifiedDate(time_t lastModifiedDate) | 476 void ResourceResponse::setLastModifiedDate(time_t lastModifiedDate) |
| 477 { | 477 { |
| 478 m_lastModifiedDate = lastModifiedDate; | 478 m_lastModifiedDate = lastModifiedDate; |
| 479 } | 479 } |
| 480 | 480 |
| 481 time_t ResourceResponse::lastModifiedDate() const | 481 time_t ResourceResponse::lastModifiedDate() const |
| 482 { | 482 { |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 if (a.httpHeaderFields() != b.httpHeaderFields()) | 567 if (a.httpHeaderFields() != b.httpHeaderFields()) |
| 568 return false; | 568 return false; |
| 569 if (a.resourceLoadTiming() && b.resourceLoadTiming() && *a.resourceLoadTimin
g() == *b.resourceLoadTiming()) | 569 if (a.resourceLoadTiming() && b.resourceLoadTiming() && *a.resourceLoadTimin
g() == *b.resourceLoadTiming()) |
| 570 return true; | 570 return true; |
| 571 if (a.resourceLoadTiming() != b.resourceLoadTiming()) | 571 if (a.resourceLoadTiming() != b.resourceLoadTiming()) |
| 572 return false; | 572 return false; |
| 573 return true; | 573 return true; |
| 574 } | 574 } |
| 575 | 575 |
| 576 } // namespace blink | 576 } // namespace blink |
| OLD | NEW |