OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "components/nacl/browser/pnacl_translation_cache.h" | 5 #include "components/nacl/browser/pnacl_translation_cache.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 in_memory_ = true; | 391 in_memory_ = true; |
392 return Init(net::MEMORY_CACHE, base::FilePath(), kMaxMemCacheSize, callback); | 392 return Init(net::MEMORY_CACHE, base::FilePath(), kMaxMemCacheSize, callback); |
393 } | 393 } |
394 | 394 |
395 int PnaclTranslationCache::Size() { | 395 int PnaclTranslationCache::Size() { |
396 if (!disk_cache_) | 396 if (!disk_cache_) |
397 return -1; | 397 return -1; |
398 return disk_cache_->GetEntryCount(); | 398 return disk_cache_->GetEntryCount(); |
399 } | 399 } |
400 | 400 |
| 401 // Beware that any changes to this function or to PnaclCacheInfo will |
| 402 // effectively invalidate existing translation cache entries. |
| 403 |
401 // static | 404 // static |
402 std::string PnaclTranslationCache::GetKey(const nacl::PnaclCacheInfo& info) { | 405 std::string PnaclTranslationCache::GetKey(const nacl::PnaclCacheInfo& info) { |
403 if (!info.pexe_url.is_valid() || info.abi_version < 0 || info.opt_level < 0) | 406 if (!info.pexe_url.is_valid() || info.abi_version < 0 || info.opt_level < 0) |
404 return std::string(); | 407 return std::string(); |
405 std::string retval("ABI:"); | 408 std::string retval("ABI:"); |
406 retval += IntToString(info.abi_version) + ";" + "opt:" + | 409 retval += IntToString(info.abi_version) + ";" + "opt:" + |
407 IntToString(info.opt_level) + ";" + "URL:"; | 410 IntToString(info.opt_level) + ";" + "URL:"; |
408 // Filter the username, password, and ref components from the URL | 411 // Filter the username, password, and ref components from the URL |
409 GURL::Replacements replacements; | 412 GURL::Replacements replacements; |
410 replacements.ClearUsername(); | 413 replacements.ClearUsername(); |
411 replacements.ClearPassword(); | 414 replacements.ClearPassword(); |
412 replacements.ClearRef(); | 415 replacements.ClearRef(); |
413 GURL key_url(info.pexe_url.ReplaceComponents(replacements)); | 416 GURL key_url(info.pexe_url.ReplaceComponents(replacements)); |
414 retval += key_url.spec() + ";"; | 417 retval += key_url.spec() + ";"; |
415 // You would think that there is already code to format base::Time values | 418 // You would think that there is already code to format base::Time values |
416 // somewhere, but I haven't found it yet. In any case, doing it ourselves | 419 // somewhere, but I haven't found it yet. In any case, doing it ourselves |
417 // here means we can keep the format stable. | 420 // here means we can keep the format stable. |
418 base::Time::Exploded exploded; | 421 base::Time::Exploded exploded; |
419 info.last_modified.UTCExplode(&exploded); | 422 info.last_modified.UTCExplode(&exploded); |
420 if (info.last_modified.is_null() || !exploded.HasValidValues()) { | 423 if (info.last_modified.is_null() || !exploded.HasValidValues()) { |
421 memset(&exploded, 0, sizeof(exploded)); | 424 memset(&exploded, 0, sizeof(exploded)); |
422 } | 425 } |
423 retval += "modified:" + IntToString(exploded.year) + ":" + | 426 retval += "modified:" + IntToString(exploded.year) + ":" + |
424 IntToString(exploded.month) + ":" + | 427 IntToString(exploded.month) + ":" + |
425 IntToString(exploded.day_of_month) + ":" + | 428 IntToString(exploded.day_of_month) + ":" + |
426 IntToString(exploded.hour) + ":" + IntToString(exploded.minute) + | 429 IntToString(exploded.hour) + ":" + IntToString(exploded.minute) + |
427 ":" + IntToString(exploded.second) + ":" + | 430 ":" + IntToString(exploded.second) + ":" + |
428 IntToString(exploded.millisecond) + ":UTC;"; | 431 IntToString(exploded.millisecond) + ":UTC;"; |
429 retval += "etag:" + info.etag; | 432 retval += "etag:" + info.etag + ";"; |
| 433 retval += "sandbox:" + info.sandbox_isa + ";"; |
| 434 retval += "extra_flags:" + info.extra_flags + ";"; |
430 return retval; | 435 return retval; |
431 } | 436 } |
432 | 437 |
433 int PnaclTranslationCache::DoomEntriesBetween( | 438 int PnaclTranslationCache::DoomEntriesBetween( |
434 base::Time initial, | 439 base::Time initial, |
435 base::Time end, | 440 base::Time end, |
436 const CompletionCallback& callback) { | 441 const CompletionCallback& callback) { |
437 return disk_cache_->DoomEntriesBetween(initial, end, callback); | 442 return disk_cache_->DoomEntriesBetween(initial, end, callback); |
438 } | 443 } |
439 | 444 |
440 } // namespace pnacl | 445 } // namespace pnacl |
OLD | NEW |