Index: ui/aura/client/window_tree_client.h |
diff --git a/ui/aura/client/window_tree_client.h b/ui/aura/client/window_tree_client.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..59cb1328ece00bdaf8288e93916afb95ee1e6671 |
--- /dev/null |
+++ b/ui/aura/client/window_tree_client.h |
@@ -0,0 +1,56 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_AURA_CLIENT_WINDOW_TREE_CLIENT_H_ |
+#define UI_AURA_CLIENT_WINDOW_TREE_CLIENT_H_ |
+ |
+#include "ui/aura/aura_export.h" |
+ |
+namespace gfx { |
+class Rect; |
+} |
+ |
+namespace aura { |
+class Window; |
+namespace client { |
+ |
+// Implementations of this object are used to help locate a default parent for |
+// NULL-parented Windows. |
+class AURA_EXPORT WindowTreeClient { |
+ public: |
+ virtual ~WindowTreeClient() {} |
+ |
+ // Called by the Window when it looks for a default parent. Returns the |
+ // window that |window| should be added to instead. |context| provides a |
+ // Window (generally a RootWindow) that can be used to determine which |
+ // desktop type the default parent should be chosen from. NOTE: this may |
+ // have side effects. It should only be used when |window| is going to be |
+ // immediately added. |
+ // |
+ // TODO(erg): Remove |context|, and maybe after oshima's patch lands, |
+ // |bounds|. |
+ virtual Window* GetDefaultParent( |
+ Window* context, |
+ Window* window, |
+ const gfx::Rect& bounds) = 0; |
+}; |
+ |
+// Set/Get a window tree client for the RootWindow containing |window|. |window| |
+// must not be NULL. |
+AURA_EXPORT void SetWindowTreeClient(Window* window, |
+ WindowTreeClient* window_tree_client); |
+WindowTreeClient* GetWindowTreeClient(Window* window); |
+ |
+// Adds |window| to an appropriate parent by consulting an implementation of |
+// WindowTreeClient attached at the root Window containing |context|. The final |
+// location may be a window hierarchy other than the one supplied via |
+// |context|, which must not be NULL. |screen_bounds| may be empty. |
+AURA_EXPORT void ParentWindowWithContext(Window* window, |
+ Window* context, |
+ const gfx::Rect& screen_bounds); |
+ |
+} // namespace client |
+} // namespace aura |
+ |
+#endif // UI_AURA_CLIENT_WINDOW_TREE_CLIENT_H_ |