1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_VIEWS_COCOA_BRIDGED_NATIVE_WIDGET_OWNER_H_
6 #define UI_VIEWS_COCOA_BRIDGED_NATIVE_WIDGET_OWNER_H_
16 class BridgedNativeWidget
;
18 // An abstract interface wrapping an NSWindow that ties the lifetime of one or
19 // more child BridgedNativeWidgets to the lifetime of that NSWindow. This is not
20 // simply an NSWindow, because the child window API provided by NSWindow
21 // requires child windows to always be visible.
22 class BridgedNativeWidgetOwner
{
24 // The NSWindow parent.
25 virtual NSWindow
* GetNSWindow() = 0;
27 // The offset in screen pixels for positioning child windows owned by |this|.
28 virtual gfx::Vector2d
GetChildWindowOffset() const = 0;
30 // Return false if |this| is hidden, or has a hidden ancestor.
31 virtual bool IsVisibleParent() const = 0;
33 // Removes a child window. Note |this| may be deleted after calling, so the
34 // caller should immediately null out the pointer used to make the call.
35 virtual void RemoveChildWindow(BridgedNativeWidget
* child
) = 0;
38 // Instances of this class may be self-deleting.
39 virtual ~BridgedNativeWidgetOwner() {}
44 #endif // UI_VIEWS_COCOA_BRIDGED_NATIVE_WIDGET_OWNER_H_