1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// Copyright 2023 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/arc/input_overlay/test/game_controls_test_base.h"
#include "ash/constants/ash_features.h"
#include "ash/game_dashboard/game_dashboard_utils.h"
#include "ash/public/cpp/window_properties.h"
#include "ash/shell.h"
#include "chrome/browser/ash/arc/input_overlay/actions/action.h"
#include "chrome/browser/ash/arc/input_overlay/arc_input_overlay_manager.h"
#include "chrome/browser/ash/arc/input_overlay/display_overlay_controller.h"
#include "chrome/browser/ash/arc/input_overlay/test/test_utils.h"
#include "chrome/browser/ash/arc/input_overlay/util.h"
#include "chrome/test/base/testing_profile.h"
#include "chromeos/ash/experiences/arc/mojom/app.mojom.h"
#include "content/public/test/browser_task_environment.h"
namespace arc::input_overlay {
GameControlsTestBase::GameControlsTestBase()
: ash::AshTestBase(std::unique_ptr<base::test::TaskEnvironment>(
std::make_unique<content::BrowserTaskEnvironment>(
base::test::TaskEnvironment::TimeSource::MOCK_TIME))) {}
GameControlsTestBase::~GameControlsTestBase() = default;
TouchInjector* GameControlsTestBase::GetTouchInjector(aura::Window* window) {
auto it =
arc_test_input_overlay_manager_->input_overlay_enabled_windows_.find(
window);
return it != arc_test_input_overlay_manager_->input_overlay_enabled_windows_
.end()
? it->second.get()
: nullptr;
}
DisplayOverlayController* GameControlsTestBase::GetDisplayOverlayController() {
return arc_test_input_overlay_manager_->display_overlay_controller_.get();
}
void GameControlsTestBase::EnableDisplayMode(DisplayMode mode) {
DCHECK(widget_);
UpdateFlagAndProperty(widget_->GetNativeWindow(),
ash::ArcGameControlsFlag::kEdit,
/*turn_on=*/mode == DisplayMode::kEdit);
}
void GameControlsTestBase::SetUp() {
ash::AshTestBase::SetUp();
profile_ = std::make_unique<TestingProfile>();
arc_app_test_.set_wait_compatibility_mode(true);
arc_app_test_.SetUp(profile_.get());
SimulatedAppInstalled(task_environment(), arc_app_test_, kEnabledPackageName,
/*is_gc_opt_out=*/false,
/*is_game=*/true);
arc_test_input_overlay_manager_ = base::WrapUnique(
new ArcInputOverlayManager(/*BrowserContext=*/nullptr,
/*ArcBridgeService=*/nullptr));
// Create a GIO enabled ARC window in the middle of the primary root window.
ash::Shell::GetPrimaryRootWindow()->SetBounds(gfx::Rect(1000, 800));
widget_ = CreateArcWindowSyncAndWait(
task_environment(), ash::Shell::GetPrimaryRootWindow(),
gfx::Rect(310, 300, 300, 280), kEnabledPackageName);
touch_injector_ = GetTouchInjector(widget_->GetNativeWindow());
controller_ = GetDisplayOverlayController();
}
void GameControlsTestBase::TearDown() {
widget_.reset();
arc_test_input_overlay_manager_->Shutdown();
arc_test_input_overlay_manager_.reset();
arc_app_test_.TearDown();
profile_.reset();
ash::AshTestBase::TearDown();
}
} // namespace arc::input_overlay
|