| Index: chrome/common/safe_browsing/file_type_policies.cc
|
| diff --git a/chrome/common/safe_browsing/file_type_policies.cc b/chrome/common/safe_browsing/file_type_policies.cc
|
| index 1741b5a88de3e1ab7ba2d6fc3879bbca939b9460..b1bb39e5d8d3cef039b526a45539fbef0a4edc60 100644
|
| --- a/chrome/common/safe_browsing/file_type_policies.cc
|
| +++ b/chrome/common/safe_browsing/file_type_policies.cc
|
| @@ -127,7 +127,21 @@ FileTypePolicies::UpdateResult FileTypePolicies::PopulateFromBinaryPb(
|
| }
|
|
|
| // Looks good. Update our internal list.
|
| - config_.reset(new_config.release());
|
| + SwapConfigLocked(new_config);
|
| +
|
| + return UpdateResult::SUCCESS;
|
| +}
|
| +
|
| +void FileTypePolicies::SwapConfig(
|
| + std::unique_ptr<DownloadFileTypeConfig>& new_config) {
|
| + AutoLock lock(lock_);
|
| + SwapConfigLocked(new_config);
|
| +}
|
| +
|
| +void FileTypePolicies::SwapConfigLocked(
|
| + std::unique_ptr<DownloadFileTypeConfig>& new_config) {
|
| + lock_.AssertAcquired();
|
| + config_.swap(new_config);
|
|
|
| // Build an index for faster lookup.
|
| file_type_by_ext_.clear();
|
| @@ -135,13 +149,6 @@ FileTypePolicies::UpdateResult FileTypePolicies::PopulateFromBinaryPb(
|
| // If there are dups, first one wins.
|
| file_type_by_ext_.insert(std::make_pair(file_type.extension(), &file_type));
|
| }
|
| -
|
| - return UpdateResult::SUCCESS;
|
| -}
|
| -
|
| -float FileTypePolicies::SampledPingProbability() const {
|
| - AutoLock lock(lock_);
|
| - return config_ ? config_->sampled_ping_probability() : 0.0;
|
| }
|
|
|
| // static
|
| @@ -166,6 +173,15 @@ std::string FileTypePolicies::CanonicalizedExtension(
|
| return ascii_ext;
|
| }
|
|
|
| +//
|
| +// Accessors
|
| +//
|
| +
|
| +float FileTypePolicies::SampledPingProbability() const {
|
| + AutoLock lock(lock_);
|
| + return config_ ? config_->sampled_ping_probability() : 0.0;
|
| +}
|
| +
|
| const DownloadFileType& FileTypePolicies::PolicyForExtension(
|
| const std::string& ascii_ext) const {
|
| lock_.AssertAcquired();
|
| @@ -208,11 +224,7 @@ bool FileTypePolicies::IsArchiveFile(const base::FilePath& file) const {
|
| return PolicyForExtension(ext).is_archive();
|
| }
|
|
|
| -bool FileTypePolicies::IsCheckedBinaryFile(const base::FilePath& file) const {
|
| - const std::string ext = CanonicalizedExtension(file);
|
| - AutoLock lock(lock_);
|
| - return PolicyForExtension(ext).ping_setting() == DownloadFileType::FULL_PING;
|
| -}
|
| +// TODO(nparker): Add unit tests for these accessors.
|
|
|
| bool FileTypePolicies::IsAllowedToOpenAutomatically(
|
| const base::FilePath& file) const {
|
| @@ -224,6 +236,17 @@ bool FileTypePolicies::IsAllowedToOpenAutomatically(
|
| DownloadFileType::ALLOW_AUTO_OPEN;
|
| }
|
|
|
| +DownloadFileType::PingSetting FileTypePolicies::PingSettingForFile(
|
| + const base::FilePath& file) const {
|
| + const std::string ext = CanonicalizedExtension(file);
|
| + AutoLock lock(lock_);
|
| + return PolicyForExtension(ext).ping_setting();
|
| +}
|
| +
|
| +bool FileTypePolicies::IsCheckedBinaryFile(const base::FilePath& file) const {
|
| + return PingSettingForFile(file) == DownloadFileType::FULL_PING;
|
| +}
|
| +
|
| DownloadFileType::DangerLevel FileTypePolicies::GetFileDangerLevel(
|
| const base::FilePath& file) const {
|
| const std::string ext = CanonicalizedExtension(file);
|
|
|