Index: components/mus/public/cpp/lib/window.cc |
diff --git a/components/mus/public/cpp/lib/window.cc b/components/mus/public/cpp/lib/window.cc |
index e754aa67bbce79f224e031c9f7ae1446ff3c4759..e117fe651ffadf145f975a345fbc60c41f5e779b 100644 |
--- a/components/mus/public/cpp/lib/window.cc |
+++ b/components/mus/public/cpp/lib/window.cc |
@@ -14,12 +14,12 @@ |
#include "base/macros.h" |
#include "components/mus/common/transient_window_utils.h" |
#include "components/mus/public/cpp/lib/window_private.h" |
-#include "components/mus/public/cpp/lib/window_tree_client_impl.h" |
#include "components/mus/public/cpp/property_type_converters.h" |
#include "components/mus/public/cpp/window_observer.h" |
#include "components/mus/public/cpp/window_property.h" |
#include "components/mus/public/cpp/window_surface.h" |
#include "components/mus/public/cpp/window_tracker.h" |
+#include "components/mus/public/cpp/window_tree_client.h" |
#include "components/mus/public/interfaces/window_manager.mojom.h" |
#include "ui/display/display.h" |
#include "ui/gfx/geometry/rect.h" |
@@ -147,19 +147,18 @@ class ScopedSetBoundsNotifier { |
DISALLOW_COPY_AND_ASSIGN(ScopedSetBoundsNotifier); |
}; |
-// Some operations are only permitted in the connection that created the window. |
-bool OwnsWindow(WindowTreeConnection* connection, Window* window) { |
- return !connection || |
- static_cast<WindowTreeClientImpl*>(connection)->OwnsWindow(window); |
+// Some operations are only permitted in the client that created the window. |
+bool OwnsWindow(WindowTreeClient* client, Window* window) { |
+ return !client || client->OwnsWindow(window); |
} |
-bool IsConnectionRoot(Window* window) { |
- return window->connection() && |
- window->connection()->GetRoots().count(window) > 0; |
+bool IsClientRoot(Window* window) { |
+ return window->window_tree() && |
+ window->window_tree()->GetRoots().count(window) > 0; |
} |
bool OwnsWindowOrIsRoot(Window* window) { |
- return OwnsWindow(window->connection(), window) || IsConnectionRoot(window); |
+ return OwnsWindow(window->window_tree(), window) || IsClientRoot(window); |
} |
void EmptyEmbedCallback(bool result) {} |
@@ -173,11 +172,11 @@ void Window::Destroy() { |
if (!OwnsWindowOrIsRoot(this)) |
return; |
- if (connection_) |
- tree_client()->DestroyWindow(this); |
+ if (client_) |
+ client_->DestroyWindow(this); |
while (!children_.empty()) { |
Window* child = children_.front(); |
- if (!OwnsWindow(connection_, child)) { |
+ if (!OwnsWindow(client_, child)) { |
WindowPrivate(child).ClearParent(); |
children_.erase(children_.begin()); |
} else { |
@@ -194,8 +193,8 @@ void Window::SetBounds(const gfx::Rect& bounds) { |
return; |
if (bounds_ == bounds) |
return; |
- if (connection_) |
- tree_client()->SetBounds(this, bounds_, bounds); |
+ if (client_) |
+ client_->SetBounds(this, bounds_, bounds); |
LocalSetBounds(bounds_, bounds); |
} |
@@ -212,9 +211,9 @@ void Window::SetClientArea( |
if (!OwnsWindowOrIsRoot(this)) |
return; |
- if (connection_) |
- tree_client()->SetClientArea(server_id_, client_area, |
- additional_client_areas); |
+ if (client_) |
+ client_->SetClientArea(server_id_, client_area, |
+ additional_client_areas); |
LocalSetClientArea(client_area, additional_client_areas); |
} |
@@ -225,8 +224,8 @@ void Window::SetHitTestMask(const gfx::Rect& mask) { |
if (hit_test_mask_ && *hit_test_mask_ == mask) |
return; |
- if (connection_) |
- tree_client()->SetHitTestMask(server_id_, mask); |
+ if (client_) |
+ client_->SetHitTestMask(server_id_, mask); |
hit_test_mask_.reset(new gfx::Rect(mask)); |
} |
@@ -237,8 +236,8 @@ void Window::ClearHitTestMask() { |
if (!hit_test_mask_) |
return; |
- if (connection_) |
- tree_client()->ClearHitTestMask(server_id_); |
+ if (client_) |
+ client_->ClearHitTestMask(server_id_); |
hit_test_mask_.reset(); |
} |
@@ -246,14 +245,14 @@ void Window::SetVisible(bool value) { |
if (visible_ == value) |
return; |
- if (connection_) |
- tree_client()->SetVisible(this, value); |
+ if (client_) |
+ client_->SetVisible(this, value); |
LocalSetVisible(value); |
} |
void Window::SetOpacity(float opacity) { |
- if (connection_) |
- tree_client()->SetOpacity(this, opacity); |
+ if (client_) |
+ client_->SetOpacity(this, opacity); |
LocalSetOpacity(opacity); |
} |
@@ -261,8 +260,8 @@ void Window::SetPredefinedCursor(mus::mojom::Cursor cursor_id) { |
if (cursor_id_ == cursor_id) |
return; |
- if (connection_) |
- tree_client()->SetPredefinedCursor(server_id_, cursor_id); |
+ if (client_) |
+ client_->SetPredefinedCursor(server_id_, cursor_id); |
LocalSetPredefinedCursor(cursor_id); |
} |
@@ -283,7 +282,7 @@ std::unique_ptr<WindowSurface> Window::RequestSurface(mojom::SurfaceType type) { |
void Window::AttachSurface( |
mojom::SurfaceType type, |
std::unique_ptr<WindowSurfaceBinding> surface_binding) { |
- tree_client()->AttachSurface( |
+ window_tree()->AttachSurface( |
server_id_, type, std::move(surface_binding->surface_request_), |
mojo::MakeProxy(std::move(surface_binding->surface_client_))); |
} |
@@ -312,33 +311,33 @@ const Window* Window::GetRoot() const { |
} |
void Window::AddChild(Window* child) { |
- // TODO(beng): not necessarily valid to all connections, but possibly to the |
+ // TODO(beng): not necessarily valid to all clients, but possibly to the |
// embeddee in an embedder-embeddee relationship. |
- if (connection_) |
- CHECK_EQ(child->connection(), connection_); |
+ if (client_) |
+ CHECK_EQ(child->client_, client_); |
// Roots can not be added as children of other windows. |
- if (tree_client() && tree_client()->IsRoot(child)) |
+ if (window_tree() && window_tree()->IsRoot(child)) |
return; |
LocalAddChild(child); |
- if (connection_) |
- tree_client()->AddChild(this, child->server_id()); |
+ if (client_) |
+ client_->AddChild(this, child->server_id()); |
} |
void Window::RemoveChild(Window* child) { |
- // TODO(beng): not necessarily valid to all connections, but possibly to the |
+ // TODO(beng): not necessarily valid to all clients, but possibly to the |
// embeddee in an embedder-embeddee relationship. |
- if (connection_) |
- CHECK_EQ(child->connection(), connection_); |
+ if (client_) |
+ CHECK_EQ(child->client_, client_); |
LocalRemoveChild(child); |
- if (connection_) |
- tree_client()->RemoveChild(this, child->server_id()); |
+ if (client_) |
+ client_->RemoveChild(this, child->server_id()); |
} |
void Window::Reorder(Window* relative, mojom::OrderDirection direction) { |
if (!LocalReorder(relative, direction)) |
return; |
- if (connection_) |
- tree_client()->Reorder(this, relative->server_id(), direction); |
+ if (client_) |
+ client_->Reorder(this, relative->server_id(), direction); |
} |
void Window::MoveToFront() { |
@@ -358,8 +357,8 @@ bool Window::Contains(const Window* child) const { |
return false; |
if (child == this) |
return true; |
- if (connection_) |
- CHECK_EQ(child->connection_, connection_); |
+ if (client_) |
+ CHECK_EQ(child->client_, client_); |
for (const Window* p = child->parent(); p; p = p->parent()) { |
if (p == this) |
return true; |
@@ -371,19 +370,19 @@ void Window::AddTransientWindow(Window* transient_window) { |
// A system modal window cannot become a transient child. |
DCHECK(!transient_window->is_modal() || transient_window->transient_parent()); |
- if (connection_) |
- CHECK_EQ(transient_window->connection(), connection_); |
+ if (client_) |
+ CHECK_EQ(transient_window->client_, client_); |
LocalAddTransientWindow(transient_window); |
- if (connection_) |
- tree_client()->AddTransientWindow(this, transient_window->server_id()); |
+ if (client_) |
+ client_->AddTransientWindow(this, transient_window->server_id()); |
} |
void Window::RemoveTransientWindow(Window* transient_window) { |
- if (connection_) |
- CHECK_EQ(transient_window->connection(), connection_); |
+ if (client_) |
+ CHECK_EQ(transient_window->window_tree(), client_); |
LocalRemoveTransientWindow(transient_window); |
- if (connection_) |
- tree_client()->RemoveTransientWindowFromParent(transient_window); |
+ if (client_) |
+ client_->RemoveTransientWindowFromParent(transient_window); |
} |
void Window::SetModal() { |
@@ -391,8 +390,8 @@ void Window::SetModal() { |
return; |
LocalSetModal(); |
- if (connection_) |
- tree_client()->SetModal(this); |
+ if (client_) |
+ client_->SetModal(this); |
} |
Window* Window::GetChildByLocalId(int id) { |
@@ -409,43 +408,43 @@ Window* Window::GetChildByLocalId(int id) { |
} |
void Window::SetTextInputState(mojo::TextInputStatePtr state) { |
- if (connection_) |
- tree_client()->SetWindowTextInputState(server_id_, std::move(state)); |
+ if (client_) |
+ client_->SetWindowTextInputState(server_id_, std::move(state)); |
} |
void Window::SetImeVisibility(bool visible, mojo::TextInputStatePtr state) { |
// SetImeVisibility() shouldn't be used if the window is not editable. |
DCHECK(state.is_null() || state->type != mojo::TextInputType::NONE); |
- if (connection_) |
- tree_client()->SetImeVisibility(server_id_, visible, std::move(state)); |
+ if (client_) |
+ client_->SetImeVisibility(server_id_, visible, std::move(state)); |
} |
bool Window::HasCapture() const { |
- return connection_ && connection_->GetCaptureWindow() == this; |
+ return client_ && client_->GetCaptureWindow() == this; |
} |
void Window::SetCapture() { |
- if (connection_) |
- tree_client()->SetCapture(this); |
+ if (client_) |
+ client_->SetCapture(this); |
} |
void Window::ReleaseCapture() { |
- if (connection_) |
- tree_client()->ReleaseCapture(this); |
+ if (client_) |
+ client_->ReleaseCapture(this); |
} |
void Window::SetFocus() { |
- if (connection_ && IsDrawn()) |
- tree_client()->SetFocus(this); |
+ if (client_ && IsDrawn()) |
+ client_->SetFocus(this); |
} |
bool Window::HasFocus() const { |
- return connection_ && connection_->GetFocusedWindow() == this; |
+ return client_ && client_->GetFocusedWindow() == this; |
} |
void Window::SetCanFocus(bool can_focus) { |
- if (connection_) |
- tree_client()->SetCanFocus(server_id_, can_focus); |
+ if (client_) |
+ client_->SetCanFocus(server_id_, can_focus); |
} |
void Window::Embed(mus::mojom::WindowTreeClientPtr client) { |
@@ -455,14 +454,14 @@ void Window::Embed(mus::mojom::WindowTreeClientPtr client) { |
void Window::Embed(mus::mojom::WindowTreeClientPtr client, |
const EmbedCallback& callback) { |
if (PrepareForEmbed()) |
- tree_client()->Embed(server_id_, std::move(client), callback); |
+ client_->Embed(server_id_, std::move(client), callback); |
else |
callback.Run(false); |
} |
void Window::RequestClose() { |
- if (tree_client()) |
- tree_client()->RequestClose(this); |
+ if (client_) |
+ client_->RequestClose(this); |
} |
std::string Window::GetName() const { |
@@ -479,15 +478,15 @@ Window::Window() : Window(nullptr, static_cast<Id>(-1)) {} |
Window::~Window() { |
FOR_EACH_OBSERVER(WindowObserver, observers_, OnWindowDestroying(this)); |
- if (tree_client()) |
- tree_client()->OnWindowDestroying(this); |
+ if (client_) |
+ client_->OnWindowDestroying(this); |
if (HasFocus()) { |
// The focused window is being removed. When this happens the server |
// advances focus. We don't want to randomly pick a Window to get focus, so |
// we update local state only, and wait for the next focus change from the |
// server. |
- tree_client()->LocalSetFocus(nullptr); |
+ client_->LocalSetFocus(nullptr); |
} |
// Remove from transient parent. |
@@ -525,15 +524,15 @@ Window::~Window() { |
// Invoke after observers so that can clean up any internal state observers |
// may have changed. |
- if (tree_client()) |
- tree_client()->OnWindowDestroyed(this); |
+ if (window_tree()) |
+ window_tree()->OnWindowDestroyed(this); |
} |
//////////////////////////////////////////////////////////////////////////////// |
// Window, private: |
-Window::Window(WindowTreeConnection* connection, Id id) |
- : connection_(connection), |
+Window::Window(WindowTreeClient* client, Id id) |
+ : client_(client), |
server_id_(id), |
parent_(nullptr), |
stacking_target_(nullptr), |
@@ -548,16 +547,12 @@ Window::Window(WindowTreeConnection* connection, Id id) |
cursor_id_(mojom::Cursor::CURSOR_NULL), |
parent_drawn_(false) {} |
-WindowTreeClientImpl* Window::tree_client() { |
- return static_cast<WindowTreeClientImpl*>(connection_); |
-} |
- |
void Window::SetSharedPropertyInternal(const std::string& name, |
const std::vector<uint8_t>* value) { |
if (!OwnsWindowOrIsRoot(this)) |
return; |
- if (connection_) { |
+ if (client_) { |
mojo::Array<uint8_t> transport_value(nullptr); |
if (value) { |
transport_value.resize(value->size()); |
@@ -565,7 +560,7 @@ void Window::SetSharedPropertyInternal(const std::string& name, |
memcpy(&transport_value.front(), &(value->front()), value->size()); |
} |
// TODO: add test coverage of this (450303). |
- tree_client()->SetProperty(this, name, std::move(transport_value)); |
+ client_->SetProperty(this, name, std::move(transport_value)); |
} |
LocalSetSharedProperty(name, value); |
} |
@@ -651,7 +646,7 @@ void Window::LocalSetBounds(const gfx::Rect& old_bounds, |
const gfx::Rect& new_bounds) { |
// If this client owns the window, then it should be the only one to change |
// the bounds. |
- DCHECK(!OwnsWindow(connection_, this) || old_bounds == bounds_); |
+ DCHECK(!OwnsWindow(client_, this) || old_bounds == bounds_); |
ScopedSetBoundsNotifier notifier(this, old_bounds, new_bounds); |
bounds_ = new_bounds; |
} |
@@ -810,7 +805,7 @@ void Window::NotifyWindowVisibilityChangedUp(Window* target) { |
} |
bool Window::PrepareForEmbed() { |
- if (!OwnsWindow(connection_, this)) |
+ if (!OwnsWindow(client_, this)) |
return false; |
while (!children_.empty()) |