#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include <stddef.h>
#include <map>
#include <memory>
#include <string>
#include <utility>
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/raw_ref.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/extensions/chrome_test_extension_loader.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"
#include "chrome/browser/extensions/extension_sync_data.h"
#include "chrome/browser/extensions/extension_sync_service.h"
#include "chrome/browser/extensions/extension_util.h"
#include "chrome/browser/extensions/test_blocklist.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
#include "chrome/browser/profiles/profile_key.h"
#include "chrome/browser/themes/test/theme_service_changed_waiter.h"
#include "chrome/browser/themes/theme_service.h"
#include "chrome/browser/themes/theme_service_factory.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/extensions/extension_test_util.h"
#include "chrome/common/extensions/sync_helper.h"
#include "chrome/test/base/testing_profile.h"
#include "components/crx_file/id_util.h"
#include "components/sync/model/sync_data.h"
#include "components/sync/protocol/app_specifics.pb.h"
#include "components/sync/protocol/entity_specifics.pb.h"
#include "components/sync/protocol/extension_specifics.pb.h"
#include "components/sync/test/fake_sync_change_processor.h"
#include "components/sync/test/sync_change_processor_wrapper_for_test.h"
#include "components/variations/variations_associated_data.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h"
#include "extensions/browser/app_sorting.h"
#include "extensions/browser/disable_reason.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h"
#include "extensions/browser/management_policy.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/manifest_url_handlers.h"
#include "extensions/common/mojom/manifest.mojom-shared.h"
#include "extensions/common/permissions/permission_set.h"
AppSorting;
Extension;
ExtensionPrefs;
ExtensionRegistry;
ExtensionSyncData;
ExtensionSystem;
Manifest;
PermissionSet;
ManifestLocation;
SyncChange;
SyncChangeList;
Mock;
namespace {
const char good0[] = …;
const char good2[] = …;
const char good_crx[] = …;
const char page_action[] = …;
const char theme2_crx[] = …;
ExtensionSyncData GetDisableSyncData(const Extension& extension,
int disable_reasons) { … }
ExtensionSyncData GetEnableSyncData(const Extension& extension) { … }
SyncChangeList MakeSyncChangeList(const std::string& id,
const sync_pb::EntitySpecifics& specifics,
SyncChange::SyncChangeType change_type) { … }
class StatefulChangeProcessor : public syncer::FakeSyncChangeProcessor { … };
}
class ExtensionServiceSyncTest
: public extensions::ExtensionServiceTestWithInstall { … };
TEST_F(ExtensionServiceSyncTest, DeferredSyncStartupPreInstalledComponent) { … }
TEST_F(ExtensionServiceSyncTest, DeferredSyncStartupPreInstalledNormal) { … }
TEST_F(ExtensionServiceSyncTest, DeferredSyncStartupOnInstall) { … }
TEST_F(ExtensionServiceSyncTest, DisableExtensionFromSync) { … }
TEST_F(ExtensionServiceSyncTest, ReenableDisabledExtensionFromSync) { … }
TEST_F(ExtensionServiceSyncTest,
DefaultInstalledExtensionsAreNotReenabledOrDisabledBySync) { … }
TEST_F(ExtensionServiceSyncTest, IgnoreSyncChangesWhenLocalStateIsMoreRecent) { … }
TEST_F(ExtensionServiceSyncTest, DontSelfNotify) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncData) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncDataDisableReasons) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncDataTerminated) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncDataFilter) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncExtensionDataUserSettings) { … }
TEST_F(ExtensionServiceSyncTest, SyncForUninstalledExternalExtension) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncAppDataUserSettings) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncAppDataUserSettingsOnExtensionMoved) { … }
TEST_F(ExtensionServiceSyncTest, GetSyncDataList) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataUninstall) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataWrongType) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataSettings) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNewExtension) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataTerminatedExtension) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataVersionCheck) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNotInstalled) { … }
TEST_F(ExtensionServiceSyncTest, ProcessSyncDataEnableDisable) { … }
class ExtensionServiceSyncCustomGalleryTest : public ExtensionServiceSyncTest { … };
TEST_F(ExtensionServiceSyncCustomGalleryTest, ProcessSyncDataDeferredEnable) { … }
TEST_F(ExtensionServiceSyncCustomGalleryTest,
ProcessSyncDataPermissionApproval) { … }
TEST_F(ExtensionServiceSyncTest, DontSyncThemes) { … }
TEST_F(ExtensionServiceSyncTest, AppToExtension) { … }
class BlocklistedExtensionSyncServiceTest : public ExtensionServiceSyncTest { … };
TEST_F(BlocklistedExtensionSyncServiceTest, SyncBlocklistedExtension) { … }
TEST_F(BlocklistedExtensionSyncServiceTest, SyncAllowedGreylistedExtension) { … }
TEST_F(BlocklistedExtensionSyncServiceTest, InstallBlocklistedExtension) { … }