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

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

Issue 277563006: Introduces another change id to hierarchy mutations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge 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
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
index d97acea4e21b2ebd38f14c5dc830eb86fdd8ab8f..e0404168036ffedec5dc771e9c423590d8bb775f 100644
--- a/mojo/services/view_manager/root_node_manager.h
+++ b/mojo/services/view_manager/root_node_manager.h
@@ -28,17 +28,26 @@ class ViewManagerConnection;
// as well as providing the root of the node hierarchy.
class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate {
public:
+ // Used to indicate if the server id should be incremented after notifiying
+ // clients of the change.
+ enum ChangeType {
+ CHANGE_TYPE_ADVANCE_SERVER_CHANGE_ID,
+ CHANGE_TYPE_DONT_ADVANCE_SERVER_CHANGE_ID,
+ };
+
// Create when a ViewManagerConnection is about to make a change. Ensures
// clients are notified of the correct change id.
class ScopedChange {
public:
ScopedChange(ViewManagerConnection* connection,
RootNodeManager* root,
- TransportChangeId change_id);
+ TransportChangeId change_id,
+ RootNodeManager::ChangeType change_type);
~ScopedChange();
private:
RootNodeManager* root_;
+ const ChangeType change_type_;
DISALLOW_COPY_AND_ASSIGN(ScopedChange);
};
@@ -49,6 +58,10 @@ class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate {
// Returns the id for the next ViewManagerConnection.
TransportConnectionId GetAndAdvanceNextConnectionId();
+ TransportChangeId next_server_change_id() const {
+ return next_server_change_id_;
+ }
+
void AddConnection(ViewManagerConnection* connection);
void RemoveConnection(ViewManagerConnection* connection);
@@ -82,13 +95,14 @@ class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate {
// Tracks a change.
struct Change {
- Change(TransportConnectionId connection_id, TransportChangeId change_id)
+ Change(TransportConnectionId connection_id,
+ TransportChangeId client_change_id)
: connection_id(connection_id),
- change_id(change_id) {
+ client_change_id(client_change_id) {
}
TransportConnectionId connection_id;
- TransportChangeId change_id;
+ TransportChangeId client_change_id;
};
typedef std::map<TransportConnectionId, ViewManagerConnection*> ConnectionMap;
@@ -103,7 +117,10 @@ class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate {
TransportChangeId change_id);
// Balances a call to PrepareForChange().
- void FinishChange();
+ void FinishChange(ChangeType change_type);
+
+ TransportChangeId GetClientChangeId(
+ TransportConnectionId connection_id) const;
// Overriden from NodeDelegate:
virtual void OnNodeHierarchyChanged(const NodeId& node,
@@ -118,6 +135,8 @@ class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate {
// ID to use for next ViewManagerConnection.
TransportConnectionId next_connection_id_;
+ TransportChangeId next_server_change_id_;
+
// Set of ViewManagerConnections.
ConnectionMap connection_map_;
« no previous file with comments | « mojo/services/public/interfaces/view_manager/view_manager.mojom ('k') | mojo/services/view_manager/root_node_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698