Commit ffb13abc authored by Saurabh Nijhara's avatar Saurabh Nijhara Committed by Chromium LUCI CQ

Refactor force installed extensions unit tests

The unit tests for force installed extensions repeatedly use code to
create an extension using ExtensionBuilder and mark the extension as
loaded/ready. This code can be extracted in a common function and used
from there to reduce some code duplication.

Bug: 1163617
Change-Id: I8f7d88e798a44fad9f3079e22bc08c1caa93bbdb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2611705Reviewed-by: default avatarOleg Davydov <burunduk@chromium.org>
Commit-Queue: Saurabh Nijhara <snijhara@google.com>
Cr-Commit-Position: refs/heads/master@{#841499}
parent e79536d1
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include "extensions/browser/pref_names.h" #include "extensions/browser/pref_names.h"
#include "extensions/browser/updater/safe_manifest_parser.h" #include "extensions/browser/updater/safe_manifest_parser.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/manifest.h" #include "extensions/common/manifest.h"
#include "extensions/common/value_builder.h" #include "extensions/common/value_builder.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
...@@ -122,6 +121,7 @@ constexpr char kCrxHeaderInvalidFailureFromCache[] = ...@@ -122,6 +121,7 @@ constexpr char kCrxHeaderInvalidFailureFromCache[] =
namespace extensions { namespace extensions {
using ExtensionStatus = ForceInstalledTracker::ExtensionStatus;
using testing::_; using testing::_;
using testing::Return; using testing::Return;
...@@ -200,13 +200,13 @@ TEST_F(ForceInstalledMetricsTest, EmptyForcelist) { ...@@ -200,13 +200,13 @@ TEST_F(ForceInstalledMetricsTest, EmptyForcelist) {
TEST_F(ForceInstalledMetricsTest, ExtensionsInstalled) { TEST_F(ForceInstalledMetricsTest, ExtensionsInstalled) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build();
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build();
histogram_tester_.ExpectTotalCount(kLoadTimeStats, 0); histogram_tester_.ExpectTotalCount(kLoadTimeStats, 0);
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
histogram_tester_.ExpectTotalCount(kLoadTimeStats, 0); histogram_tester_.ExpectTotalCount(kLoadTimeStats, 0);
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::LOADED);
histogram_tester_.ExpectTotalCount(kLoadTimeStats, 1); histogram_tester_.ExpectTotalCount(kLoadTimeStats, 1);
histogram_tester_.ExpectTotalCount(kReadyTimeStats, 0); histogram_tester_.ExpectTotalCount(kReadyTimeStats, 0);
...@@ -227,8 +227,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsInstalled) { ...@@ -227,8 +227,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsInstalled) {
TEST_F(ForceInstalledMetricsTest, ExtensionSettingsOverrideForcedList) { TEST_F(ForceInstalledMetricsTest, ExtensionSettingsOverrideForcedList) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
SetupExtensionManagementPref(); SetupExtensionManagementPref();
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); kExtensionName2, kExtensionId2, ExtensionStatus::LOADED);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
// loaded or failed. // loaded or failed.
EXPECT_FALSE(fake_timer_->IsRunning()); EXPECT_FALSE(fake_timer_->IsRunning());
...@@ -239,8 +239,9 @@ TEST_F(ForceInstalledMetricsTest, ExtensionSettingsOverrideForcedList) { ...@@ -239,8 +239,9 @@ TEST_F(ForceInstalledMetricsTest, ExtensionSettingsOverrideForcedList) {
TEST_F(ForceInstalledMetricsTest, ExtensionsInstallationTimedOut) { TEST_F(ForceInstalledMetricsTest, ExtensionsInstallationTimedOut) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext = CreateNewExtension(
registry()->AddEnabled(ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddEnabled(ext.get());
EXPECT_TRUE(fake_timer_->IsRunning()); EXPECT_TRUE(fake_timer_->IsRunning());
fake_timer_->Fire(); fake_timer_->Fire();
// Metrics are reported due to timeout. // Metrics are reported due to timeout.
...@@ -267,8 +268,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsManifestDownloadTime) { ...@@ -267,8 +268,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsManifestDownloadTime) {
task_environment_.FastForwardBy(manifest_download_time); task_environment_.FastForwardBy(manifest_download_time);
install_stage_tracker()->ReportDownloadingStage( install_stage_tracker()->ReportDownloadingStage(
kExtensionId1, ExtensionDownloaderDelegate::Stage::MANIFEST_LOADED); kExtensionId1, ExtensionDownloaderDelegate::Stage::MANIFEST_LOADED);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID); kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -286,8 +287,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxDownloadTime) { ...@@ -286,8 +287,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxDownloadTime) {
ReportDownloadingManifestStage(); ReportDownloadingManifestStage();
const base::TimeDelta install_time = base::TimeDelta::FromMilliseconds(200); const base::TimeDelta install_time = base::TimeDelta::FromMilliseconds(200);
ReportInstallationStarted(install_time); ReportInstallationStarted(install_time);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID); kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -308,8 +309,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -308,8 +309,8 @@ TEST_F(ForceInstalledMetricsTest,
kExtensionId1, ExtensionDownloaderDelegate::Stage::FINISHED); kExtensionId1, ExtensionDownloaderDelegate::Stage::FINISHED);
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
kExtensionId1, InstallStageTracker::Stage::INSTALLING); kExtensionId1, InstallStageTracker::Stage::INSTALLING);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID); kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -351,8 +352,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReportInstallationStageTimes) { ...@@ -351,8 +352,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReportInstallationStageTimes) {
install_stage_tracker()->ReportCRXInstallationStage( install_stage_tracker()->ReportCRXInstallationStage(
kExtensionId1, InstallationStage::kComplete); kExtensionId1, InstallationStage::kComplete);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID); kExtensionId2, InstallStageTracker::FailureReason::MANIFEST_INVALID);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -380,11 +381,13 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReportInstallationStageTimes) { ...@@ -380,11 +381,13 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReportInstallationStageTimes) {
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
ExtensionsInstalledButNotLoadedUniqueDisableReason) { ExtensionsInstalledButNotLoadedUniqueDisableReason) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddDisabled(ext1.get()); registry()->AddDisabled(ext1.get());
ExtensionPrefs::Get(profile())->AddDisableReason( ExtensionPrefs::Get(profile())->AddDisableReason(
kExtensionId1, disable_reason::DisableReason::DISABLE_NOT_VERIFIED); kExtensionId1, disable_reason::DisableReason::DISABLE_NOT_VERIFIED);
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics should still keep running as kExtensionId1 is // ForceInstalledMetrics should still keep running as kExtensionId1 is
...@@ -400,13 +403,15 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -400,13 +403,15 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
ExtensionsInstalledButNotLoadedMultipleDisableReason) { ExtensionsInstalledButNotLoadedMultipleDisableReason) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddDisabled(ext1.get()); registry()->AddDisabled(ext1.get());
ExtensionPrefs::Get(profile())->AddDisableReasons( ExtensionPrefs::Get(profile())->AddDisableReasons(
kExtensionId1, kExtensionId1,
disable_reason::DisableReason::DISABLE_NOT_VERIFIED | disable_reason::DisableReason::DISABLE_NOT_VERIFIED |
disable_reason::DisableReason::DISABLE_UNSUPPORTED_REQUIREMENT); disable_reason::DisableReason::DISABLE_UNSUPPORTED_REQUIREMENT);
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics should still keep running as kExtensionId1 is // ForceInstalledMetrics should still keep running as kExtensionId1 is
...@@ -424,9 +429,11 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -424,9 +429,11 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
ExtensionsInstalledButNotLoadedNoDisableReason) { ExtensionsInstalledButNotLoadedNoDisableReason) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddEnabled(ext1.get()); registry()->AddEnabled(ext1.get());
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics should still keep running as kExtensionId1 is // ForceInstalledMetrics should still keep running as kExtensionId1 is
...@@ -439,9 +446,11 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -439,9 +446,11 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, ExtensionForceInstalledAndBlocklisted) { TEST_F(ForceInstalledMetricsTest, ExtensionForceInstalledAndBlocklisted) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddBlocklisted(ext1.get()); registry()->AddBlocklisted(ext1.get());
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics should still keep running as kExtensionId1 is // ForceInstalledMetrics should still keep running as kExtensionId1 is
...@@ -475,9 +484,8 @@ TEST_F(ForceInstalledMetricsTest, ForcedExtensionsAddedAfterManualExtensions) { ...@@ -475,9 +484,8 @@ TEST_F(ForceInstalledMetricsTest, ForcedExtensionsAddedAfterManualExtensions) {
EXPECT_TRUE(fake_timer_->IsRunning()); EXPECT_TRUE(fake_timer_->IsRunning());
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext.get()); kExtensionName1, kExtensionId1, ExtensionStatus::READY);
force_installed_tracker()->OnExtensionReady(profile(), ext.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID); kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID);
// ForceInstalledMetrics shuts down timer because kExtensionId1 was loaded and // ForceInstalledMetrics shuts down timer because kExtensionId1 was loaded and
...@@ -551,7 +559,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxHeaderInvalidFromCache) { ...@@ -551,7 +559,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxHeaderInvalidFromCache) {
kExtensionId1, kExtensionId1,
CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID, CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
base::string16())); base::string16()));
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -576,7 +585,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxHeaderInvalidNotFromCache) { ...@@ -576,7 +585,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsCrxHeaderInvalidNotFromCache) {
kExtensionId1, kExtensionId1,
CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID, CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
base::string16())); base::string16()));
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -602,7 +612,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -602,7 +612,8 @@ TEST_F(ForceInstalledMetricsTest,
kExtensionId1, kExtensionId1,
CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID, CrxInstallError(SandboxedUnpackerFailureReason::CRX_HEADER_INVALID,
base::string16())); base::string16()));
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
registry()->AddEnabled(ext2.get()); registry()->AddEnabled(ext2.get());
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get());
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -649,12 +660,12 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsNoUpdatesInfoReporting) { ...@@ -649,12 +660,12 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsNoUpdatesInfoReporting) {
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
ExtensionLoadedThenFailedWithAlreadyInstalledError) { ExtensionLoadedThenFailedWithAlreadyInstalledError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId1, InstallStageTracker::FailureReason::ALREADY_INSTALLED); kExtensionId1, InstallStageTracker::FailureReason::ALREADY_INSTALLED);
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); kExtensionName2, kExtensionId2, ExtensionStatus::LOADED);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
// loaded or failed. // loaded or failed.
EXPECT_FALSE(fake_timer_->IsRunning()); EXPECT_FALSE(fake_timer_->IsRunning());
...@@ -668,14 +679,12 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -668,14 +679,12 @@ TEST_F(ForceInstalledMetricsTest,
// after READY state is not reflected in the statistics. // after READY state is not reflected in the statistics.
TEST_F(ForceInstalledMetricsTest, ExtensionsReady) { TEST_F(ForceInstalledMetricsTest, ExtensionsReady) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::READY);
force_installed_tracker()->OnExtensionReady(profile(), ext1.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId1, InstallStageTracker::FailureReason::ALREADY_INSTALLED); kExtensionId1, InstallStageTracker::FailureReason::ALREADY_INSTALLED);
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); scoped_refptr<const Extension> ext2 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); kExtensionName2, kExtensionId2, ExtensionStatus::READY);
force_installed_tracker()->OnExtensionReady(profile(), ext2.get());
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
// loaded or failed. // loaded or failed.
EXPECT_FALSE(fake_timer_->IsRunning()); EXPECT_FALSE(fake_timer_->IsRunning());
...@@ -690,9 +699,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReady) { ...@@ -690,9 +699,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsReady) {
// extensions are failed. // extensions are failed.
TEST_F(ForceInstalledMetricsTest, AllExtensionsNotReady) { TEST_F(ForceInstalledMetricsTest, AllExtensionsNotReady) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::READY);
force_installed_tracker()->OnExtensionReady(profile(), ext1.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID); kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -708,9 +716,8 @@ TEST_F(ForceInstalledMetricsTest, AllExtensionsNotReady) { ...@@ -708,9 +716,8 @@ TEST_F(ForceInstalledMetricsTest, AllExtensionsNotReady) {
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
ExtensionsPreviousInstallationStageReportedAgain) { ExtensionsPreviousInstallationStageReportedAgain) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
kExtensionId2, InstallStageTracker::Stage::CREATED); kExtensionId2, InstallStageTracker::Stage::CREATED);
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
...@@ -729,9 +736,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -729,9 +736,8 @@ TEST_F(ForceInstalledMetricsTest,
// reported again after INSTALLING stage. // reported again after INSTALLING stage.
TEST_F(ForceInstalledMetricsTest, ExtensionsDownloadingStageReportedAgain) { TEST_F(ForceInstalledMetricsTest, ExtensionsDownloadingStageReportedAgain) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
kExtensionId2, InstallStageTracker::Stage::DOWNLOADING); kExtensionId2, InstallStageTracker::Stage::DOWNLOADING);
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
...@@ -775,9 +781,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsStuck) { ...@@ -775,9 +781,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionsStuck) {
TEST_F(ForceInstalledMetricsTest, ExtensionStuckInCreatedStage) { TEST_F(ForceInstalledMetricsTest, ExtensionStuckInCreatedStage) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportInstallationStage( install_stage_tracker()->ReportInstallationStage(
kExtensionId2, InstallStageTracker::Stage::CREATED); kExtensionId2, InstallStageTracker::Stage::CREATED);
install_stage_tracker()->ReportInstallCreationStage( install_stage_tracker()->ReportInstallCreationStage(
...@@ -937,9 +942,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestFetchFailed) { ...@@ -937,9 +942,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestFetchFailed) {
// Errors occurred because the fetched update manifest was invalid. // Errors occurred because the fetched update manifest was invalid.
TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalid) { TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalid) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportManifestInvalidFailure( install_stage_tracker()->ReportManifestInvalidFailure(
kExtensionId2, kExtensionId2,
ExtensionDownloaderDelegate::FailureData( ExtensionDownloaderDelegate::FailureData(
...@@ -957,9 +961,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalid) { ...@@ -957,9 +961,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalid) {
// "error-unknownApplication" is considered as a misconfiguration. // "error-unknownApplication" is considered as a misconfiguration.
TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalidAppStatusError) { TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalidAppStatusError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportManifestInvalidFailure( install_stage_tracker()->ReportManifestInvalidFailure(
kExtensionId2, kExtensionId2,
ExtensionDownloaderDelegate::FailureData( ExtensionDownloaderDelegate::FailureData(
...@@ -986,9 +989,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalidAppStatusError) { ...@@ -986,9 +989,8 @@ TEST_F(ForceInstalledMetricsTest, ExtensionManifestInvalidAppStatusError) {
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
NonMisconfigurationFailureNotPresentKioskModeOnlyError) { NonMisconfigurationFailureNotPresentKioskModeOnlyError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportCrxInstallError( install_stage_tracker()->ReportCrxInstallError(
kExtensionId2, kExtensionId2,
InstallStageTracker::FailureReason::CRX_INSTALL_ERROR_DECLINED, InstallStageTracker::FailureReason::CRX_INSTALL_ERROR_DECLINED,
...@@ -1013,9 +1015,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1013,9 +1015,8 @@ TEST_F(ForceInstalledMetricsTest,
ListBuilder().Append("extension").Append("theme").Build(); ListBuilder().Append("extension").Append("theme").Build();
prefs()->SetManagedPref(pref_names::kAllowedTypes, std::move(list)); prefs()->SetManagedPref(pref_names::kAllowedTypes, std::move(list));
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
// Hosted app is not a valid extension type, so this should report an error. // Hosted app is not a valid extension type, so this should report an error.
install_stage_tracker()->ReportExtensionType(kExtensionId2, install_stage_tracker()->ReportExtensionType(kExtensionId2,
Manifest::Type::TYPE_HOSTED_APP); Manifest::Type::TYPE_HOSTED_APP);
...@@ -1044,9 +1045,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1044,9 +1045,8 @@ TEST_F(ForceInstalledMetricsTest,
ListBuilder().Append("extension").Append("theme").Build(); ListBuilder().Append("extension").Append("theme").Build();
prefs()->SetManagedPref(pref_names::kAllowedTypes, std::move(list)); prefs()->SetManagedPref(pref_names::kAllowedTypes, std::move(list));
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportExtensionType(kExtensionId2, install_stage_tracker()->ReportExtensionType(kExtensionId2,
Manifest::Type::TYPE_EXTENSION); Manifest::Type::TYPE_EXTENSION);
install_stage_tracker()->ReportCrxInstallError( install_stage_tracker()->ReportCrxInstallError(
...@@ -1091,9 +1091,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1091,9 +1091,8 @@ TEST_F(ForceInstalledMetricsTest,
prefs()->SetManagedPref(arc::prefs::kArcEnabled, prefs()->SetManagedPref(arc::prefs::kArcEnabled,
std::make_unique<base::Value>(true)); std::make_unique<base::Value>(true));
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::REPLACED_BY_ARC_APP); kExtensionId2, InstallStageTracker::FailureReason::REPLACED_BY_ARC_APP);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -1112,9 +1111,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1112,9 +1111,8 @@ TEST_F(ForceInstalledMetricsTest,
prefs()->SetManagedPref(arc::prefs::kArcEnabled, prefs()->SetManagedPref(arc::prefs::kArcEnabled,
std::make_unique<base::Value>(false)); std::make_unique<base::Value>(false));
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::REPLACED_BY_ARC_APP); kExtensionId2, InstallStageTracker::FailureReason::REPLACED_BY_ARC_APP);
// ForceInstalledMetrics shuts down timer because all extension are either // ForceInstalledMetrics shuts down timer because all extension are either
...@@ -1131,9 +1129,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1131,9 +1129,8 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
NonMisconfigurationFailureNotPresentNotPerformingNewInstallError) { NonMisconfigurationFailureNotPresentNotPerformingNewInstallError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, kExtensionId2,
InstallStageTracker::FailureReason::NOT_PERFORMING_NEW_INSTALL); InstallStageTracker::FailureReason::NOT_PERFORMING_NEW_INSTALL);
...@@ -1150,9 +1147,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1150,9 +1147,8 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
NonMisconfigurationFailureNotPresentCrxFetchUrlEmptyError) { NonMisconfigurationFailureNotPresentCrxFetchUrlEmptyError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportInfoOnNoUpdatesFailure(kExtensionId2, ""); install_stage_tracker()->ReportInfoOnNoUpdatesFailure(kExtensionId2, "");
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
kExtensionId2, InstallStageTracker::FailureReason::CRX_FETCH_URL_EMPTY); kExtensionId2, InstallStageTracker::FailureReason::CRX_FETCH_URL_EMPTY);
...@@ -1168,9 +1164,8 @@ TEST_F(ForceInstalledMetricsTest, ...@@ -1168,9 +1164,8 @@ TEST_F(ForceInstalledMetricsTest,
TEST_F(ForceInstalledMetricsTest, TEST_F(ForceInstalledMetricsTest,
NonMisconfigurationFailurePresentCrxFetchUrlEmptyError) { NonMisconfigurationFailurePresentCrxFetchUrlEmptyError) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto extension = scoped_refptr<const Extension> ext1 = CreateNewExtension(
ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), extension.get());
install_stage_tracker()->ReportInfoOnNoUpdatesFailure(kExtensionId2, install_stage_tracker()->ReportInfoOnNoUpdatesFailure(kExtensionId2,
"rate limit"); "rate limit");
install_stage_tracker()->ReportFailure( install_stage_tracker()->ReportFailure(
...@@ -1201,7 +1196,8 @@ TEST_F(ForceInstalledMetricsTest, CachedExtensions) { ...@@ -1201,7 +1196,8 @@ TEST_F(ForceInstalledMetricsTest, CachedExtensions) {
kExtensionId1, ExtensionDownloaderDelegate::CacheStatus::CACHE_HIT); kExtensionId1, ExtensionDownloaderDelegate::CacheStatus::CACHE_HIT);
install_stage_tracker()->ReportDownloadingCacheStatus( install_stage_tracker()->ReportDownloadingCacheStatus(
kExtensionId2, ExtensionDownloaderDelegate::CacheStatus::CACHE_MISS); kExtensionId2, ExtensionDownloaderDelegate::CacheStatus::CACHE_MISS);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
registry()->AddEnabled(ext1.get()); registry()->AddEnabled(ext1.get());
EXPECT_TRUE(fake_timer_->IsRunning()); EXPECT_TRUE(fake_timer_->IsRunning());
fake_timer_->Fire(); fake_timer_->Fire();
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/extensions/external_provider_impl.h" #include "chrome/browser/extensions/external_provider_impl.h"
#include "chrome/browser/extensions/forced_extensions/force_installed_tracker.h"
#include "chrome/browser/extensions/forced_extensions/install_stage_tracker.h" #include "chrome/browser/extensions/forced_extensions/install_stage_tracker.h"
#include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_browser_process.h"
#include "components/policy/core/common/policy_service_impl.h" #include "components/policy/core/common/policy_service_impl.h"
...@@ -16,7 +15,6 @@ ...@@ -16,7 +15,6 @@
#include "components/sync_preferences/testing_pref_service_syncable.h" #include "components/sync_preferences/testing_pref_service_syncable.h"
#include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_registry.h"
#include "extensions/browser/pref_names.h" #include "extensions/browser/pref_names.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h" #include "extensions/common/extension_builder.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
...@@ -107,4 +105,23 @@ void ForceInstalledTestBase::SetupEmptyForceList() { ...@@ -107,4 +105,23 @@ void ForceInstalledTestBase::SetupEmptyForceList() {
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
} }
scoped_refptr<const Extension> ForceInstalledTestBase::CreateNewExtension(
const std::string& extension_name,
const std::string& extension_id,
const ForceInstalledTracker::ExtensionStatus& status) {
auto ext = ExtensionBuilder(extension_name).SetID(extension_id).Build();
switch (status) {
case ForceInstalledTracker::ExtensionStatus::PENDING:
case ForceInstalledTracker::ExtensionStatus::FAILED:
break;
case ForceInstalledTracker::ExtensionStatus::LOADED:
force_installed_tracker()->OnExtensionLoaded(profile(), ext.get());
break;
case ForceInstalledTracker::ExtensionStatus::READY:
force_installed_tracker()->OnExtensionLoaded(profile(), ext.get());
force_installed_tracker()->OnExtensionReady(profile(), ext.get());
}
return ext;
}
} // namespace extensions } // namespace extensions
...@@ -5,10 +5,12 @@ ...@@ -5,10 +5,12 @@
#ifndef CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_FORCE_INSTALLED_TEST_BASE_H_ #ifndef CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_FORCE_INSTALLED_TEST_BASE_H_
#define CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_FORCE_INSTALLED_TEST_BASE_H_ #define CHROME_BROWSER_EXTENSIONS_FORCED_EXTENSIONS_FORCE_INSTALLED_TEST_BASE_H_
#include "chrome/browser/extensions/forced_extensions/force_installed_tracker.h"
#include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h" #include "chrome/test/base/testing_profile_manager.h"
#include "components/policy/core/common/mock_configuration_policy_provider.h" #include "components/policy/core/common/mock_configuration_policy_provider.h"
#include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_task_environment.h"
#include "extensions/common/extension.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace sync_preferences { namespace sync_preferences {
...@@ -19,7 +21,6 @@ namespace extensions { ...@@ -19,7 +21,6 @@ namespace extensions {
class ExtensionRegistry; class ExtensionRegistry;
class InstallStageTracker; class InstallStageTracker;
class ForceInstalledTracker;
// This class is extended by tests to provide a setup for tracking installation // This class is extended by tests to provide a setup for tracking installation
// of force extensions. It also provides helper functions for creating and // of force extensions. It also provides helper functions for creating and
...@@ -44,6 +45,14 @@ class ForceInstalledTestBase : public testing::Test { ...@@ -44,6 +45,14 @@ class ForceInstalledTestBase : public testing::Test {
// kInstallForceList preference. // kInstallForceList preference.
void SetupEmptyForceList(); void SetupEmptyForceList();
// Creates a new extension with |extension_id| and |extension_name| and fakes
// its status by calling one of ForceInstalledTracker's
// ExtensionRegistryObserver override.
scoped_refptr<const Extension> CreateNewExtension(
const std::string& extension_name,
const std::string& extension_id,
const ForceInstalledTracker::ExtensionStatus& status);
Profile* profile() const { return profile_; } Profile* profile() const { return profile_; }
sync_preferences::TestingPrefServiceSyncable* prefs() const { return prefs_; } sync_preferences::TestingPrefServiceSyncable* prefs() const { return prefs_; }
......
...@@ -8,11 +8,12 @@ ...@@ -8,11 +8,12 @@
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/extensions/forced_extensions/force_installed_test_base.h" #include "chrome/browser/extensions/forced_extensions/force_installed_test_base.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/extension_builder.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace extensions { namespace extensions {
using ExtensionStatus = ForceInstalledTracker::ExtensionStatus;
class ForceInstalledTrackerTest : public ForceInstalledTestBase, class ForceInstalledTrackerTest : public ForceInstalledTestBase,
public ForceInstalledTracker::Observer { public ForceInstalledTracker::Observer {
public: public:
...@@ -56,8 +57,10 @@ TEST_F(ForceInstalledTrackerTest, BeforeForceInstallPolicy) { ...@@ -56,8 +57,10 @@ TEST_F(ForceInstalledTrackerTest, BeforeForceInstallPolicy) {
// become ready for use. // become ready for use.
TEST_F(ForceInstalledTrackerTest, AllExtensionsInstalled) { TEST_F(ForceInstalledTrackerTest, AllExtensionsInstalled) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::PENDING);
scoped_refptr<const Extension> ext2 = CreateNewExtension(
kExtensionName2, kExtensionId2, ExtensionStatus::PENDING);
EXPECT_FALSE(loaded_called_); EXPECT_FALSE(loaded_called_);
EXPECT_FALSE(ready_called_); EXPECT_FALSE(ready_called_);
EXPECT_FALSE(force_installed_tracker()->IsDoneLoading()); EXPECT_FALSE(force_installed_tracker()->IsDoneLoading());
...@@ -81,8 +84,8 @@ TEST_F(ForceInstalledTrackerTest, AllExtensionsInstalled) { ...@@ -81,8 +84,8 @@ TEST_F(ForceInstalledTrackerTest, AllExtensionsInstalled) {
// all extensions have either successfully loaded or failed. // all extensions have either successfully loaded or failed.
TEST_F(ForceInstalledTrackerTest, ExtensionPendingInstall) { TEST_F(ForceInstalledTrackerTest, ExtensionPendingInstall) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
EXPECT_FALSE(loaded_called_); EXPECT_FALSE(loaded_called_);
EXPECT_FALSE(ready_called_); EXPECT_FALSE(ready_called_);
EXPECT_FALSE(force_installed_tracker()->IsDoneLoading()); EXPECT_FALSE(force_installed_tracker()->IsDoneLoading());
...@@ -100,10 +103,10 @@ TEST_F(ForceInstalledTrackerTest, ObserversOnlyCalledOnce) { ...@@ -100,10 +103,10 @@ TEST_F(ForceInstalledTrackerTest, ObserversOnlyCalledOnce) {
// Start with a non-empty force-list, and install them, which triggers // Start with a non-empty force-list, and install them, which triggers
// observer. // observer.
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
auto ext2 = ExtensionBuilder(kExtensionName2).SetID(kExtensionId2).Build(); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); scoped_refptr<const Extension> ext2 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext2.get()); kExtensionName2, kExtensionId2, ExtensionStatus::LOADED);
EXPECT_TRUE(loaded_called_); EXPECT_TRUE(loaded_called_);
force_installed_tracker()->OnExtensionReady(profile(), ext1.get()); force_installed_tracker()->OnExtensionReady(profile(), ext1.get());
...@@ -119,8 +122,8 @@ TEST_F(ForceInstalledTrackerTest, ObserversOnlyCalledOnce) { ...@@ -119,8 +122,8 @@ TEST_F(ForceInstalledTrackerTest, ObserversOnlyCalledOnce) {
// either successfully loaded or failed. // either successfully loaded or failed.
TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationFailed) { TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationFailed) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionInstallationFailed( force_installed_tracker()->OnExtensionInstallationFailed(
kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID); kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID);
EXPECT_TRUE(loaded_called_); EXPECT_TRUE(loaded_called_);
...@@ -134,22 +137,22 @@ TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationFailed) { ...@@ -134,22 +137,22 @@ TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationFailed) {
TEST_F(ForceInstalledTrackerTest, ExtensionsStatus) { TEST_F(ForceInstalledTrackerTest, ExtensionsStatus) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status, EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status,
ForceInstalledTracker::ExtensionStatus::PENDING); ExtensionStatus::PENDING);
EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId2).status, EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId2).status,
ForceInstalledTracker::ExtensionStatus::PENDING); ExtensionStatus::PENDING);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::LOADED);
force_installed_tracker()->OnExtensionInstallationFailed( force_installed_tracker()->OnExtensionInstallationFailed(
kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID); kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID);
EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status, EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status,
ForceInstalledTracker::ExtensionStatus::LOADED); ExtensionStatus::LOADED);
EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId2).status, EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId2).status,
ForceInstalledTracker::ExtensionStatus::FAILED); ExtensionStatus::FAILED);
force_installed_tracker()->OnExtensionReady(profile(), ext1.get()); force_installed_tracker()->OnExtensionReady(profile(), ext1.get());
EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status, EXPECT_EQ(force_installed_tracker()->extensions().at(kExtensionId1).status,
ForceInstalledTracker::ExtensionStatus::READY); ExtensionStatus::READY);
} }
// This test verifies that resetting the policy before all force installed // This test verifies that resetting the policy before all force installed
...@@ -165,9 +168,8 @@ TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationCancelled) { ...@@ -165,9 +168,8 @@ TEST_F(ForceInstalledTrackerTest, ExtensionsInstallationCancelled) {
// installed extension is either ready for use or failed. // installed extension is either ready for use or failed.
TEST_F(ForceInstalledTrackerTest, AllExtensionsReady) { TEST_F(ForceInstalledTrackerTest, AllExtensionsReady) {
SetupForceList(true /*is_from_store */); SetupForceList(true /*is_from_store */);
auto ext1 = ExtensionBuilder(kExtensionName1).SetID(kExtensionId1).Build(); scoped_refptr<const Extension> ext1 = CreateNewExtension(
force_installed_tracker()->OnExtensionLoaded(profile(), ext1.get()); kExtensionName1, kExtensionId1, ExtensionStatus::READY);
force_installed_tracker()->OnExtensionReady(profile(), ext1.get());
force_installed_tracker()->OnExtensionInstallationFailed( force_installed_tracker()->OnExtensionInstallationFailed(
kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID); kExtensionId2, InstallStageTracker::FailureReason::INVALID_ID);
EXPECT_TRUE(loaded_called_); EXPECT_TRUE(loaded_called_);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment