Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Unified Diff: mojo/services/view_manager/root_node_manager.cc

Issue 288313002: Tweaks to ViewManager: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/services/view_manager/root_node_manager.h ('k') | mojo/services/view_manager/type_converters.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index 80a27f97dc89b9f8ee237e55f2169d9fec6610dc..9366d76b5ab48ce11aee1684c4d2ae2ed12cec0c 100644
--- a/mojo/services/view_manager/root_node_manager.cc
+++ b/mojo/services/view_manager/root_node_manager.cc
@@ -24,10 +24,11 @@ const TransportConnectionId kNoConnection = 0;
RootNodeManager::ScopedChange::ScopedChange(
ViewManagerConnection* connection,
RootNodeManager* root,
- RootNodeManager::ChangeType change_type)
+ RootNodeManager::ChangeType change_type,
+ bool is_delete_node)
: root_(root),
change_type_(change_type) {
- root_->PrepareForChange(connection);
+ root_->PrepareForChange(connection, is_delete_node);
}
RootNodeManager::ScopedChange::~ScopedChange() {
@@ -46,6 +47,7 @@ RootNodeManager::RootNodeManager(Shell* shell)
: next_connection_id_(1),
next_server_change_id_(1),
change_source_(kNoConnection),
+ is_processing_delete_node_(false),
root_view_manager_(shell, this),
root_(this, NodeId(0, kRootId)) {
}
@@ -88,79 +90,74 @@ View* RootNodeManager::GetView(const ViewId& id) {
return i == connection_map_.end() ? NULL : i->second->GetView(id);
}
-void RootNodeManager::NotifyNodeHierarchyChanged(const NodeId& node,
- const NodeId& new_parent,
- const NodeId& old_parent) {
+void RootNodeManager::ProcessNodeHierarchyChanged(const NodeId& node,
+ const NodeId& new_parent,
+ const NodeId& old_parent) {
// TODO(sky): make a macro for this.
for (ConnectionMap::iterator i = connection_map_.begin();
i != connection_map_.end(); ++i) {
- if (ShouldNotifyConnection(i->first)) {
- i->second->NotifyNodeHierarchyChanged(
- node, new_parent, old_parent, next_server_change_id_);
- }
+ i->second->ProcessNodeHierarchyChanged(
+ node, new_parent, old_parent, next_server_change_id_,
+ IsChangeSource(i->first));
}
}
-void RootNodeManager::NotifyNodeViewReplaced(const NodeId& node,
- const ViewId& new_view_id,
- const ViewId& old_view_id) {
+void RootNodeManager::ProcessNodeViewReplaced(const NodeId& node,
+ const ViewId& new_view_id,
+ const ViewId& old_view_id) {
// TODO(sky): make a macro for this.
for (ConnectionMap::iterator i = connection_map_.begin();
i != connection_map_.end(); ++i) {
- if (ShouldNotifyConnection(i->first))
- i->second->NotifyNodeViewReplaced(node, new_view_id, old_view_id);
+ i->second->ProcessNodeViewReplaced(node, new_view_id, old_view_id,
+ IsChangeSource(i->first));
}
}
-void RootNodeManager::NotifyNodeDeleted(const NodeId& node) {
+void RootNodeManager::ProcessNodeDeleted(const NodeId& node) {
// TODO(sky): make a macro for this.
for (ConnectionMap::iterator i = connection_map_.begin();
i != connection_map_.end(); ++i) {
- if (ShouldNotifyConnection(i->first))
- i->second->NotifyNodeDeleted(node, next_server_change_id_);
+ i->second->ProcessNodeDeleted(node, next_server_change_id_,
+ IsChangeSource(i->first));
}
}
-void RootNodeManager::NotifyViewDeleted(const ViewId& view) {
+void RootNodeManager::ProcessViewDeleted(const ViewId& view) {
// TODO(sky): make a macro for this.
for (ConnectionMap::iterator i = connection_map_.begin();
i != connection_map_.end(); ++i) {
- if (ShouldNotifyConnection(i->first))
- i->second->NotifyViewDeleted(view);
+ i->second->ProcessViewDeleted(view, IsChangeSource(i->first));
}
}
-void RootNodeManager::PrepareForChange(ViewManagerConnection* connection) {
+void RootNodeManager::PrepareForChange(ViewManagerConnection* connection,
+ bool is_delete_node) {
// Should only ever have one change in flight.
DCHECK_EQ(kNoConnection, change_source_);
change_source_ = connection->id();
+ is_processing_delete_node_ = is_delete_node;
}
void RootNodeManager::FinishChange(ChangeType change_type) {
// PrepareForChange/FinishChange should be balanced.
DCHECK_NE(kNoConnection, change_source_);
change_source_ = 0;
+ is_processing_delete_node_ = false;
if (change_type == CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID)
next_server_change_id_++;
}
-bool RootNodeManager::ShouldNotifyConnection(
- TransportConnectionId connection_id) const {
- // Don't notify the source that originated the change.
- return connection_id != change_source_;
-}
-
void RootNodeManager::OnNodeHierarchyChanged(const NodeId& node,
const NodeId& new_parent,
const NodeId& old_parent) {
if (!root_view_manager_.in_setup())
- NotifyNodeHierarchyChanged(node, new_parent, old_parent);
+ ProcessNodeHierarchyChanged(node, new_parent, old_parent);
}
void RootNodeManager::OnNodeViewReplaced(const NodeId& node,
const ViewId& new_view_id,
const ViewId& old_view_id) {
- NotifyNodeViewReplaced(node, new_view_id, old_view_id);
+ ProcessNodeViewReplaced(node, new_view_id, old_view_id);
}
} // namespace service
« no previous file with comments | « mojo/services/view_manager/root_node_manager.h ('k') | mojo/services/view_manager/type_converters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698