| Index: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| index 85080fb97bdc8924cdc36c3c62d4a9c70861629e..fd2269154fd1783fb7778a954a06f1bed43e9fb2 100644
|
| --- a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
|
| @@ -11,10 +11,10 @@
|
| #include "mojo/public/cpp/application/connect.h"
|
| #include "mojo/public/cpp/application/service_provider_impl.h"
|
| #include "mojo/public/interfaces/application/service_provider.mojom.h"
|
| -#include "mojo/services/public/cpp/view_manager/lib/node_private.h"
|
| -#include "mojo/services/public/cpp/view_manager/node_observer.h"
|
| +#include "mojo/services/public/cpp/view_manager/lib/view_private.h"
|
| #include "mojo/services/public/cpp/view_manager/util.h"
|
| #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
|
| +#include "mojo/services/public/cpp/view_manager/view_observer.h"
|
| #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| #include "ui/gfx/codec/png_codec.h"
|
| @@ -26,69 +26,69 @@ Id MakeTransportId(ConnectionSpecificId connection_id,
|
| return (connection_id << 16) | local_id;
|
| }
|
|
|
| -// Helper called to construct a local node/view object from transport data.
|
| -Node* AddNodeToViewManager(ViewManagerClientImpl* client,
|
| - Node* parent,
|
| - Id node_id,
|
| +// Helper called to construct a local view object from transport data.
|
| +View* AddViewToViewManager(ViewManagerClientImpl* client,
|
| + View* parent,
|
| + Id view_id,
|
| const gfx::Rect& bounds) {
|
| // We don't use the ctor that takes a ViewManager here, since it will call
|
| - // back to the service and attempt to create a new node.
|
| - Node* node = NodePrivate::LocalCreate();
|
| - NodePrivate private_node(node);
|
| - private_node.set_view_manager(client);
|
| - private_node.set_id(node_id);
|
| - client->AddNode(node);
|
| - private_node.LocalSetBounds(gfx::Rect(), bounds);
|
| + // back to the service and attempt to create a new view.
|
| + View* view = ViewPrivate::LocalCreate();
|
| + ViewPrivate private_view(view);
|
| + private_view.set_view_manager(client);
|
| + private_view.set_id(view_id);
|
| + client->AddView(view);
|
| + private_view.LocalSetBounds(gfx::Rect(), bounds);
|
| if (parent)
|
| - NodePrivate(parent).LocalAddChild(node);
|
| - return node;
|
| + ViewPrivate(parent).LocalAddChild(view);
|
| + return view;
|
| }
|
|
|
| -Node* BuildNodeTree(ViewManagerClientImpl* client,
|
| - const Array<NodeDataPtr>& nodes,
|
| - Node* initial_parent) {
|
| - std::vector<Node*> parents;
|
| - Node* root = NULL;
|
| - Node* last_node = NULL;
|
| +View* BuildViewTree(ViewManagerClientImpl* client,
|
| + const Array<ViewDataPtr>& views,
|
| + View* initial_parent) {
|
| + std::vector<View*> parents;
|
| + View* root = NULL;
|
| + View* last_view = NULL;
|
| if (initial_parent)
|
| parents.push_back(initial_parent);
|
| - for (size_t i = 0; i < nodes.size(); ++i) {
|
| - if (last_node && nodes[i]->parent_id == last_node->id()) {
|
| - parents.push_back(last_node);
|
| + for (size_t i = 0; i < views.size(); ++i) {
|
| + if (last_view && views[i]->parent_id == last_view->id()) {
|
| + parents.push_back(last_view);
|
| } else if (!parents.empty()) {
|
| - while (parents.back()->id() != nodes[i]->parent_id)
|
| + while (parents.back()->id() != views[i]->parent_id)
|
| parents.pop_back();
|
| }
|
| - Node* node = AddNodeToViewManager(
|
| + View* view = AddViewToViewManager(
|
| client,
|
| !parents.empty() ? parents.back() : NULL,
|
| - nodes[i]->node_id,
|
| - nodes[i]->bounds.To<gfx::Rect>());
|
| - if (!last_node)
|
| - root = node;
|
| - last_node = node;
|
| + views[i]->view_id,
|
| + views[i]->bounds.To<gfx::Rect>());
|
| + if (!last_view)
|
| + root = view;
|
| + last_view = view;
|
| }
|
| return root;
|
| }
|
|
|
| -// Responsible for removing a root from the ViewManager when that node is
|
| +// Responsible for removing a root from the ViewManager when that view is
|
| // destroyed.
|
| -class RootObserver : public NodeObserver {
|
| +class RootObserver : public ViewObserver {
|
| public:
|
| - explicit RootObserver(Node* root) : root_(root) {}
|
| + explicit RootObserver(View* root) : root_(root) {}
|
| virtual ~RootObserver() {}
|
|
|
| private:
|
| - // Overridden from NodeObserver:
|
| - virtual void OnNodeDestroyed(Node* node) OVERRIDE {
|
| - DCHECK_EQ(node, root_);
|
| + // Overridden from ViewObserver:
|
| + virtual void OnViewDestroyed(View* view) OVERRIDE {
|
| + DCHECK_EQ(view, root_);
|
| static_cast<ViewManagerClientImpl*>(
|
| - NodePrivate(root_).view_manager())->RemoveRoot(root_);
|
| - node->RemoveObserver(this);
|
| + ViewPrivate(root_).view_manager())->RemoveRoot(root_);
|
| + view->RemoveObserver(this);
|
| delete this;
|
| }
|
|
|
| - Node* root_;
|
| + View* root_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(RootObserver);
|
| };
|
| @@ -125,18 +125,18 @@ ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate)
|
| }
|
|
|
| ViewManagerClientImpl::~ViewManagerClientImpl() {
|
| - std::vector<Node*> non_owned;
|
| - while (!nodes_.empty()) {
|
| - IdToNodeMap::iterator it = nodes_.begin();
|
| - if (OwnsNode(it->second->id())) {
|
| + std::vector<View*> non_owned;
|
| + while (!views_.empty()) {
|
| + IdToViewMap::iterator it = views_.begin();
|
| + if (OwnsView(it->second->id())) {
|
| it->second->Destroy();
|
| } else {
|
| non_owned.push_back(it->second);
|
| - nodes_.erase(it);
|
| + views_.erase(it);
|
| }
|
| }
|
| - // Delete the non-owned nodes last. In the typical case these are roots. The
|
| - // exception is the window manager, which may know aboutother random nodes
|
| + // Delete the non-owned views last. In the typical case these are roots. The
|
| + // exception is the window manager, which may know aboutother random views
|
| // that it doesn't own.
|
| // NOTE: we manually delete as we're a friend.
|
| for (size_t i = 0; i < non_owned.size(); ++i)
|
| @@ -144,48 +144,48 @@ ViewManagerClientImpl::~ViewManagerClientImpl() {
|
| delegate_->OnViewManagerDisconnected(this);
|
| }
|
|
|
| -Id ViewManagerClientImpl::CreateNode() {
|
| +Id ViewManagerClientImpl::CreateView() {
|
| DCHECK(connected_);
|
| - const Id node_id = MakeTransportId(connection_id_, ++next_id_);
|
| - service_->CreateNode(node_id, ActionCompletedCallbackWithErrorCode());
|
| - return node_id;
|
| + const Id view_id = MakeTransportId(connection_id_, ++next_id_);
|
| + service_->CreateView(view_id, ActionCompletedCallbackWithErrorCode());
|
| + return view_id;
|
| }
|
|
|
| -void ViewManagerClientImpl::DestroyNode(Id node_id) {
|
| +void ViewManagerClientImpl::DestroyView(Id view_id) {
|
| DCHECK(connected_);
|
| - service_->DeleteNode(node_id, ActionCompletedCallback());
|
| + service_->DeleteView(view_id, ActionCompletedCallback());
|
| }
|
|
|
| void ViewManagerClientImpl::AddChild(Id child_id, Id parent_id) {
|
| DCHECK(connected_);
|
| - service_->AddNode(parent_id, child_id, ActionCompletedCallback());
|
| + service_->AddView(parent_id, child_id, ActionCompletedCallback());
|
| }
|
|
|
| void ViewManagerClientImpl::RemoveChild(Id child_id, Id parent_id) {
|
| DCHECK(connected_);
|
| - service_->RemoveNodeFromParent(child_id, ActionCompletedCallback());
|
| + service_->RemoveViewFromParent(child_id, ActionCompletedCallback());
|
| }
|
|
|
| void ViewManagerClientImpl::Reorder(
|
| - Id node_id,
|
| - Id relative_node_id,
|
| + Id view_id,
|
| + Id relative_view_id,
|
| OrderDirection direction) {
|
| DCHECK(connected_);
|
| - service_->ReorderNode(node_id, relative_node_id, direction,
|
| + service_->ReorderView(view_id, relative_view_id, direction,
|
| ActionCompletedCallback());
|
| }
|
|
|
| -bool ViewManagerClientImpl::OwnsNode(Id id) const {
|
| +bool ViewManagerClientImpl::OwnsView(Id id) const {
|
| return HiWord(id) == connection_id_;
|
| }
|
|
|
| -void ViewManagerClientImpl::SetBounds(Id node_id, const gfx::Rect& bounds) {
|
| +void ViewManagerClientImpl::SetBounds(Id view_id, const gfx::Rect& bounds) {
|
| DCHECK(connected_);
|
| - service_->SetNodeBounds(node_id, Rect::From(bounds),
|
| + service_->SetViewBounds(view_id, Rect::From(bounds),
|
| ActionCompletedCallback());
|
| }
|
|
|
| -void ViewManagerClientImpl::SetNodeContents(Id node_id,
|
| +void ViewManagerClientImpl::SetViewContents(Id view_id,
|
| const SkBitmap& contents) {
|
| DCHECK(connected_);
|
| std::vector<unsigned char> data;
|
| @@ -202,45 +202,45 @@ void ViewManagerClientImpl::SetNodeContents(Id node_id,
|
|
|
| memcpy(memory, &data[0], data.size());
|
|
|
| - service_->SetNodeContents(node_id, duped.Pass(),
|
| + service_->SetViewContents(view_id, duped.Pass(),
|
| static_cast<uint32_t>(data.size()),
|
| ActionCompletedCallback());
|
| }
|
|
|
| -void ViewManagerClientImpl::SetFocus(Id node_id) {
|
| +void ViewManagerClientImpl::SetFocus(Id view_id) {
|
| DCHECK(connected_);
|
| - service_->SetFocus(node_id, ActionCompletedCallback());
|
| + service_->SetFocus(view_id, ActionCompletedCallback());
|
| }
|
|
|
| -void ViewManagerClientImpl::SetVisible(Id node_id, bool visible) {
|
| +void ViewManagerClientImpl::SetVisible(Id view_id, bool visible) {
|
| DCHECK(connected_);
|
| - service_->SetNodeVisibility(node_id, visible, ActionCompletedCallback());
|
| + service_->SetViewVisibility(view_id, visible, ActionCompletedCallback());
|
| }
|
|
|
| -void ViewManagerClientImpl::Embed(const String& url, Id node_id) {
|
| +void ViewManagerClientImpl::Embed(const String& url, Id view_id) {
|
| ServiceProviderPtr sp;
|
| BindToProxy(new ServiceProviderImpl, &sp);
|
| - Embed(url, node_id, sp.Pass());
|
| + Embed(url, view_id, sp.Pass());
|
| }
|
|
|
| void ViewManagerClientImpl::Embed(
|
| const String& url,
|
| - Id node_id,
|
| + Id view_id,
|
| ServiceProviderPtr service_provider) {
|
| DCHECK(connected_);
|
| - service_->Embed(url, node_id, service_provider.Pass(),
|
| + service_->Embed(url, view_id, service_provider.Pass(),
|
| ActionCompletedCallback());
|
| }
|
|
|
| -void ViewManagerClientImpl::AddNode(Node* node) {
|
| - DCHECK(nodes_.find(node->id()) == nodes_.end());
|
| - nodes_[node->id()] = node;
|
| +void ViewManagerClientImpl::AddView(View* view) {
|
| + DCHECK(views_.find(view->id()) == views_.end());
|
| + views_[view->id()] = view;
|
| }
|
|
|
| -void ViewManagerClientImpl::RemoveNode(Id node_id) {
|
| - IdToNodeMap::iterator it = nodes_.find(node_id);
|
| - if (it != nodes_.end())
|
| - nodes_.erase(it);
|
| +void ViewManagerClientImpl::RemoveView(Id view_id) {
|
| + IdToViewMap::iterator it = views_.find(view_id);
|
| + if (it != views_.end())
|
| + views_.erase(it);
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -248,26 +248,26 @@ void ViewManagerClientImpl::RemoveNode(Id node_id) {
|
|
|
| void ViewManagerClientImpl::SetWindowManagerDelegate(
|
| WindowManagerDelegate* window_manager_delegate) {
|
| - CHECK(NULL != GetNodeById(1));
|
| + CHECK(NULL != GetViewById(1));
|
| window_manager_delegate_ = window_manager_delegate;
|
| }
|
|
|
| -void ViewManagerClientImpl::DispatchEvent(Node* target, EventPtr event) {
|
| +void ViewManagerClientImpl::DispatchEvent(View* target, EventPtr event) {
|
| CHECK(window_manager_delegate_);
|
| - service_->DispatchOnNodeInputEvent(target->id(), event.Pass());
|
| + service_->DispatchOnViewInputEvent(target->id(), event.Pass());
|
| }
|
|
|
| const std::string& ViewManagerClientImpl::GetEmbedderURL() const {
|
| return creator_url_;
|
| }
|
|
|
| -const std::vector<Node*>& ViewManagerClientImpl::GetRoots() const {
|
| +const std::vector<View*>& ViewManagerClientImpl::GetRoots() const {
|
| return roots_;
|
| }
|
|
|
| -Node* ViewManagerClientImpl::GetNodeById(Id id) {
|
| - IdToNodeMap::const_iterator it = nodes_.find(id);
|
| - return it != nodes_.end() ? it->second : NULL;
|
| +View* ViewManagerClientImpl::GetViewById(Id id) {
|
| + IdToViewMap::const_iterator it = views_.find(id);
|
| + return it != views_.end() ? it->second : NULL;
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -283,7 +283,7 @@ void ViewManagerClientImpl::OnConnectionEstablished() {
|
| void ViewManagerClientImpl::OnEmbed(
|
| ConnectionSpecificId connection_id,
|
| const String& creator_url,
|
| - NodeDataPtr root_data,
|
| + ViewDataPtr root_data,
|
| InterfaceRequest<ServiceProvider> service_provider) {
|
| if (!connected_) {
|
| connected_ = true;
|
| @@ -296,7 +296,7 @@ void ViewManagerClientImpl::OnEmbed(
|
|
|
| // A new root must not already exist as a root or be contained by an existing
|
| // hierarchy visible to this view manager.
|
| - Node* root = AddNodeToViewManager(this, NULL, root_data->node_id,
|
| + View* root = AddViewToViewManager(this, NULL, root_data->view_id,
|
| root_data->bounds.To<gfx::Rect>());
|
| roots_.push_back(root);
|
| root->AddObserver(new RootObserver(root));
|
| @@ -309,74 +309,74 @@ void ViewManagerClientImpl::OnEmbed(
|
| delegate_->OnEmbed(this, root, exported_services, remote.Pass());
|
| }
|
|
|
| -void ViewManagerClientImpl::OnNodeBoundsChanged(Id node_id,
|
| +void ViewManagerClientImpl::OnViewBoundsChanged(Id view_id,
|
| RectPtr old_bounds,
|
| RectPtr new_bounds) {
|
| - Node* node = GetNodeById(node_id);
|
| - NodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(),
|
| + View* view = GetViewById(view_id);
|
| + ViewPrivate(view).LocalSetBounds(old_bounds.To<gfx::Rect>(),
|
| new_bounds.To<gfx::Rect>());
|
| }
|
|
|
| -void ViewManagerClientImpl::OnNodeHierarchyChanged(
|
| - Id node_id,
|
| +void ViewManagerClientImpl::OnViewHierarchyChanged(
|
| + Id view_id,
|
| Id new_parent_id,
|
| Id old_parent_id,
|
| - mojo::Array<NodeDataPtr> nodes) {
|
| - Node* initial_parent = nodes.size() ?
|
| - GetNodeById(nodes[0]->parent_id) : NULL;
|
| + mojo::Array<ViewDataPtr> views) {
|
| + View* initial_parent = views.size() ?
|
| + GetViewById(views[0]->parent_id) : NULL;
|
|
|
| - BuildNodeTree(this, nodes, initial_parent);
|
| + BuildViewTree(this, views, initial_parent);
|
|
|
| - Node* new_parent = GetNodeById(new_parent_id);
|
| - Node* old_parent = GetNodeById(old_parent_id);
|
| - Node* node = GetNodeById(node_id);
|
| + View* new_parent = GetViewById(new_parent_id);
|
| + View* old_parent = GetViewById(old_parent_id);
|
| + View* view = GetViewById(view_id);
|
| if (new_parent)
|
| - NodePrivate(new_parent).LocalAddChild(node);
|
| + ViewPrivate(new_parent).LocalAddChild(view);
|
| else
|
| - NodePrivate(old_parent).LocalRemoveChild(node);
|
| + ViewPrivate(old_parent).LocalRemoveChild(view);
|
| }
|
|
|
| -void ViewManagerClientImpl::OnNodeReordered(Id node_id,
|
| - Id relative_node_id,
|
| +void ViewManagerClientImpl::OnViewReordered(Id view_id,
|
| + Id relative_view_id,
|
| OrderDirection direction) {
|
| - Node* node = GetNodeById(node_id);
|
| - Node* relative_node = GetNodeById(relative_node_id);
|
| - if (node && relative_node)
|
| - NodePrivate(node).LocalReorder(relative_node, direction);
|
| + View* view = GetViewById(view_id);
|
| + View* relative_view = GetViewById(relative_view_id);
|
| + if (view && relative_view)
|
| + ViewPrivate(view).LocalReorder(relative_view, direction);
|
| }
|
|
|
| -void ViewManagerClientImpl::OnNodeDeleted(Id node_id) {
|
| - Node* node = GetNodeById(node_id);
|
| - if (node)
|
| - NodePrivate(node).LocalDestroy();
|
| +void ViewManagerClientImpl::OnViewDeleted(Id view_id) {
|
| + View* view = GetViewById(view_id);
|
| + if (view)
|
| + ViewPrivate(view).LocalDestroy();
|
| }
|
|
|
| -void ViewManagerClientImpl::OnNodeInputEvent(
|
| - Id node_id,
|
| +void ViewManagerClientImpl::OnViewInputEvent(
|
| + Id view_id,
|
| EventPtr event,
|
| const Callback<void()>& ack_callback) {
|
| - Node* node = GetNodeById(node_id);
|
| - if (node) {
|
| - FOR_EACH_OBSERVER(NodeObserver,
|
| - *NodePrivate(node).observers(),
|
| - OnNodeInputEvent(node, event));
|
| + View* view = GetViewById(view_id);
|
| + if (view) {
|
| + FOR_EACH_OBSERVER(ViewObserver,
|
| + *ViewPrivate(view).observers(),
|
| + OnViewInputEvent(view, event));
|
| }
|
| ack_callback.Run();
|
| }
|
|
|
| void ViewManagerClientImpl::OnFocusChanged(Id gained_focus_id,
|
| Id lost_focus_id) {
|
| - Node* focused = GetNodeById(gained_focus_id);
|
| - Node* blurred = GetNodeById(lost_focus_id);
|
| + View* focused = GetViewById(gained_focus_id);
|
| + View* blurred = GetViewById(lost_focus_id);
|
| if (blurred) {
|
| - FOR_EACH_OBSERVER(NodeObserver,
|
| - *NodePrivate(blurred).observers(),
|
| - OnNodeFocusChanged(focused, blurred));
|
| + FOR_EACH_OBSERVER(ViewObserver,
|
| + *ViewPrivate(blurred).observers(),
|
| + OnViewFocusChanged(focused, blurred));
|
| }
|
| if (focused) {
|
| - FOR_EACH_OBSERVER(NodeObserver,
|
| - *NodePrivate(focused).observers(),
|
| - OnNodeFocusChanged(focused, blurred));
|
| + FOR_EACH_OBSERVER(ViewObserver,
|
| + *ViewPrivate(focused).observers(),
|
| + OnViewFocusChanged(focused, blurred));
|
| }
|
| }
|
|
|
| @@ -386,17 +386,17 @@ void ViewManagerClientImpl::Embed(
|
| window_manager_delegate_->Embed(url, service_provider.Pass());
|
| }
|
|
|
| -void ViewManagerClientImpl::DispatchOnNodeInputEvent(Id node_id,
|
| +void ViewManagerClientImpl::DispatchOnViewInputEvent(Id view_id,
|
| EventPtr event) {
|
| if (window_manager_delegate_)
|
| - window_manager_delegate_->DispatchEvent(GetNodeById(node_id), event.Pass());
|
| + window_manager_delegate_->DispatchEvent(GetViewById(view_id), event.Pass());
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // ViewManagerClientImpl, private:
|
|
|
| -void ViewManagerClientImpl::RemoveRoot(Node* root) {
|
| - std::vector<Node*>::iterator it =
|
| +void ViewManagerClientImpl::RemoveRoot(View* root) {
|
| + std::vector<View*>::iterator it =
|
| std::find(roots_.begin(), roots_.end(), root);
|
| if (it != roots_.end())
|
| roots_.erase(it);
|
|
|