chromium/chrome/browser/ui/views/frame/browser_frame.h

// Copyright 2012 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_VIEWS_FRAME_BROWSER_FRAME_H_
#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_H_

#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "content/public/browser/keyboard_event_processing_result.h"
#include "ui/base/pointer/touch_ui_controller.h"
#include "ui/base/ui_base_types.h"
#include "ui/views/context_menu_controller.h"
#include "ui/views/widget/widget.h"

#if BUILDFLAG(IS_CHROMEOS)
#include <optional>
#endif

class BrowserNonClientFrameView;
class BrowserRootView;
enum class BrowserThemeChangeType;
class BrowserView;
class NativeBrowserFrame;
class SystemMenuModelBuilder;

namespace input {
struct NativeWebKeyboardEvent;
}

namespace gfx {
class Rect;
}

namespace ui {
class MenuModel;
}

namespace views {
class Label;
class MenuRunner;
class NonClientFrameView;
class View;
}  // namespace views

enum class TabDragKind {};

// This is a virtual interface that allows system specific browser frames.
class BrowserFrame : public views::Widget, public views::ContextMenuController {};

#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_H_