| Index: mojo/services/view_manager/root_node_manager.cc
|
| diff --git a/mojo/services/view_manager/root_node_manager.cc b/mojo/services/view_manager/root_node_manager.cc
|
| deleted file mode 100644
|
| index 18461b790110755e5ebce0ddc376733cfdd91a9b..0000000000000000000000000000000000000000
|
| --- a/mojo/services/view_manager/root_node_manager.cc
|
| +++ /dev/null
|
| @@ -1,268 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -#include "mojo/services/view_manager/root_node_manager.h"
|
| -
|
| -#include "base/logging.h"
|
| -#include "mojo/public/cpp/application/application_connection.h"
|
| -#include "mojo/public/interfaces/application/service_provider.mojom.h"
|
| -#include "mojo/services/public/cpp/input_events/input_events_type_converters.h"
|
| -#include "mojo/services/view_manager/view_manager_service_impl.h"
|
| -#include "ui/aura/env.h"
|
| -
|
| -namespace mojo {
|
| -namespace service {
|
| -
|
| -RootNodeManager::ScopedChange::ScopedChange(
|
| - ViewManagerServiceImpl* connection,
|
| - RootNodeManager* root,
|
| - bool is_delete_node)
|
| - : root_(root),
|
| - connection_id_(connection->id()),
|
| - is_delete_node_(is_delete_node) {
|
| - root_->PrepareForChange(this);
|
| -}
|
| -
|
| -RootNodeManager::ScopedChange::~ScopedChange() {
|
| - root_->FinishChange();
|
| -}
|
| -
|
| -RootNodeManager::Context::Context() {
|
| - // Pass in false as native viewport creates the PlatformEventSource.
|
| - aura::Env::CreateInstance(false);
|
| -}
|
| -
|
| -RootNodeManager::Context::~Context() {
|
| - aura::Env::DeleteInstance();
|
| -}
|
| -
|
| -RootNodeManager::RootNodeManager(
|
| - ApplicationConnection* app_connection,
|
| - DisplayManagerDelegate* display_manager_delegate,
|
| - const Callback<void()>& native_viewport_closed_callback)
|
| - : app_connection_(app_connection),
|
| - next_connection_id_(1),
|
| - display_manager_(app_connection,
|
| - this,
|
| - display_manager_delegate,
|
| - native_viewport_closed_callback),
|
| - root_(new Node(this, RootNodeId())),
|
| - current_change_(NULL) {
|
| -}
|
| -
|
| -RootNodeManager::~RootNodeManager() {
|
| - while (!connections_created_by_connect_.empty())
|
| - delete *(connections_created_by_connect_.begin());
|
| - // All the connections should have been destroyed.
|
| - DCHECK(connection_map_.empty());
|
| - root_.reset();
|
| -}
|
| -
|
| -ConnectionSpecificId RootNodeManager::GetAndAdvanceNextConnectionId() {
|
| - const ConnectionSpecificId id = next_connection_id_++;
|
| - DCHECK_LT(id, next_connection_id_);
|
| - return id;
|
| -}
|
| -
|
| -void RootNodeManager::AddConnection(ViewManagerServiceImpl* connection) {
|
| - DCHECK_EQ(0u, connection_map_.count(connection->id()));
|
| - connection_map_[connection->id()] = connection;
|
| -}
|
| -
|
| -void RootNodeManager::RemoveConnection(ViewManagerServiceImpl* connection) {
|
| - connection_map_.erase(connection->id());
|
| - connections_created_by_connect_.erase(connection);
|
| -
|
| - // Notify remaining connections so that they can cleanup.
|
| - for (ConnectionMap::const_iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - i->second->OnViewManagerServiceImplDestroyed(connection->id());
|
| - }
|
| -}
|
| -
|
| -void RootNodeManager::EmbedRoot(
|
| - const std::string& url,
|
| - InterfaceRequest<ServiceProvider> service_provider) {
|
| - if (connection_map_.empty()) {
|
| - EmbedImpl(kInvalidConnectionId, String::From(url), RootNodeId(),
|
| - service_provider.Pass());
|
| - return;
|
| - }
|
| - ViewManagerServiceImpl* connection = GetConnection(kWindowManagerConnection);
|
| - connection->client()->Embed(url, service_provider.Pass());
|
| -}
|
| -
|
| -void RootNodeManager::Embed(
|
| - ConnectionSpecificId creator_id,
|
| - const String& url,
|
| - Id transport_node_id,
|
| - InterfaceRequest<ServiceProvider> service_provider) {
|
| - EmbedImpl(creator_id,
|
| - url,
|
| - NodeIdFromTransportId(transport_node_id),
|
| - service_provider.Pass())->set_delete_on_connection_error();
|
| -}
|
| -
|
| -ViewManagerServiceImpl* RootNodeManager::GetConnection(
|
| - ConnectionSpecificId connection_id) {
|
| - ConnectionMap::iterator i = connection_map_.find(connection_id);
|
| - return i == connection_map_.end() ? NULL : i->second;
|
| -}
|
| -
|
| -Node* RootNodeManager::GetNode(const NodeId& id) {
|
| - if (id == root_->id())
|
| - return root_.get();
|
| - ConnectionMap::iterator i = connection_map_.find(id.connection_id);
|
| - return i == connection_map_.end() ? NULL : i->second->GetNode(id);
|
| -}
|
| -
|
| -void RootNodeManager::OnConnectionMessagedClient(ConnectionSpecificId id) {
|
| - if (current_change_)
|
| - current_change_->MarkConnectionAsMessaged(id);
|
| -}
|
| -
|
| -bool RootNodeManager::DidConnectionMessageClient(
|
| - ConnectionSpecificId id) const {
|
| - return current_change_ && current_change_->DidMessageConnection(id);
|
| -}
|
| -
|
| -ViewManagerServiceImpl* RootNodeManager::GetConnectionByCreator(
|
| - ConnectionSpecificId creator_id,
|
| - const std::string& url) const {
|
| - for (ConnectionMap::const_iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - if (i->second->creator_id() == creator_id && i->second->url() == url)
|
| - return i->second;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -const ViewManagerServiceImpl* RootNodeManager::GetConnectionWithRoot(
|
| - const NodeId& id) const {
|
| - for (ConnectionMap::const_iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - if (i->second->HasRoot(id))
|
| - return i->second;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -void RootNodeManager::DispatchNodeInputEventToWindowManager(EventPtr event) {
|
| - // Input events are forwarded to the WindowManager. The WindowManager
|
| - // eventually calls back to us with DispatchOnViewInputEvent().
|
| - ViewManagerServiceImpl* connection = GetConnection(kWindowManagerConnection);
|
| - if (!connection)
|
| - return;
|
| - connection->client()->DispatchOnViewInputEvent(event.Pass());
|
| -}
|
| -
|
| -void RootNodeManager::ProcessNodeBoundsChanged(const Node* node,
|
| - const gfx::Rect& old_bounds,
|
| - const gfx::Rect& new_bounds) {
|
| - for (ConnectionMap::iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - i->second->ProcessNodeBoundsChanged(node, old_bounds, new_bounds,
|
| - IsChangeSource(i->first));
|
| - }
|
| -}
|
| -
|
| -void RootNodeManager::ProcessNodeHierarchyChanged(const Node* node,
|
| - const Node* new_parent,
|
| - const Node* old_parent) {
|
| - for (ConnectionMap::iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - i->second->ProcessNodeHierarchyChanged(
|
| - node, new_parent, old_parent, IsChangeSource(i->first));
|
| - }
|
| -}
|
| -
|
| -void RootNodeManager::ProcessNodeReorder(const Node* node,
|
| - const Node* relative_node,
|
| - const OrderDirection direction) {
|
| - for (ConnectionMap::iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - i->second->ProcessNodeReorder(
|
| - node, relative_node, direction, IsChangeSource(i->first));
|
| - }
|
| -}
|
| -
|
| -void RootNodeManager::ProcessNodeDeleted(const NodeId& node) {
|
| - for (ConnectionMap::iterator i = connection_map_.begin();
|
| - i != connection_map_.end(); ++i) {
|
| - i->second->ProcessNodeDeleted(node, IsChangeSource(i->first));
|
| - }
|
| -}
|
| -
|
| -void RootNodeManager::PrepareForChange(ScopedChange* change) {
|
| - // Should only ever have one change in flight.
|
| - CHECK(!current_change_);
|
| - current_change_ = change;
|
| -}
|
| -
|
| -void RootNodeManager::FinishChange() {
|
| - // PrepareForChange/FinishChange should be balanced.
|
| - CHECK(current_change_);
|
| - current_change_ = NULL;
|
| -}
|
| -
|
| -ViewManagerServiceImpl* RootNodeManager::EmbedImpl(
|
| - const ConnectionSpecificId creator_id,
|
| - const String& url,
|
| - const NodeId& root_id,
|
| - InterfaceRequest<ServiceProvider> service_provider) {
|
| - MessagePipe pipe;
|
| -
|
| - ServiceProvider* view_manager_service_provider =
|
| - app_connection_->ConnectToApplication(url)->GetServiceProvider();
|
| - view_manager_service_provider->ConnectToService(
|
| - ViewManagerServiceImpl::Client::Name_,
|
| - pipe.handle1.Pass());
|
| -
|
| - std::string creator_url;
|
| - ConnectionMap::const_iterator it = connection_map_.find(creator_id);
|
| - if (it != connection_map_.end())
|
| - creator_url = it->second->url();
|
| -
|
| - ViewManagerServiceImpl* connection =
|
| - new ViewManagerServiceImpl(this,
|
| - creator_id,
|
| - creator_url,
|
| - url.To<std::string>(),
|
| - root_id,
|
| - service_provider.Pass());
|
| - WeakBindToPipe(connection, pipe.handle0.Pass());
|
| - connections_created_by_connect_.insert(connection);
|
| - OnConnectionMessagedClient(connection->id());
|
| - return connection;
|
| -}
|
| -
|
| -void RootNodeManager::OnNodeDestroyed(const Node* node) {
|
| - ProcessNodeDeleted(node->id());
|
| -}
|
| -
|
| -void RootNodeManager::OnNodeHierarchyChanged(const Node* node,
|
| - const Node* new_parent,
|
| - const Node* old_parent) {
|
| - if (!display_manager_.in_setup())
|
| - ProcessNodeHierarchyChanged(node, new_parent, old_parent);
|
| -}
|
| -
|
| -void RootNodeManager::OnNodeBoundsChanged(const Node* node,
|
| - const gfx::Rect& old_bounds,
|
| - const gfx::Rect& new_bounds) {
|
| - ProcessNodeBoundsChanged(node, old_bounds, new_bounds);
|
| - if (!node->parent())
|
| - return;
|
| -
|
| - // TODO(sky): optimize this.
|
| - display_manager_.SchedulePaint(node->parent(), old_bounds);
|
| - display_manager_.SchedulePaint(node->parent(), new_bounds);
|
| -}
|
| -
|
| -void RootNodeManager::OnNodeBitmapChanged(const Node* node) {
|
| - display_manager_.SchedulePaint(node, gfx::Rect(node->bounds().size()));
|
| -}
|
| -
|
| -} // namespace service
|
| -} // namespace mojo
|
|
|