| 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 "chrome/browser/extensions/install_verifier.h" | 5 #include "chrome/browser/extensions/install_verifier.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 | 293 |
| 294 if (signature_.get()) { | 294 if (signature_.get()) { |
| 295 ExtensionIdSet not_allowed_yet = | 295 ExtensionIdSet not_allowed_yet = |
| 296 base::STLSetDifference<ExtensionIdSet>(ids, signature_->ids); | 296 base::STLSetDifference<ExtensionIdSet>(ids, signature_->ids); |
| 297 if (not_allowed_yet.empty()) { | 297 if (not_allowed_yet.empty()) { |
| 298 OnVerificationComplete(true, type); // considered successful. | 298 OnVerificationComplete(true, type); // considered successful. |
| 299 return; | 299 return; |
| 300 } | 300 } |
| 301 } | 301 } |
| 302 | 302 |
| 303 InstallVerifier::PendingOperation* operation = | 303 std::unique_ptr<InstallVerifier::PendingOperation> operation( |
| 304 new InstallVerifier::PendingOperation(type); | 304 new InstallVerifier::PendingOperation(type)); |
| 305 operation->ids.insert(ids.begin(), ids.end()); | 305 operation->ids.insert(ids.begin(), ids.end()); |
| 306 | 306 |
| 307 operation_queue_.push(linked_ptr<PendingOperation>(operation)); | 307 operation_queue_.push(std::move(operation)); |
| 308 | 308 |
| 309 // If there are no ongoing pending requests, we need to kick one off. | 309 // If there are no ongoing pending requests, we need to kick one off. |
| 310 if (operation_queue_.size() == 1) | 310 if (operation_queue_.size() == 1) |
| 311 BeginFetch(); | 311 BeginFetch(); |
| 312 } | 312 } |
| 313 | 313 |
| 314 void InstallVerifier::AddProvisional(const ExtensionIdSet& ids) { | 314 void InstallVerifier::AddProvisional(const ExtensionIdSet& ids) { |
| 315 provisional_.insert(ids.begin(), ids.end()); | 315 provisional_.insert(ids.begin(), ids.end()); |
| 316 AddMany(ids, ADD_PROVISIONAL); | 316 AddMany(ids, ADD_PROVISIONAL); |
| 317 } | 317 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 330 for (ExtensionIdSet::const_iterator i = ids.begin(); i != ids.end(); ++i) { | 330 for (ExtensionIdSet::const_iterator i = ids.begin(); i != ids.end(); ++i) { |
| 331 if (base::ContainsKey(signature_->ids, *i) || | 331 if (base::ContainsKey(signature_->ids, *i) || |
| 332 base::ContainsKey(signature_->invalid_ids, *i)) { | 332 base::ContainsKey(signature_->invalid_ids, *i)) { |
| 333 found_any = true; | 333 found_any = true; |
| 334 break; | 334 break; |
| 335 } | 335 } |
| 336 } | 336 } |
| 337 if (!found_any) | 337 if (!found_any) |
| 338 return; | 338 return; |
| 339 | 339 |
| 340 InstallVerifier::PendingOperation* operation = | 340 std::unique_ptr<InstallVerifier::PendingOperation> operation( |
| 341 new InstallVerifier::PendingOperation(InstallVerifier::REMOVE); | 341 new InstallVerifier::PendingOperation(InstallVerifier::REMOVE)); |
| 342 operation->ids = ids; | 342 operation->ids = ids; |
| 343 | 343 |
| 344 operation_queue_.push(linked_ptr<PendingOperation>(operation)); | 344 operation_queue_.push(std::move(operation)); |
| 345 if (operation_queue_.size() == 1) | 345 if (operation_queue_.size() == 1) |
| 346 BeginFetch(); | 346 BeginFetch(); |
| 347 } | 347 } |
| 348 | 348 |
| 349 bool InstallVerifier::AllowedByEnterprisePolicy(const std::string& id) const { | 349 bool InstallVerifier::AllowedByEnterprisePolicy(const std::string& id) const { |
| 350 return ExtensionManagementFactory::GetForBrowserContext(context_) | 350 return ExtensionManagementFactory::GetForBrowserContext(context_) |
| 351 ->IsInstallationExplicitlyAllowed(id); | 351 ->IsInstallationExplicitlyAllowed(id); |
| 352 } | 352 } |
| 353 | 353 |
| 354 std::string InstallVerifier::GetDebugPolicyProviderName() const { | 354 std::string InstallVerifier::GetDebugPolicyProviderName() const { |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 | 621 |
| 622 void GetSignatureResultHistogram(CallbackResult result) { | 622 void GetSignatureResultHistogram(CallbackResult result) { |
| 623 UMA_HISTOGRAM_ENUMERATION("ExtensionInstallVerifier.GetSignatureResult", | 623 UMA_HISTOGRAM_ENUMERATION("ExtensionInstallVerifier.GetSignatureResult", |
| 624 result, CALLBACK_RESULT_MAX); | 624 result, CALLBACK_RESULT_MAX); |
| 625 } | 625 } |
| 626 | 626 |
| 627 } // namespace | 627 } // namespace |
| 628 | 628 |
| 629 void InstallVerifier::SignatureCallback( | 629 void InstallVerifier::SignatureCallback( |
| 630 std::unique_ptr<InstallSignature> signature) { | 630 std::unique_ptr<InstallSignature> signature) { |
| 631 linked_ptr<PendingOperation> operation = operation_queue_.front(); | 631 std::unique_ptr<PendingOperation> operation = |
| 632 std::move(operation_queue_.front()); |
| 632 operation_queue_.pop(); | 633 operation_queue_.pop(); |
| 633 | 634 |
| 634 bool success = false; | 635 bool success = false; |
| 635 if (!signature.get()) { | 636 if (!signature.get()) { |
| 636 GetSignatureResultHistogram(CALLBACK_NO_SIGNATURE); | 637 GetSignatureResultHistogram(CALLBACK_NO_SIGNATURE); |
| 637 } else if (!InstallSigner::VerifySignature(*signature)) { | 638 } else if (!InstallSigner::VerifySignature(*signature)) { |
| 638 GetSignatureResultHistogram(CALLBACK_INVALID_SIGNATURE); | 639 GetSignatureResultHistogram(CALLBACK_INVALID_SIGNATURE); |
| 639 } else { | 640 } else { |
| 640 GetSignatureResultHistogram(CALLBACK_VALID_SIGNATURE); | 641 GetSignatureResultHistogram(CALLBACK_VALID_SIGNATURE); |
| 641 success = true; | 642 success = true; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 671 ScopedInstallVerifierBypassForTest::~ScopedInstallVerifierBypassForTest() { | 672 ScopedInstallVerifierBypassForTest::~ScopedInstallVerifierBypassForTest() { |
| 672 g_bypass_for_test = old_value_; | 673 g_bypass_for_test = old_value_; |
| 673 } | 674 } |
| 674 | 675 |
| 675 // static | 676 // static |
| 676 bool ScopedInstallVerifierBypassForTest::ShouldBypass() { | 677 bool ScopedInstallVerifierBypassForTest::ShouldBypass() { |
| 677 return g_bypass_for_test; | 678 return g_bypass_for_test; |
| 678 } | 679 } |
| 679 | 680 |
| 680 } // namespace extensions | 681 } // namespace extensions |
| OLD | NEW |