Chromium Code Reviews| Index: ppapi/native_client/src/trusted/plugin/pnacl_options.cc |
| diff --git a/ppapi/native_client/src/trusted/plugin/pnacl_options.cc b/ppapi/native_client/src/trusted/plugin/pnacl_options.cc |
| index 05eecf27bf6d8a01bc70d44eac60ef0c8cc90207..5e2b3338a8f3c1d10f53c38d1874cb0961f2f92b 100644 |
| --- a/ppapi/native_client/src/trusted/plugin/pnacl_options.cc |
| +++ b/ppapi/native_client/src/trusted/plugin/pnacl_options.cc |
| @@ -9,6 +9,21 @@ |
| #include "native_client/src/include/nacl_string.h" |
| +namespace { |
| + |
| +nacl::string ReplaceBadFSChars(nacl::string str, |
| + const nacl::string& bad_chars, |
| + const nacl::string& replacement) { |
| + size_t replace_pos = str.find_first_of(bad_chars); |
| + while(replace_pos != nacl::string::npos) { |
|
Derek Schuff
2013/06/07 21:38:04
while (
jvoung (off chromium)
2013/06/07 23:46:25
Done.
|
| + str = str.replace(replace_pos, 1, replacement); |
| + replace_pos = str.find_first_of(bad_chars); |
| + } |
| + return str; |
| +} |
| + |
| +} // namespace |
| + |
| namespace plugin { |
| // Default to -O0 for now. |
| @@ -17,15 +32,24 @@ PnaclOptions::PnaclOptions() : translate_(false), opt_level_(0) { } |
| PnaclOptions::~PnaclOptions() { |
| } |
| -nacl::string PnaclOptions::GetCacheKey() { |
| +nacl::string PnaclOptions::GetCacheKey() const { |
| // TODO(jvoung): We need to read the PNaCl translator's manifest |
| // to grab the NaCl / PNaCl ABI version too. |
| nacl::stringstream ss; |
| // Cast opt_level_ as int so that it doesn't think it's a char. |
| ss << "-O:" << static_cast<int>(opt_level_) |
| << ";flags:" << experimental_flags_ |
| - << ";bitcode_hash:" << bitcode_hash_; |
| - return ss.str(); |
| + << ";cache_validators:" << cache_validators_; |
| + // HTML5 FileSystem-based cache does not some characters which may appear |
|
Derek Schuff
2013/06/07 21:38:04
does not some?
jvoung (off chromium)
2013/06/07 23:46:25
Done.
|
| + // in URLs, ETags, or Last-Modified times. Once we move to our own |
| + // cache-backend, hopefully it will be more tolerant of various cache |
| + // key values. |
| + // See: http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#naming-restrictions |
| + nacl::string key = ss.str(); |
| + key = ReplaceBadFSChars(key, "/", "_FWDSLASH_"); |
| + key = ReplaceBadFSChars(key, "\\", "_BCKSLASH_"); |
| + key = ReplaceBadFSChars(key, "\0", "_NULL_"); |
| + return key; |
| } |
| void PnaclOptions::set_opt_level(int8_t l) { |
| @@ -40,7 +64,7 @@ void PnaclOptions::set_opt_level(int8_t l) { |
| opt_level_ = l; |
| } |
| -std::vector<char> PnaclOptions::GetOptCommandline() { |
| +std::vector<char> PnaclOptions::GetOptCommandline() const { |
| std::vector<char> result; |
| std::vector<nacl::string> tokens; |