Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: third_party/WebKit/Source/platform/network/ResourceResponse.cpp

Issue 1844223002: Literal AtomicString construction can rely on strlen optimization. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698