Automated Commit: Committing new LKGM version 7479.0.0 for chromeos.
[chromium-blink-merge.git] / ui / views / cocoa / bridged_native_widget_owner.h
blob9869ed5a93869301df03c9b5b22d3ee2d2530dda
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_
8 namespace gfx {
9 class Vector2d;
12 @class NSWindow;
14 namespace views {
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 {
23 public:
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;
37 protected:
38 // Instances of this class may be self-deleting.
39 virtual ~BridgedNativeWidgetOwner() {}
42 } // namespace views
44 #endif // UI_VIEWS_COCOA_BRIDGED_NATIVE_WIDGET_OWNER_H_