#include <memory>
#include <optional>
#include "base/check_deref.h"
#include "base/command_line.h"
#include "base/json/json_reader.h"
#include "base/run_loop.h"
#include "base/test/bind.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/task_environment.h"
#include "base/values.h"
#include "chrome/browser/browser_features.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/content_verifier_test_utils.h"
#include "chrome/browser/extensions/extension_management_test_util.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/updater/chrome_update_client_config.h"
#include "chrome/browser/extensions/updater/extension_update_client_base_browsertest.h"
#include "chrome/browser/extensions/updater/extension_updater.h"
#include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_switches.h"
#include "components/policy/core/browser/browser_policy_connector.h"
#include "components/policy/core/common/mock_configuration_policy_provider.h"
#include "components/update_client/net/url_loader_post_interceptor.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "extensions/browser/content_verifier/content_verifier.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/external_install_info.h"
#include "extensions/browser/mock_external_provider.h"
#include "extensions/browser/test_extension_registry_observer.h"
#include "extensions/browser/updater/extension_downloader.h"
#include "extensions/browser/updater/manifest_fetch_data.h"
#include "extensions/common/extension_updater_uma.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/mojom/manifest.mojom-shared.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chromeos/ash/components/install_attributes/stub_install_attributes.h"
#endif
ManifestLocation;
namespace extensions {
namespace {
const char kExtensionId[] = …;
UpdateClientEvents;
}
class UpdateServiceTest : public ExtensionUpdateClientBaseTest { … };
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, NoUpdate) { … }
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, UpdateCheckError) { … }
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, TwoUpdateCheckErrors) { … }
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, SuccessfulUpdate) { … }
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, PolicyCorrupted) { … }
IN_PROC_BROWSER_TEST_F(UpdateServiceTest, UninstallExtensionWhileUpdating) { … }
class PolicyUpdateServiceTest : public ExtensionUpdateClientBaseTest,
public testing::WithParamInterface<bool> { … };
IN_PROC_BROWSER_TEST_F(PolicyUpdateServiceTest, FailedUpdateRetries) { … }
IN_PROC_BROWSER_TEST_F(PolicyUpdateServiceTest, Backoff) { … }
#if !(defined(ADDRESS_SANITIZER) && BUILDFLAG(IS_CHROMEOS))
IN_PROC_BROWSER_TEST_F(PolicyUpdateServiceTest, PRE_PolicyCorruptedOnStartup) { … }
IN_PROC_BROWSER_TEST_F(PolicyUpdateServiceTest, PolicyCorruptedOnStartup) { … }
#endif
}