| // Copyright 2025 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_UI_BROWSER_WINDOW_PUBLIC_CREATE_BROWSER_WINDOW_H_ |
| #define CHROME_BROWSER_UI_BROWSER_WINDOW_PUBLIC_CREATE_BROWSER_WINDOW_H_ |
| |
| #include <string> |
| |
| #include "base/functional/callback.h" |
| #include "base/memory/raw_ref.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/ui/browser_window/public/browser_window_interface.h" |
| #include "ui/base/mojom/window_show_state.mojom.h" |
| #include "ui/gfx/geometry/rect.h" |
| |
| // Parameters used when creating a new browser window. |
| struct BrowserWindowCreateParams { |
| BrowserWindowCreateParams(BrowserWindowInterface::Type type, |
| Profile& profile, |
| bool from_user_gesture); |
| BrowserWindowCreateParams(Profile& profile, bool from_user_gesture); |
| BrowserWindowCreateParams(BrowserWindowCreateParams&&); |
| BrowserWindowCreateParams(const BrowserWindowCreateParams&) = delete; |
| BrowserWindowCreateParams& operator=(const BrowserWindowCreateParams&) = |
| delete; |
| BrowserWindowCreateParams& operator=(BrowserWindowCreateParams&&); |
| ~BrowserWindowCreateParams(); |
| |
| // The type of browser window to create. |
| // See BrowserWindowInterface::Type for more details. |
| BrowserWindowInterface::Type type = BrowserWindowInterface::TYPE_NORMAL; |
| |
| // Whether the browser was created by a user gesture. |
| bool from_user_gesture = false; |
| |
| // The profile to be associated with the browser window. |
| raw_ref<Profile> profile; |
| |
| // The initial bounds of the window. If unsupplied, default bounds will be |
| // used. |
| gfx::Rect initial_bounds; |
| |
| // Whether the browser window is displaying only a trusted source, in which |
| // case some security UI may not be shown. |
| bool is_trusted_source = false; |
| |
| // The app name associated with the browser window. |
| std::string app_name; |
| |
| // The initial state of the browser window. |
| ui::mojom::WindowShowState initial_show_state = |
| ui::mojom::WindowShowState::kDefault; |
| }; |
| |
| // Creates a new browser window according to the given `create_params`. |
| // |
| // This may fail, in which case null is returned. |
| // |
| // Otherwise, a `BrowserWindowInterface` will be synchronously returned. |
| // However, due to OS differences, we can't guarantee the browser window is |
| // fully initialized. If the browser window isn't fully initialized, calls to |
| // `BrowserWindowInterface` APIs that will change the window will be queued |
| // first, then executed once the OS has fully initialized the window. We |
| // recommend all code calling this function to anticipate this scenario. |
| // |
| // If you need to ensure the browser window is fully initialized, please use the |
| // asynchronous version of this function. |
| BrowserWindowInterface* CreateBrowserWindow( |
| BrowserWindowCreateParams create_params); |
| |
| // The asynchronous version of `CreateBrowserWindow`. The given `callback` will |
| // always be invoked asynchronously with the newly created |
| // `BrowserWindowInterface`. |
| // |
| // On all platforms, if the `BrowserWindowInterface` passed to the `callback` is |
| // not null, the `BrowserWindowInterface` has been fully initialized. |
| void CreateBrowserWindow( |
| BrowserWindowCreateParams create_params, |
| base::OnceCallback<void(BrowserWindowInterface*)> callback); |
| |
| #endif // CHROME_BROWSER_UI_BROWSER_WINDOW_PUBLIC_CREATE_BROWSER_WINDOW_H_ |