// Copyright (c) 2016 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #include "tests/cefclient/browser/window_test_runner_views.h" #include "include/views/cef_browser_view.h" #include "include/views/cef_display.h" #include "include/views/cef_window.h" #include "include/wrapper/cef_helpers.h" #include "tests/cefclient/browser/root_window_views.h" #include "tests/cefclient/browser/views_window.h" #include "tests/shared/browser/geometry_util.h" namespace client::window_test { namespace { CefRefPtr GetWindow(const CefRefPtr& browser) { CEF_REQUIRE_UI_THREAD(); DCHECK(browser->GetHost()->HasView()); CefRefPtr browser_view = CefBrowserView::GetForBrowser(browser); DCHECK(browser_view.get()); CefRefPtr window = browser_view->GetWindow(); DCHECK(window.get()); return window; } void MinimizeImpl(CefRefPtr browser) { if (!CefCurrentlyOn(TID_UI)) { CefPostTask(TID_UI, base::BindOnce(&MinimizeImpl, browser)); return; } GetWindow(browser)->Minimize(); } void MaximizeImpl(CefRefPtr browser) { if (!CefCurrentlyOn(TID_UI)) { CefPostTask(TID_UI, base::BindOnce(&MaximizeImpl, browser)); return; } GetWindow(browser)->Maximize(); } void RestoreImpl(CefRefPtr browser) { if (!CefCurrentlyOn(TID_UI)) { CefPostTask(TID_UI, base::BindOnce(&RestoreImpl, browser)); return; } GetWindow(browser)->Restore(); } void FullscreenImpl(CefRefPtr browser) { if (!CefCurrentlyOn(TID_UI)) { CefPostTask(TID_UI, base::BindOnce(&FullscreenImpl, browser)); return; } auto window = GetWindow(browser); // Results in a call to ViewsWindow::OnWindowFullscreenTransition(). if (window->IsFullscreen()) { window->SetFullscreen(false); } else { window->SetFullscreen(true); } } } // namespace WindowTestRunnerViews::WindowTestRunnerViews() = default; void WindowTestRunnerViews::Minimize(CefRefPtr browser) { MinimizeImpl(browser); } void WindowTestRunnerViews::Maximize(CefRefPtr browser) { MaximizeImpl(browser); } void WindowTestRunnerViews::Restore(CefRefPtr browser) { RestoreImpl(browser); } void WindowTestRunnerViews::Fullscreen(CefRefPtr browser) { FullscreenImpl(browser); } void WindowTestRunnerViews::SetTitleBarHeight( CefRefPtr browser, const std::optional& height) { REQUIRE_MAIN_THREAD(); auto root_window = RootWindow::GetForBrowser(browser->GetIdentifier()); auto root_window_views = static_cast(root_window.get()); root_window_views->SetTitlebarHeight(height); } } // namespace client::window_test