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

Unified Diff: trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc

Issue 286653003: Revert 270122 "Synchronizes View instances across clients." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: 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: trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc
===================================================================
--- trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc (revision 270124)
+++ trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc (working copy)
@@ -9,7 +9,6 @@
#include "mojo/public/cpp/shell/service.h"
#include "mojo/public/interfaces/shell/shell.mojom.h"
#include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h"
-#include "mojo/services/public/cpp/view_manager/lib/view_private.h"
#include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h"
#include "mojo/services/public/cpp/view_manager/util.h"
@@ -17,41 +16,11 @@
namespace services {
namespace view_manager {
-uint32_t MakeTransportId(uint16_t connection_id, uint16_t local_id) {
- return (connection_id << 16) | local_id;
+TransportNodeId MakeTransportNodeId(uint16_t connection_id,
+ uint16_t local_node_id) {
+ return (connection_id << 16) | local_node_id;
}
-// Helper called to construct a local node/view object from transport data.
-ViewTreeNode* AddNodeToViewManager(ViewManager* manager,
- ViewTreeNode* parent,
- TransportNodeId node_id,
- TransportViewId view_id) {
- // 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.
- ViewTreeNode* node = ViewTreeNodePrivate::LocalCreate();
- ViewTreeNodePrivate private_node(node);
- private_node.set_view_manager(manager);
- private_node.set_id(node_id);
- if (parent)
- ViewTreeNodePrivate(parent).LocalAddChild(node);
- ViewManagerPrivate private_manager(manager);
- private_manager.AddNode(node->id(), node);
-
- // View.
- if (view_id != 0) {
- View* view = ViewPrivate::LocalCreate();
- ViewPrivate private_view(view);
- private_view.set_view_manager(manager);
- private_view.set_id(view_id);
- private_view.set_node(node);
- // TODO(beng): this broadcasts notifications locally... do we want this? I
- // don't think so. same story for LocalAddChild above!
- private_node.LocalSetActiveView(view);
- private_manager.AddView(view->id(), view);
- }
- return node;
-}
-
class ViewManagerTransaction {
public:
virtual ~ViewManagerTransaction() {}
@@ -74,17 +43,12 @@
protected:
enum TransactionType {
- // View creation and destruction.
- TYPE_CREATE_VIEW,
- TYPE_DESTROY_VIEW,
// Node creation and destruction.
TYPE_CREATE_VIEW_TREE_NODE,
TYPE_DESTROY_VIEW_TREE_NODE,
// Modifications to the hierarchy (addition of or removal of nodes from a
// parent.)
- TYPE_HIERARCHY,
- // View replacement.
- TYPE_SET_ACTIVE_VIEW
+ TYPE_HIERARCHY
};
ViewManagerTransaction(TransactionType transaction_type,
@@ -117,57 +81,6 @@
DISALLOW_COPY_AND_ASSIGN(ViewManagerTransaction);
};
-class CreateViewTransaction : public ViewManagerTransaction {
- public:
- CreateViewTransaction(uint16_t view_id,
- ViewManagerSynchronizer* synchronizer)
- : ViewManagerTransaction(TYPE_CREATE_VIEW, synchronizer),
- view_id_(view_id) {}
- virtual ~CreateViewTransaction() {}
-
- private:
- // Overridden from ViewManagerTransaction:
- virtual void DoCommit() OVERRIDE {
- service()->CreateView(
- view_id_,
- base::Bind(&ViewManagerTransaction::OnActionCompleted,
- base::Unretained(this)));
- }
- virtual void DoActionCompleted(bool success) OVERRIDE {
- // TODO(beng): failure.
- }
-
- const uint16_t view_id_;
-
- DISALLOW_COPY_AND_ASSIGN(CreateViewTransaction);
-};
-
-class DestroyViewTransaction : public ViewManagerTransaction {
- public:
- DestroyViewTransaction(TransportViewId view_id,
- ViewManagerSynchronizer* synchronizer)
- : ViewManagerTransaction(TYPE_DESTROY_VIEW, synchronizer),
- view_id_(view_id) {}
- virtual ~DestroyViewTransaction() {}
-
- private:
- // Overridden from ViewManagerTransaction:
- virtual void DoCommit() OVERRIDE {
- service()->DeleteView(
- view_id_,
- client_change_id(),
- base::Bind(&ViewManagerTransaction::OnActionCompleted,
- base::Unretained(this)));
- }
- virtual void DoActionCompleted(bool success) OVERRIDE {
- // TODO(beng): recovery?
- }
-
- const TransportViewId view_id_;
-
- DISALLOW_COPY_AND_ASSIGN(DestroyViewTransaction);
-};
-
class CreateViewTreeNodeTransaction : public ViewManagerTransaction {
public:
CreateViewTreeNodeTransaction(uint16_t node_id,
@@ -217,7 +130,7 @@
// TODO(beng): recovery?
}
- const TransportNodeId node_id_;
+ TransportNodeId node_id_;
DISALLOW_COPY_AND_ASSIGN(DestroyViewTreeNodeTransaction);
};
@@ -273,36 +186,6 @@
DISALLOW_COPY_AND_ASSIGN(HierarchyTransaction);
};
-class SetActiveViewTransaction : public ViewManagerTransaction {
- public:
- SetActiveViewTransaction(TransportNodeId node_id,
- TransportViewId view_id,
- ViewManagerSynchronizer* synchronizer)
- : ViewManagerTransaction(TYPE_SET_ACTIVE_VIEW, synchronizer),
- node_id_(node_id),
- view_id_(view_id) {}
- virtual ~SetActiveViewTransaction() {}
-
- private:
- // Overridden from ViewManagerTransaction:
- virtual void DoCommit() OVERRIDE {
- service()->SetView(
- node_id_,
- view_id_,
- client_change_id(),
- base::Bind(&ViewManagerTransaction::OnActionCompleted,
- base::Unretained(this)));
- }
- virtual void DoActionCompleted(bool success) OVERRIDE {
- // TODO(beng): recovery?
- }
-
- const TransportNodeId node_id_;
- const TransportViewId view_id_;
-
- DISALLOW_COPY_AND_ASSIGN(SetActiveViewTransaction);
-};
-
ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager)
: view_manager_(view_manager),
connected_(false),
@@ -337,7 +220,7 @@
uint16_t id = ++next_id_;
pending_transactions_.push_back(new CreateViewTreeNodeTransaction(id, this));
Sync();
- return MakeTransportId(connection_id_, id);
+ return MakeTransportNodeId(connection_id_, id);
}
void ViewManagerSynchronizer::DestroyViewTreeNode(TransportNodeId node_id) {
@@ -347,20 +230,6 @@
Sync();
}
-TransportViewId ViewManagerSynchronizer::CreateView() {
- DCHECK(connected_);
- uint16_t id = ++next_id_;
- pending_transactions_.push_back(new CreateViewTransaction(id, this));
- Sync();
- return MakeTransportId(connection_id_, id);
-}
-
-void ViewManagerSynchronizer::DestroyView(TransportViewId view_id) {
- DCHECK(connected_);
- pending_transactions_.push_back(new DestroyViewTransaction(view_id, this));
- Sync();
-}
-
void ViewManagerSynchronizer::AddChild(TransportNodeId child_id,
TransportNodeId parent_id) {
DCHECK(connected_);
@@ -387,18 +256,6 @@
return HiWord(id) == connection_id_;
}
-bool ViewManagerSynchronizer::OwnsView(TransportViewId id) const {
- return HiWord(id) == connection_id_;
-}
-
-void ViewManagerSynchronizer::SetActiveView(TransportNodeId node_id,
- TransportViewId view_id) {
- DCHECK(connected_);
- pending_transactions_.push_back(
- new SetActiveViewTransaction(node_id, view_id, this));
- Sync();
-}
-
////////////////////////////////////////////////////////////////////////////////
// ViewManagerSynchronizer, IViewManagerClient implementation:
@@ -436,8 +293,6 @@
private_node.set_view_manager(view_manager_);
private_node.set_id(node_id);
ViewManagerPrivate(view_manager_).AddNode(node->id(), node);
-
- // TODO(beng): view changes.
}
if (new_parent)
ViewTreeNodePrivate(new_parent).LocalAddChild(node);
@@ -447,31 +302,10 @@
next_server_change_id_ = server_change_id + 1;
}
-void ViewManagerSynchronizer::OnNodeViewReplaced(uint32_t node_id,
- uint32_t new_view_id,
- uint32_t old_view_id,
- uint32_t client_change_id) {
- if (client_change_id == 0) {
- ViewTreeNode* node = view_manager_->GetNodeById(node_id);
- View* new_view = view_manager_->GetViewById(new_view_id);
- if (!new_view && new_view_id != 0) {
- // This client wasn't aware of this View until now.
- new_view = ViewPrivate::LocalCreate();
- ViewPrivate private_view(new_view);
- private_view.set_view_manager(view_manager_);
- private_view.set_id(new_view_id);
- private_view.set_node(node);
- ViewManagerPrivate(view_manager_).AddView(new_view->id(), new_view);
- }
- View* old_view = view_manager_->GetViewById(old_view_id);
- DCHECK_EQ(old_view, node->active_view());
- ViewTreeNodePrivate(node).LocalSetActiveView(new_view);
- }
-}
-
-void ViewManagerSynchronizer::OnNodeDeleted(uint32_t node_id,
- uint32_t server_change_id,
- uint32_t client_change_id) {
+void ViewManagerSynchronizer::OnNodeDeleted(
+ TransportNodeId node_id,
+ TransportChangeId server_change_id,
+ TransportChangeId client_change_id) {
next_server_change_id_ = server_change_id + 1;
if (client_change_id == 0) {
ViewTreeNode* node = view_manager_->GetNodeById(node_id);
@@ -480,15 +314,11 @@
}
}
-void ViewManagerSynchronizer::OnViewDeleted(uint32_t view_id,
- uint32_t server_change_id,
- uint32_t client_change_id) {
- next_server_change_id_ = server_change_id + 1;
- if (client_change_id == 0) {
- View* view = view_manager_->GetViewById(view_id);
- if (view)
- ViewPrivate(view).LocalDestroy();
- }
+void ViewManagerSynchronizer::OnNodeViewReplaced(uint32_t node,
+ uint32_t new_view_id,
+ uint32_t old_view_id,
+ uint32_t client_change_id) {
+ // ..
}
////////////////////////////////////////////////////////////////////////////////
@@ -524,7 +354,6 @@
void ViewManagerSynchronizer::OnRootTreeReceived(
const Array<INode>& nodes) {
- ViewManagerPrivate private_manager(view_manager_);
std::vector<ViewTreeNode*> parents;
ViewTreeNode* root = NULL;
ViewTreeNode* last_node = NULL;
@@ -535,16 +364,20 @@
while (parents.back()->id() != nodes[i].parent_id())
parents.pop_back();
}
- ViewTreeNode* node =
- AddNodeToViewManager(view_manager_,
- !parents.empty() ? parents.back() : NULL,
- nodes[i].node_id(),
- nodes[i].view_id());
+ // 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.
+ ViewTreeNode* node = ViewTreeNodePrivate::LocalCreate();
+ ViewTreeNodePrivate private_node(node);
+ private_node.set_view_manager(view_manager_);
+ private_node.set_id(nodes[i].node_id());
+ if (!parents.empty())
+ ViewTreeNodePrivate(parents.back()).LocalAddChild(node);
if (!last_node)
root = node;
last_node = node;
+ ViewManagerPrivate(view_manager_).AddNode(node->id(), node);
}
- private_manager.set_root(root);
+ ViewManagerPrivate(view_manager_).set_root(root);
if (init_loop_)
init_loop_->Quit();
}

Powered by Google App Engine
This is Rietveld 408576698