Index: mojo/services/view_manager/root_node_manager.h |
diff --git a/mojo/services/view_manager/root_node_manager.h b/mojo/services/view_manager/root_node_manager.h |
deleted file mode 100644 |
index 2f685172668ad118a2837b170758a901dcd1b56c..0000000000000000000000000000000000000000 |
--- a/mojo/services/view_manager/root_node_manager.h |
+++ /dev/null |
@@ -1,210 +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. |
- |
-#ifndef MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |
-#define MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |
- |
-#include <map> |
-#include <set> |
- |
-#include "base/basictypes.h" |
-#include "mojo/public/cpp/bindings/array.h" |
-#include "mojo/services/view_manager/display_manager.h" |
-#include "mojo/services/view_manager/ids.h" |
-#include "mojo/services/view_manager/node.h" |
-#include "mojo/services/view_manager/node_delegate.h" |
-#include "mojo/services/view_manager/view_manager_export.h" |
- |
-namespace ui { |
-class Event; |
-} |
- |
-namespace mojo { |
- |
-class ApplicationConnection; |
- |
-namespace service { |
- |
-class DisplayManagerDelegate; |
-class ViewManagerServiceImpl; |
- |
-// RootNodeManager is responsible for managing the set of |
-// ViewManagerServiceImpls as well as providing the root of the node hierarchy. |
-class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate { |
- public: |
- // Create when a ViewManagerServiceImpl is about to make a change. Ensures |
- // clients are notified of the correct change id. |
- class ScopedChange { |
- public: |
- ScopedChange(ViewManagerServiceImpl* connection, |
- RootNodeManager* root, |
- bool is_delete_node); |
- ~ScopedChange(); |
- |
- ConnectionSpecificId connection_id() const { return connection_id_; } |
- bool is_delete_node() const { return is_delete_node_; } |
- |
- // Marks the connection with the specified id as having seen a message. |
- void MarkConnectionAsMessaged(ConnectionSpecificId connection_id) { |
- message_ids_.insert(connection_id); |
- } |
- |
- // Returns true if MarkConnectionAsMessaged(connection_id) was invoked. |
- bool DidMessageConnection(ConnectionSpecificId connection_id) const { |
- return message_ids_.count(connection_id) > 0; |
- } |
- |
- private: |
- RootNodeManager* root_; |
- const ConnectionSpecificId connection_id_; |
- const bool is_delete_node_; |
- |
- // See description of MarkConnectionAsMessaged/DidMessageConnection. |
- std::set<ConnectionSpecificId> message_ids_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ScopedChange); |
- }; |
- |
- RootNodeManager(ApplicationConnection* app_connection, |
- DisplayManagerDelegate* display_manager_delegate, |
- const Callback<void()>& native_viewport_closed_callback); |
- virtual ~RootNodeManager(); |
- |
- // Returns the id for the next ViewManagerServiceImpl. |
- ConnectionSpecificId GetAndAdvanceNextConnectionId(); |
- |
- void AddConnection(ViewManagerServiceImpl* connection); |
- void RemoveConnection(ViewManagerServiceImpl* connection); |
- |
- // Establishes the initial client. Similar to Connect(), but the resulting |
- // client is allowed to do anything. |
- void EmbedRoot(const std::string& url, |
- InterfaceRequest<ServiceProvider> service_provider); |
- |
- // See description of ViewManagerService::Embed() for details. This assumes |
- // |transport_node_id| is valid. |
- void Embed(ConnectionSpecificId creator_id, |
- const String& url, |
- Id transport_node_id, |
- InterfaceRequest<ServiceProvider> service_provider); |
- |
- // Returns the connection by id. |
- ViewManagerServiceImpl* GetConnection(ConnectionSpecificId connection_id); |
- |
- // Returns the Node identified by |id|. |
- Node* GetNode(const NodeId& id); |
- |
- Node* root() { return root_.get(); } |
- |
- bool IsProcessingChange() const { return current_change_ != NULL; } |
- |
- bool is_processing_delete_node() const { |
- return current_change_ && current_change_->is_delete_node(); } |
- |
- // Invoked when a connection messages a client about the change. This is used |
- // to avoid sending ServerChangeIdAdvanced() unnecessarily. |
- void OnConnectionMessagedClient(ConnectionSpecificId id); |
- |
- // Returns true if OnConnectionMessagedClient() was invoked for id. |
- bool DidConnectionMessageClient(ConnectionSpecificId id) const; |
- |
- ViewManagerServiceImpl* GetConnectionByCreator( |
- ConnectionSpecificId creator_id, |
- const std::string& url) const; |
- |
- // Returns the ViewManagerServiceImpl that has |id| as a root. |
- ViewManagerServiceImpl* GetConnectionWithRoot(const NodeId& id) { |
- return const_cast<ViewManagerServiceImpl*>( |
- const_cast<const RootNodeManager*>(this)->GetConnectionWithRoot(id)); |
- } |
- const ViewManagerServiceImpl* GetConnectionWithRoot(const NodeId& id) const; |
- |
- void DispatchNodeInputEventToWindowManager(EventPtr event); |
- |
- // These functions trivially delegate to all ViewManagerServiceImpls, which in |
- // term notify their clients. |
- void ProcessNodeDestroyed(Node* node); |
- void ProcessNodeBoundsChanged(const Node* node, |
- const gfx::Rect& old_bounds, |
- const gfx::Rect& new_bounds); |
- void ProcessNodeHierarchyChanged(const Node* node, |
- const Node* new_parent, |
- const Node* old_parent); |
- void ProcessNodeReorder(const Node* node, |
- const Node* relative_node, |
- const OrderDirection direction); |
- void ProcessNodeDeleted(const NodeId& node); |
- |
- private: |
- // Used to setup any static state needed by RootNodeManager. |
- struct Context { |
- Context(); |
- ~Context(); |
- }; |
- |
- typedef std::map<ConnectionSpecificId, ViewManagerServiceImpl*> ConnectionMap; |
- |
- // Invoked when a connection is about to make a change. Subsequently followed |
- // by FinishChange() once the change is done. |
- // |
- // Changes should never nest, meaning each PrepareForChange() must be |
- // balanced with a call to FinishChange() with no PrepareForChange() |
- // in between. |
- void PrepareForChange(ScopedChange* change); |
- |
- // Balances a call to PrepareForChange(). |
- void FinishChange(); |
- |
- // Returns true if the specified connection originated the current change. |
- bool IsChangeSource(ConnectionSpecificId connection_id) const { |
- return current_change_ && current_change_->connection_id() == connection_id; |
- } |
- |
- // Implementation of the two embed variants. |
- ViewManagerServiceImpl* EmbedImpl( |
- ConnectionSpecificId creator_id, |
- const String& url, |
- const NodeId& root_id, |
- InterfaceRequest<ServiceProvider> service_provider); |
- |
- // Overridden from NodeDelegate: |
- virtual void OnNodeDestroyed(const Node* node) OVERRIDE; |
- virtual void OnNodeHierarchyChanged(const Node* node, |
- const Node* new_parent, |
- const Node* old_parent) OVERRIDE; |
- virtual void OnNodeBoundsChanged(const Node* node, |
- const gfx::Rect& old_bounds, |
- const gfx::Rect& new_bounds) OVERRIDE; |
- virtual void OnNodeBitmapChanged(const Node* node) OVERRIDE; |
- |
- Context context_; |
- |
- ApplicationConnection* app_connection_; |
- |
- // ID to use for next ViewManagerServiceImpl. |
- ConnectionSpecificId next_connection_id_; |
- |
- // Set of ViewManagerServiceImpls. |
- ConnectionMap connection_map_; |
- |
- DisplayManager display_manager_; |
- |
- // Root node. |
- scoped_ptr<Node> root_; |
- |
- // Set of ViewManagerServiceImpls created by way of Connect(). These have to |
- // be explicitly destroyed. |
- std::set<ViewManagerServiceImpl*> connections_created_by_connect_; |
- |
- // If non-null we're processing a change. The ScopedChange is not owned by us |
- // (it's created on the stack by ViewManagerServiceImpl). |
- ScopedChange* current_change_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RootNodeManager); |
-}; |
- |
-} // namespace service |
-} // namespace mojo |
- |
-#endif // MOJO_SERVICES_VIEW_MANAGER_ROOT_NODE_MANAGER_H_ |