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

Side by Side Diff: components/nacl/browser/nacl_browser.cc

Issue 263683002: Set file tokens for NaCl main nexe if available to enable validation caching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: concat filepath literal Created 6 years, 7 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 // 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/nacl_browser.h" 5 #include "components/nacl/browser/nacl_browser.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/files/file_proxy.h" 9 #include "base/files/file_proxy.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 10 matching lines...) Expand all
21 namespace { 21 namespace {
22 22
23 // An arbitrary delay to coalesce multiple writes to the cache. 23 // An arbitrary delay to coalesce multiple writes to the cache.
24 const int kValidationCacheCoalescingTimeMS = 6000; 24 const int kValidationCacheCoalescingTimeMS = 6000;
25 const char kValidationCacheSequenceName[] = "NaClValidationCache"; 25 const char kValidationCacheSequenceName[] = "NaClValidationCache";
26 const base::FilePath::CharType kValidationCacheFileName[] = 26 const base::FilePath::CharType kValidationCacheFileName[] =
27 FILE_PATH_LITERAL("nacl_validation_cache.bin"); 27 FILE_PATH_LITERAL("nacl_validation_cache.bin");
28 28
29 const bool kValidationCacheEnabledByDefault = true; 29 const bool kValidationCacheEnabledByDefault = true;
30 30
31 enum ValidationCacheStatus {
32 CACHE_MISS = 0,
33 CACHE_HIT,
34 CACHE_MAX
35 };
36
37 // Keep the cache bounded to an arbitrary size. If it's too small, useful 31 // Keep the cache bounded to an arbitrary size. If it's too small, useful
38 // entries could be evicted when multiple .nexes are loaded at once. On the 32 // entries could be evicted when multiple .nexes are loaded at once. On the
39 // other hand, entries are not always claimed (and hence removed), so the size 33 // other hand, entries are not always claimed (and hence removed), so the size
40 // of the cache will likely saturate at its maximum size. 34 // of the cache will likely saturate at its maximum size.
41 // Entries may not be claimed for two main reasons. 1) the NaCl process could 35 // Entries may not be claimed for two main reasons. 1) the NaCl process could
42 // be killed while it is loading. 2) the trusted NaCl plugin opens files using 36 // be killed while it is loading. 2) the trusted NaCl plugin opens files using
43 // the code path but doesn't resolve them. 37 // the code path but doesn't resolve them.
44 // TODO(ncbray) don't cache files that the plugin will not resolve. 38 // TODO(ncbray) don't cache files that the plugin will not resolve.
45 const int kFilePathCacheSize = 100; 39 const int kFilePathCacheSize = 100;
46 40
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 pickle->size()); 87 pickle->size());
94 } 88 }
95 89
96 void RemoveCache(const base::FilePath& filename, 90 void RemoveCache(const base::FilePath& filename,
97 const base::Closure& callback) { 91 const base::Closure& callback) {
98 base::DeleteFile(filename, false); 92 base::DeleteFile(filename, false);
99 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, 93 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
100 callback); 94 callback);
101 } 95 }
102 96
103 void LogCacheQuery(ValidationCacheStatus status) { 97 void LogCacheQuery(nacl::NaClBrowser::ValidationCacheStatus status) {
104 UMA_HISTOGRAM_ENUMERATION("NaCl.ValidationCache.Query", status, CACHE_MAX); 98 UMA_HISTOGRAM_ENUMERATION("NaCl.ValidationCache.Query", status,
99 nacl::NaClBrowser::CACHE_MAX);
105 } 100 }
106 101
107 void LogCacheSet(ValidationCacheStatus status) { 102 void LogCacheSet(nacl::NaClBrowser::ValidationCacheStatus status) {
108 // Bucket zero is reserved for future use. 103 // Bucket zero is reserved for future use.
109 UMA_HISTOGRAM_ENUMERATION("NaCl.ValidationCache.Set", status, CACHE_MAX); 104 UMA_HISTOGRAM_ENUMERATION("NaCl.ValidationCache.Set", status,
105 nacl::NaClBrowser::CACHE_MAX);
110 } 106 }
111 107
112 // Crash throttling parameters. 108 // Crash throttling parameters.
113 const size_t kMaxCrashesPerInterval = 3; 109 const size_t kMaxCrashesPerInterval = 3;
114 const int64 kCrashesIntervalInSeconds = 120; 110 const int64 kCrashesIntervalInSeconds = 120;
115 111
116 } // namespace 112 } // namespace
117 113
118 namespace nacl { 114 namespace nacl {
119 115
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 bool NaClBrowser::IsThrottled() { 554 bool NaClBrowser::IsThrottled() {
559 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 555 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
560 if (crash_times_.size() != kMaxCrashesPerInterval) { 556 if (crash_times_.size() != kMaxCrashesPerInterval) {
561 return false; 557 return false;
562 } 558 }
563 base::TimeDelta delta = base::Time::Now() - crash_times_.front(); 559 base::TimeDelta delta = base::Time::Now() - crash_times_.front();
564 return delta.InSeconds() <= kCrashesIntervalInSeconds; 560 return delta.InSeconds() <= kCrashesIntervalInSeconds;
565 } 561 }
566 562
567 } // namespace nacl 563 } // namespace nacl
OLDNEW
« no previous file with comments | « components/nacl/browser/nacl_browser.h ('k') | components/nacl/renderer/ppb_nacl_private_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698