#include "chrome/browser/extensions/update_install_gate.h"
#include <memory>
#include "base/command_line.h"
#include "base/functional/bind.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "base/run_loop.h"
#include "base/values.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/test_extension_system.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "content/public/test/browser_task_environment.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_renderer_host.h"
#include "extensions/browser/event_router.h"
#include "extensions/browser/event_router_factory.h"
#include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/extension_builder.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "testing/gtest/include/gtest/gtest.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ash/login/users/fake_chrome_user_manager.h"
#include "components/user_manager/scoped_user_manager.h"
#endif
namespace extensions {
namespace {
const char kAppId[] = …;
const char kPersistentExtensionId[] = …;
const char kNonPersistentExtensionId[] = …;
std::unique_ptr<KeyedService> BuildEventRouter(
content::BrowserContext* profile) { … }
scoped_refptr<const Extension> CreateApp(const std::string& extension_id,
const std::string& version) { … }
scoped_refptr<const Extension> CreateExtension(const std::string& extension_id,
const std::string& version,
bool persistent) { … }
ExtensionHost* CreateHost(Profile* profile, const Extension* app) { … }
}
class UpdateInstallGateTest : public testing::Test { … };
TEST_F(UpdateInstallGateTest, InstallOnServiceNotReady) { … }
TEST_F(UpdateInstallGateTest, InstallOnFirstInstall) { … }
TEST_F(UpdateInstallGateTest, InstallOnInstallImmediately) { … }
TEST_F(UpdateInstallGateTest, DelayInstallWhenInUse) { … }
}