| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index f7f1140339ecbe349ec7125cba2195a851525f09..7724a3582201aa99545620a67e928eaf46dd56c3 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -188,6 +188,36 @@ class SharedModuleProvider : public extensions::ManagementPolicy::Provider {
|
| DISALLOW_COPY_AND_ASSIGN(SharedModuleProvider);
|
| };
|
|
|
| +enum VerifyAllSuccess {
|
| + VERIFY_ALL_BOOTSTRAP_SUCCESS = 0,
|
| + VERIFY_ALL_BOOTSTRAP_FAILURE,
|
| + VERIFY_ALL_NON_BOOTSTRAP_SUCCESS,
|
| + VERIFY_ALL_NON_BOOTSTRAP_FAILURE,
|
| +
|
| + // Used in histograms. Do not remove/reorder any entries above, and the below
|
| + // MAX entry should always come last.
|
| +
|
| + VERIFY_ALL_SUCCESS_MAX
|
| +};
|
| +
|
| +void LogVerifyAllSuccessHistogram(bool bootstrap, bool success) {
|
| + VerifyAllSuccess result;
|
| + if (bootstrap && success)
|
| + result = VERIFY_ALL_BOOTSTRAP_SUCCESS;
|
| + else if (bootstrap && !success)
|
| + result = VERIFY_ALL_BOOTSTRAP_FAILURE;
|
| + else if (!bootstrap && success)
|
| + result = VERIFY_ALL_NON_BOOTSTRAP_SUCCESS;
|
| + else
|
| + result = VERIFY_ALL_NON_BOOTSTRAP_FAILURE;
|
| +
|
| + UMA_HISTOGRAM_ENUMERATION("ExtensionService.VerifyAllSuccess",
|
| + result, VERIFY_ALL_SUCCESS_MAX);
|
| +}
|
| +
|
| +void LogAddVerifiedSuccess(bool success) {
|
| + UMA_HISTOGRAM_BOOLEAN("ExtensionService.AddVerified", success);
|
| +}
|
|
|
| } // namespace
|
|
|
| @@ -551,7 +581,7 @@ void ExtensionService::Init() {
|
| InstallVerifier* verifier =
|
| extensions::ExtensionSystem::Get(profile_)->install_verifier();
|
| if (verifier->NeedsBootstrap())
|
| - VerifyAllExtensions();
|
| + VerifyAllExtensions(true); // bootstrap=true.
|
| base::MessageLoop::current()->PostDelayedTask(
|
| FROM_HERE,
|
| base::Bind(&ExtensionService::GarbageCollectExtensions, AsWeakPtr()),
|
| @@ -585,7 +615,7 @@ void ExtensionService::LoadGreylistFromPrefs() {
|
| }
|
| }
|
|
|
| -void ExtensionService::VerifyAllExtensions() {
|
| +void ExtensionService::VerifyAllExtensions(bool bootstrap) {
|
| ExtensionIdSet to_add;
|
| scoped_ptr<ExtensionSet> all_extensions = GenerateInstalledExtensionsSet();
|
|
|
| @@ -598,10 +628,11 @@ void ExtensionService::VerifyAllExtensions() {
|
| }
|
| extensions::ExtensionSystem::Get(profile_)->install_verifier()->AddMany(
|
| to_add, base::Bind(&ExtensionService::FinishVerifyAllExtensions,
|
| - AsWeakPtr()));
|
| + AsWeakPtr(), bootstrap));
|
| }
|
|
|
| -void ExtensionService::FinishVerifyAllExtensions(bool success) {
|
| +void ExtensionService::FinishVerifyAllExtensions(bool bootstrap, bool success) {
|
| + LogVerifyAllSuccessHistogram(bootstrap, success);
|
| if (success) {
|
| // Check to see if any currently unverified extensions became verified.
|
| InstallVerifier* verifier =
|
| @@ -2216,7 +2247,7 @@ void ExtensionService::AddNewOrUpdatedExtension(
|
| delayed_installs_.Remove(extension->id());
|
| if (InstallVerifier::NeedsVerification(*extension)) {
|
| extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add(
|
| - extension->id(), InstallVerifier::AddResultCallback());
|
| + extension->id(), base::Bind(LogAddVerifiedSuccess));
|
| }
|
| FinishInstallation(extension);
|
| }
|
|
|