chromium/chrome/browser/ash/crosapi/ash_requires_lacros_browsertestbase.cc

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ash/crosapi/ash_requires_lacros_browsertestbase.h"

#include "base/command_line.h"
#include "base/location.h"
#include "base/one_shot_event.h"
#include "base/test/test_future.h"
#include "chrome/browser/ash/crosapi/browser_util.h"
#include "chrome/browser/ash/crosapi/test_controller_ash.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_features.h"
#include "chromeos/ash/components/standalone_browser/test_util.h"
#include "mojo/public/cpp/bindings/remote.h"

namespace crosapi {

AshRequiresLacrosBrowserTestBase::AshRequiresLacrosBrowserTestBase() = default;
AshRequiresLacrosBrowserTestBase::~AshRequiresLacrosBrowserTestBase() = default;

void AshRequiresLacrosBrowserTestBase::SetUpInProcessBrowserTestFixture() {
  if (!ash_starter_.HasLacrosArgument()) {
    return;
  }
  ASSERT_TRUE(ash_starter_.PrepareEnvironmentForLacros());
}

void AshRequiresLacrosBrowserTestBase::SetUpOnMainThread() {
  if (!ash_starter_.HasLacrosArgument()) {
    return;
  }

  CHECK(!browser_util::IsAshWebBrowserEnabled());
  ash_starter_.StartLacros(this);

  CHECK(crosapi::TestControllerAsh::Get());
  base::test::TestFuture<void> waiter;
  crosapi::TestControllerAsh::Get()
      ->on_standalone_browser_test_controller_bound()
      .Post(FROM_HERE, waiter.GetCallback());
  EXPECT_TRUE(waiter.Wait());

  ASSERT_TRUE(browser_util::IsLacrosEnabled());
}

void AshRequiresLacrosBrowserTestBase::EnableFeaturesInLacros(
    const std::vector<base::test::FeatureRef>& features) {
  ash_starter_.EnableFeaturesInLacros(features);
}

mojom::StandaloneBrowserTestController*
AshRequiresLacrosBrowserTestBase::GetStandaloneBrowserTestController() {
  CHECK(crosapi::TestControllerAsh::Get());
  return crosapi::TestControllerAsh::Get()
      ->GetStandaloneBrowserTestController();
}

Profile* AshRequiresLacrosBrowserTestBase::GetAshProfile() const {
  Profile* profile = ProfileManager::GetActiveUserProfile();
  CHECK(profile);
  return profile;
}
}  // namespace crosapi