| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/test/bind.h" |
| #include "chrome/browser/ash/crosapi/crosapi_ash.h" |
| #include "chrome/browser/ash/crosapi/crosapi_manager.h" |
| #include "chrome/browser/ash/magic_boost/magic_boost_controller_ash.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chromeos/crosapi/mojom/magic_boost.mojom.h" |
| #include "content/public/test/browser_test.h" |
| #include "mojo/public/cpp/bindings/receiver.h" |
| #include "mojo/public/cpp/bindings/remote.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/display/screen.h" |
| |
| namespace crosapi { |
| |
| namespace { |
| |
| using OptInFeatures = crosapi::mojom::MagicBoostController::OptInFeatures; |
| |
| // Calls all crosapi::mojom::MagicBoostControlle methods over mojo. |
| void CallMagicBoostControllerMethods( |
| mojo::Remote<mojom::MagicBoostController>& remote) { |
| auto display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| remote->ShowDisclaimerUi( |
| /*display_id=*/display_id, |
| /*action=*/ |
| crosapi::mojom::MagicBoostController::TransitionAction::kDoNothing, |
| /*opt_in_features=*/OptInFeatures::kOrcaAndHmr); |
| remote->ShowDisclaimerUi( |
| /*display_id=*/display_id, |
| /*action=*/ |
| crosapi::mojom::MagicBoostController::TransitionAction::kShowEditorPanel, |
| /*opt_in_features=*/OptInFeatures::kOrcaAndHmr); |
| } |
| |
| // Calls all crosapi::mojom::MagicBoostController methods directly. |
| void CallMagicBoostControllerMethods( |
| ash::MagicBoostControllerAsh* magic_boost_controller) { |
| auto display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| magic_boost_controller->ShowDisclaimerUi( |
| /*display_id=*/display_id, |
| /*action=*/ |
| crosapi::mojom::MagicBoostController::TransitionAction::kDoNothing, |
| /*opt_in_features=*/OptInFeatures::kOrcaAndHmr); |
| magic_boost_controller->ShowDisclaimerUi( |
| /*display_id=*/display_id, |
| /*action=*/ |
| crosapi::mojom::MagicBoostController::TransitionAction::kShowEditorPanel, |
| /*opt_in_features=*/OptInFeatures::kOrcaAndHmr); |
| } |
| |
| using MagicBoostAshBrowserTest = InProcessBrowserTest; |
| |
| // Make sure `MagicBoostController` api calls don't crash. |
| IN_PROC_BROWSER_TEST_F(MagicBoostAshBrowserTest, Basics) { |
| ASSERT_TRUE(CrosapiManager::IsInitialized()); |
| auto* magic_boost_controller = |
| CrosapiManager::Get()->crosapi_ash()->magic_boost_controller_ash(); |
| { |
| mojo::Remote<mojom::MagicBoostController> remote1; |
| magic_boost_controller->BindReceiver(remote1.BindNewPipeAndPassReceiver()); |
| |
| CallMagicBoostControllerMethods(remote1); |
| CallMagicBoostControllerMethods(magic_boost_controller); |
| } |
| |
| // Disconnect old clients and try again to ensure manager's API doesn't crash |
| // after any client disconnects. |
| mojo::Remote<mojom::MagicBoostController> remote2; |
| magic_boost_controller->BindReceiver(remote2.BindNewPipeAndPassReceiver()); |
| CallMagicBoostControllerMethods(remote2); |
| CallMagicBoostControllerMethods(magic_boost_controller); |
| |
| // TODO(b/341832244): Test that widget is shown after `ShowDisclaimerUi` is |
| // called. |
| } |
| |
| } // namespace |
| |
| } // namespace crosapi |