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/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/files/file_proxy.h" | 8 #include "base/files/file_proxy.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 irt_name.append(FILE_PATH_LITERAL("arm")); | 59 irt_name.append(FILE_PATH_LITERAL("arm")); |
60 #elif defined(ARCH_CPU_MIPSEL) | 60 #elif defined(ARCH_CPU_MIPSEL) |
61 irt_name.append(FILE_PATH_LITERAL("mips32")); | 61 irt_name.append(FILE_PATH_LITERAL("mips32")); |
62 #else | 62 #else |
63 #error Add support for your architecture to NaCl IRT file selection | 63 #error Add support for your architecture to NaCl IRT file selection |
64 #endif | 64 #endif |
65 irt_name.append(FILE_PATH_LITERAL(".nexe")); | 65 irt_name.append(FILE_PATH_LITERAL(".nexe")); |
66 return irt_name; | 66 return irt_name; |
67 } | 67 } |
68 | 68 |
| 69 #if !defined(OS_ANDROID) |
69 bool CheckEnvVar(const char* name, bool default_value) { | 70 bool CheckEnvVar(const char* name, bool default_value) { |
70 bool result = default_value; | 71 bool result = default_value; |
71 const char* var = getenv(name); | 72 const char* var = getenv(name); |
72 if (var && strlen(var) > 0) { | 73 if (var && strlen(var) > 0) { |
73 result = var[0] != '0'; | 74 result = var[0] != '0'; |
74 } | 75 } |
75 return result; | 76 return result; |
76 } | 77 } |
| 78 #endif |
77 | 79 |
78 void ReadCache(const base::FilePath& filename, std::string* data) { | 80 void ReadCache(const base::FilePath& filename, std::string* data) { |
79 if (!base::ReadFileToString(filename, data)) { | 81 if (!base::ReadFileToString(filename, data)) { |
80 // Zero-size data used as an in-band error code. | 82 // Zero-size data used as an in-band error code. |
81 data->clear(); | 83 data->clear(); |
82 } | 84 } |
83 } | 85 } |
84 | 86 |
85 void WriteCache(const base::FilePath& filename, const Pickle* pickle) { | 87 void WriteCache(const base::FilePath& filename, const Pickle* pickle) { |
86 base::WriteFile(filename, static_cast<const char*>(pickle->data()), | 88 base::WriteFile(filename, static_cast<const char*>(pickle->data()), |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 if (!file.GetInfo(&file_info) || file_info.is_directory) | 135 if (!file.GetInfo(&file_info) || file_info.is_directory) |
134 return base::File(); | 136 return base::File(); |
135 | 137 |
136 return file.Pass(); | 138 return file.Pass(); |
137 } | 139 } |
138 | 140 |
139 NaClBrowser::NaClBrowser() | 141 NaClBrowser::NaClBrowser() |
140 : irt_filepath_(), | 142 : irt_filepath_(), |
141 irt_state_(NaClResourceUninitialized), | 143 irt_state_(NaClResourceUninitialized), |
142 validation_cache_file_path_(), | 144 validation_cache_file_path_(), |
143 validation_cache_is_enabled_( | 145 validation_cache_is_enabled_(false), |
144 CheckEnvVar("NACL_VALIDATION_CACHE", | |
145 kValidationCacheEnabledByDefault)), | |
146 validation_cache_is_modified_(false), | 146 validation_cache_is_modified_(false), |
147 validation_cache_state_(NaClResourceUninitialized), | 147 validation_cache_state_(NaClResourceUninitialized), |
148 path_cache_(kFilePathCacheSize), | 148 path_cache_(kFilePathCacheSize), |
149 ok_(true), | 149 ok_(true), |
150 weak_factory_(this) { | 150 weak_factory_(this) { |
| 151 #if !defined(OS_ANDROID) |
| 152 validation_cache_is_enabled_ = |
| 153 CheckEnvVar("NACL_VALIDATION_CACHE", |
| 154 kValidationCacheEnabledByDefault); |
| 155 #endif |
151 } | 156 } |
152 | 157 |
153 void NaClBrowser::SetDelegate(NaClBrowserDelegate* delegate) { | 158 void NaClBrowser::SetDelegate(NaClBrowserDelegate* delegate) { |
154 NaClBrowser* nacl_browser = NaClBrowser::GetInstance(); | 159 NaClBrowser* nacl_browser = NaClBrowser::GetInstance(); |
155 nacl_browser->browser_delegate_.reset(delegate); | 160 nacl_browser->browser_delegate_.reset(delegate); |
156 } | 161 } |
157 | 162 |
158 NaClBrowserDelegate* NaClBrowser::GetDelegate() { | 163 NaClBrowserDelegate* NaClBrowser::GetDelegate() { |
159 // The delegate is not owned by the IO thread. This accessor method can be | 164 // The delegate is not owned by the IO thread. This accessor method can be |
160 // called from other threads. | 165 // called from other threads. |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 bool NaClBrowser::IsThrottled() { | 560 bool NaClBrowser::IsThrottled() { |
556 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 561 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
557 if (crash_times_.size() != kMaxCrashesPerInterval) { | 562 if (crash_times_.size() != kMaxCrashesPerInterval) { |
558 return false; | 563 return false; |
559 } | 564 } |
560 base::TimeDelta delta = base::Time::Now() - crash_times_.front(); | 565 base::TimeDelta delta = base::Time::Now() - crash_times_.front(); |
561 return delta.InSeconds() <= kCrashesIntervalInSeconds; | 566 return delta.InSeconds() <= kCrashesIntervalInSeconds; |
562 } | 567 } |
563 | 568 |
564 } // namespace nacl | 569 } // namespace nacl |
OLD | NEW |