Index: chrome/browser/extensions/extension_service_sync_unittest.cc |
diff --git a/chrome/browser/extensions/extension_service_sync_unittest.cc b/chrome/browser/extensions/extension_service_sync_unittest.cc |
index bad69abdfb99bab7ce8d1f9ea55cb1f754f93395..b347dc073772ae27e348c7a52a2412418853266f 100644 |
--- a/chrome/browser/extensions/extension_service_sync_unittest.cc |
+++ b/chrome/browser/extensions/extension_service_sync_unittest.cc |
@@ -18,6 +18,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/metrics/field_trial.h" |
#include "base/test/mock_entropy_provider.h" |
+#include "chrome/browser/extensions/api/webstore_private/webstore_private_api.h" |
#include "chrome/browser/extensions/component_loader.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_service_test_with_install.h" |
@@ -33,6 +34,7 @@ |
#include "components/browser_sync/browser/profile_sync_service.h" |
#include "components/crx_file/id_util.h" |
#include "components/variations/variations_associated_data.h" |
+#include "extensions/browser/api_test_utils.h" |
#include "extensions/browser/app_sorting.h" |
#include "extensions/browser/extension_prefs.h" |
#include "extensions/browser/extension_registry.h" |
@@ -61,6 +63,7 @@ |
#include "chrome/common/pref_names.h" |
#endif |
+using extensions::api_test_utils::RunFunctionAndReturnSingleResult; |
using extensions::AppSorting; |
using extensions::Extension; |
using extensions::ExtensionPrefs; |
@@ -68,6 +71,7 @@ using extensions::ExtensionSyncData; |
using extensions::ExtensionSystem; |
using extensions::Manifest; |
using extensions::PermissionSet; |
+using extensions::WebstorePrivateIsPendingCustodianApprovalFunction; |
using syncer::SyncChange; |
using syncer::SyncChangeList; |
using testing::Mock; |
@@ -1592,6 +1596,18 @@ class ExtensionServiceTestSupervised : public ExtensionServiceSyncTest, |
base::FeatureList::SetInstance(std::move(feature_list)); |
} |
+ bool IsPendingCustodianApproval(const std::string& extension_id) { |
+ auto function = make_scoped_refptr( |
+ new WebstorePrivateIsPendingCustodianApprovalFunction()); |
+ |
+ std::unique_ptr<base::Value> result(RunFunctionAndReturnSingleResult( |
+ function.get(), "[\"" + extension_id + "\"]", browser_context())); |
+ |
+ bool copy_bool_result = false; |
+ EXPECT_TRUE(result->GetAsBoolean(©_bool_result)); |
+ return copy_bool_result; |
+ } |
+ |
void InitServices(bool profile_is_supervised) { |
ExtensionServiceInitParams params = CreateDefaultInitParams(); |
params.profile_is_supervised = profile_is_supervised; |
@@ -1770,6 +1786,7 @@ TEST_F(ExtensionServiceTestSupervised, InstallOnlyAllowedByCustodian) { |
EXPECT_FALSE(extensions[0]); |
ASSERT_TRUE(extensions[1]); |
EXPECT_TRUE(registry()->enabled_extensions().Contains(extensions[1]->id())); |
+ EXPECT_FALSE(IsPendingCustodianApproval(extensions[1]->id())); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -1864,7 +1881,9 @@ TEST_F(ExtensionServiceTestSupervised, |
ASSERT_TRUE(extensions[0]); |
ASSERT_TRUE(extensions[1]); |
EXPECT_TRUE(registry()->disabled_extensions().Contains(extensions[0]->id())); |
+ EXPECT_TRUE(IsPendingCustodianApproval(extensions[0]->id())); |
EXPECT_TRUE(registry()->enabled_extensions().Contains(extensions[1]->id())); |
+ EXPECT_FALSE(IsPendingCustodianApproval(extensions[1]->id())); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -1895,6 +1914,7 @@ TEST_F(ExtensionServiceTestSupervised, |
// The extension should not be enabled anymore. |
CheckDisabledForCustodianApproval(id); |
+ EXPECT_TRUE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -1953,6 +1973,7 @@ TEST_F(ExtensionServiceTestSupervised, ExtensionApprovalBeforeInstallation) { |
// Make sure it's enabled. |
EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, UpdateWithoutPermissionIncrease) { |
@@ -1970,6 +1991,7 @@ TEST_F(ExtensionServiceTestSupervised, UpdateWithoutPermissionIncrease) { |
ASSERT_TRUE(extension); |
// The version should have changed. |
EXPECT_EQ(*extension->version(), base::Version(version2)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, UpdateWithPermissionIncreaseNoApproval) { |
@@ -1991,6 +2013,7 @@ TEST_F(ExtensionServiceTestSupervised, UpdateWithPermissionIncreaseNoApproval) { |
RequestId(id, version2), testing::_)) |
.Times(0); |
UpdatePermissionsTestExtension(id, version2, DISABLED); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2013,6 +2036,7 @@ TEST_F(ExtensionServiceTestSupervised, |
RequestId(id, version2), testing::_)); |
UpdatePermissionsTestExtension(id, version2, DISABLED); |
Mock::VerifyAndClearExpectations(creator); |
+ EXPECT_TRUE(IsPendingCustodianApproval(id)); |
// Simulate a custodian approval for re-enabling the extension coming in |
// through Sync, but set the old version. This can happen when there already |
@@ -2041,6 +2065,7 @@ TEST_F(ExtensionServiceTestSupervised, |
EXPECT_FALSE(extension_sync_service()->HasPendingReenable( |
id, base::Version(version2))); |
Mock::VerifyAndClearExpectations(creator); |
+ EXPECT_TRUE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2061,6 +2086,7 @@ TEST_F(ExtensionServiceTestSupervised, |
RequestId(id, version2), testing::_)); |
UpdatePermissionsTestExtension(id, version2, DISABLED); |
Mock::VerifyAndClearExpectations(creator); |
+ EXPECT_TRUE(IsPendingCustodianApproval(id)); |
// Simulate a custodian approval for re-enabling the extension coming in |
// through Sync. |
@@ -2078,6 +2104,7 @@ TEST_F(ExtensionServiceTestSupervised, |
extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); |
// The extension should have gotten re-enabled. |
EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2151,12 +2178,14 @@ TEST_F(ExtensionServiceTestSupervised, SupervisedUserInitiatedInstalls) { |
ASSERT_EQ(extension->id(), good_crx); |
EXPECT_TRUE(registry()->disabled_extensions().Contains(good_crx)); |
Mock::VerifyAndClearExpectations(creator); |
+ EXPECT_TRUE(IsPendingCustodianApproval(extension->id())); |
SimulateCustodianApprovalChangeViaSync(good_crx, version, |
SyncChange::ACTION_ADD); |
// The extension should be enabled now. |
EXPECT_TRUE(registry()->enabled_extensions().Contains(good_crx)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(extension->id())); |
// Simulate approval removal coming via Sync. |
SimulateCustodianApprovalChangeViaSync(good_crx, version, |
@@ -2164,6 +2193,7 @@ TEST_F(ExtensionServiceTestSupervised, SupervisedUserInitiatedInstalls) { |
// The extension should be disabled now. |
EXPECT_TRUE(registry()->disabled_extensions().Contains(good_crx)); |
+ EXPECT_TRUE(IsPendingCustodianApproval(extension->id())); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2202,6 +2232,7 @@ TEST_F(ExtensionServiceTestSupervised, |
approved_extensions->GetStringWithoutPathExpansion(id, &approved_version); |
EXPECT_EQ(base::Version(approved_version), *extension->version()); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2240,12 +2271,14 @@ TEST_F(ExtensionServiceTestSupervised, |
EXPECT_TRUE(ExtensionPrefs::Get(profile())->HasDisableReason( |
id, Extension::DISABLE_CUSTODIAN_APPROVAL_REQUIRED)); |
+ EXPECT_TRUE(IsPendingCustodianApproval(id)); |
// Approve the latest version |
SimulateCustodianApprovalChangeViaSync(id, version3, |
SyncChange::ACTION_UPDATE); |
// The extension should be enabled again. |
EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceTestSupervised, |
@@ -2275,6 +2308,7 @@ TEST_F(ExtensionServiceTestSupervised, |
UpdatePermissionsTestExtension(id, version2, ENABLED); |
// The extension should be enabled again. |
EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); |
+ EXPECT_FALSE(IsPendingCustodianApproval(id)); |
} |
TEST_F(ExtensionServiceSyncTest, SyncUninstallByCustodianSkipsPolicy) { |