// 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 UI_VIEWS_WIDGET_ROOT_VIEW_H_ #define UI_VIEWS_WIDGET_ROOT_VIEW_H_ #include <memory> #include <string> #include "base/memory/raw_ptr.h" #include "ui/accessibility/platform/ax_platform_node.h" #include "ui/events/event_processor.h" #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/focus/focus_manager.h" #include "ui/views/focus/focus_search.h" #include "ui/views/view.h" #include "ui/views/view_targeter_delegate.h" namespace views { namespace test { class ViewTargeterTest; class WidgetTest; } // namespace test class RootViewTargeter; class Widget; // This is a views-internal API and should not be used externally. // Widget exposes this object as a View*. namespace internal { class AnnounceTextView; class PreEventDispatchHandler; //////////////////////////////////////////////////////////////////////////////// // RootView class // // The RootView is the root of a View hierarchy. A RootView is attached to a // Widget. The Widget is responsible for receiving events from the host // environment, converting them to views-compatible events and then forwarding // them to the RootView for propagation into the View hierarchy. // // A RootView can have only one child, called its "Contents View" which is // sized to fill the bounds of the RootView (and hence the client area of the // Widget). Call SetContentsView() after the associated Widget has been // initialized to attach the contents view to the RootView. // TODO(beng): Enforce no other callers to AddChildView/tree functions by // overriding those methods as private here. // TODO(beng): Clean up API further, make Widget a friend. // TODO(sky): We don't really want to export this class. // class VIEWS_EXPORT RootView : public View, public ViewTargeterDelegate, public FocusTraversable, public ui::EventProcessor { … }; } // namespace internal } // namespace views #endif // UI_VIEWS_WIDGET_ROOT_VIEW_H_