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

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

Issue 306403003: Revert 274322 "Implement a demo that shows one app embedding ren..." (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 274327)
+++ trunk/src/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc (working copy)
@@ -5,7 +5,7 @@
#include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h"
#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "mojo/public/cpp/application/connect.h"
#include "mojo/public/interfaces/service_provider/service_provider.mojom.h"
#include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h"
@@ -108,9 +108,7 @@
// Node bounds.
TYPE_SET_BOUNDS,
// View contents
- TYPE_SET_VIEW_CONTENTS,
- // Embed.
- TYPE_EMBED
+ TYPE_SET_VIEW_CONTENTS
};
ViewManagerTransaction(TransactionType transaction_type,
@@ -127,7 +125,7 @@
// service.
virtual void DoActionCompleted(bool success) = 0;
- IViewManager* service() { return synchronizer_->service_; }
+ IViewManager* service() { return synchronizer_->service_.get(); }
TransportChangeId GetAndAdvanceNextServerChangeId() {
return synchronizer_->next_server_change_id_++;
@@ -407,42 +405,26 @@
DISALLOW_COPY_AND_ASSIGN(SetViewContentsTransaction);
};
-class EmbedTransaction : public ViewManagerTransaction {
- public:
- EmbedTransaction(const String& url,
- TransportNodeId node_id,
- ViewManagerSynchronizer* synchronizer)
- : ViewManagerTransaction(TYPE_EMBED, synchronizer),
- url_(url),
- node_id_(node_id) {}
- virtual ~EmbedTransaction() {}
-
- private:
- // Overridden from ViewManagerTransaction:
- virtual void DoCommit() OVERRIDE {
- std::vector<TransportNodeId> ids;
- ids.push_back(node_id_);
- service()->Connect(url_, Array<TransportNodeId>::From(ids),
- ActionCompletedCallback());
- }
- virtual void DoActionCompleted(bool success) OVERRIDE {
- // TODO(beng): recovery?
- }
-
- const String url_;
- const TransportNodeId node_id_;
-
- DISALLOW_COPY_AND_ASSIGN(EmbedTransaction);
-};
-
ViewManagerSynchronizer::ViewManagerSynchronizer(ViewManager* view_manager)
: view_manager_(view_manager),
connected_(false),
connection_id_(0),
next_id_(1),
next_server_change_id_(0),
- sync_factory_(this) {
- ViewManagerPrivate(view_manager).set_synchronizer(this);
+ sync_factory_(this),
+ init_loop_(NULL) {
+ ConnectToService(
+ ViewManagerPrivate(view_manager_).service_provider(),
+ "mojo:mojo_view_manager",
+ &service_);
+ service_.set_client(this);
+
+ // Start a runloop. This loop is quit when the server tells us about the
+ // connection (OnConnectionEstablished()).
+ base::RunLoop loop;
+ init_loop_ = &loop;
+ init_loop_->Run();
+ init_loop_ = NULL;
}
ViewManagerSynchronizer::~ViewManagerSynchronizer() {
@@ -535,21 +517,7 @@
Sync();
}
-void ViewManagerSynchronizer::Embed(const String& url,
- TransportNodeId node_id) {
- DCHECK(connected_);
- pending_transactions_.push_back(new EmbedTransaction(url, node_id, this));
- Sync();
-}
-
////////////////////////////////////////////////////////////////////////////////
-// ViewManagerSynchronizer, InterfaceImpl overrides:
-
-void ViewManagerSynchronizer::OnConnectionEstablished() {
- service_ = client();
-}
-
-////////////////////////////////////////////////////////////////////////////////
// ViewManagerSynchronizer, IViewManagerClient implementation:
void ViewManagerSynchronizer::OnViewManagerConnectionEstablished(
@@ -560,12 +528,12 @@
connection_id_ = connection_id;
next_server_change_id_ = next_server_change_id;
- ViewManagerPrivate(view_manager()).set_root(
- BuildNodeTree(view_manager(), nodes));
+ ViewManagerPrivate(view_manager_).set_root(
+ BuildNodeTree(view_manager_, nodes));
+ if (init_loop_)
+ init_loop_->Quit();
Sync();
-
- base::MessageLoop::current()->Quit();
}
void ViewManagerSynchronizer::OnServerChangeIdAdvanced(
@@ -576,7 +544,7 @@
void ViewManagerSynchronizer::OnNodeBoundsChanged(uint32 node_id,
RectPtr old_bounds,
RectPtr new_bounds) {
- ViewTreeNode* node = view_manager()->GetNodeById(node_id);
+ ViewTreeNode* node = view_manager_->GetNodeById(node_id);
ViewTreeNodePrivate(node).LocalSetBounds(old_bounds.To<gfx::Rect>(),
new_bounds.To<gfx::Rect>());
}
@@ -590,11 +558,11 @@
// TODO: deal with |nodes|.
next_server_change_id_ = server_change_id + 1;
- BuildNodeTree(view_manager(), nodes);
+ BuildNodeTree(view_manager_, nodes);
- ViewTreeNode* new_parent = view_manager()->GetNodeById(new_parent_id);
- ViewTreeNode* old_parent = view_manager()->GetNodeById(old_parent_id);
- ViewTreeNode* node = view_manager()->GetNodeById(node_id);
+ ViewTreeNode* new_parent = view_manager_->GetNodeById(new_parent_id);
+ ViewTreeNode* old_parent = view_manager_->GetNodeById(old_parent_id);
+ ViewTreeNode* node = view_manager_->GetNodeById(node_id);
if (new_parent)
ViewTreeNodePrivate(new_parent).LocalAddChild(node);
else
@@ -605,7 +573,7 @@
uint32_t server_change_id) {
next_server_change_id_ = server_change_id + 1;
- ViewTreeNode* node = view_manager()->GetNodeById(node_id);
+ ViewTreeNode* node = view_manager_->GetNodeById(node_id);
if (node)
ViewTreeNodePrivate(node).LocalDestroy();
}
@@ -613,24 +581,24 @@
void ViewManagerSynchronizer::OnNodeViewReplaced(uint32_t node_id,
uint32_t new_view_id,
uint32_t old_view_id) {
- ViewTreeNode* node = view_manager()->GetNodeById(node_id);
- View* new_view = view_manager()->GetViewById(new_view_id);
+ 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_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);
+ ViewManagerPrivate(view_manager_).AddView(new_view->id(), new_view);
}
- View* old_view = view_manager()->GetViewById(old_view_id);
+ View* old_view = view_manager_->GetViewById(old_view_id);
DCHECK_EQ(old_view, node->active_view());
ViewTreeNodePrivate(node).LocalSetActiveView(new_view);
}
void ViewManagerSynchronizer::OnViewDeleted(uint32_t view_id) {
- View* view = view_manager()->GetViewById(view_id);
+ View* view = view_manager_->GetViewById(view_id);
if (view)
ViewPrivate(view).LocalDestroy();
}

Powered by Google App Engine
This is Rietveld 408576698