diff options
Diffstat (limited to 'mojo/services')
22 files changed, 61 insertions, 807 deletions
diff --git a/mojo/services/public/cpp/view_manager/lib/view.cc b/mojo/services/public/cpp/view_manager/lib/view.cc index 577aca8..e69de29 100644 --- a/mojo/services/public/cpp/view_manager/lib/view.cc +++ b/mojo/services/public/cpp/view_manager/lib/view.cc @@ -1,82 +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. - -#include "mojo/services/public/cpp/view_manager/view.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/view_observer.h" - -namespace mojo { -namespace services { -namespace view_manager { - -namespace { -class ScopedDestructionNotifier { - public: - explicit ScopedDestructionNotifier(View* view) - : view_(view) { - FOR_EACH_OBSERVER( - ViewObserver, - *ViewPrivate(view_).observers(), - OnViewDestroy(view_, ViewObserver::DISPOSITION_CHANGING)); - } - ~ScopedDestructionNotifier() { - FOR_EACH_OBSERVER( - ViewObserver, - *ViewPrivate(view_).observers(), - OnViewDestroy(view_, ViewObserver::DISPOSITION_CHANGED)); - } - - private: - View* view_; - - DISALLOW_COPY_AND_ASSIGN(ScopedDestructionNotifier); -}; -} // namespace - -// static -View* View::Create(ViewManager* manager) { - View* view = new View(manager); - ViewManagerPrivate(manager).AddView(view->id(), view); - return view; -} - -void View::Destroy() { - if (manager_) - ViewManagerPrivate(manager_).synchronizer()->DestroyView(id_); - LocalDestroy(); -} - -void View::AddObserver(ViewObserver* observer) { - observers_.AddObserver(observer); -} - -void View::RemoveObserver(ViewObserver* observer) { - observers_.RemoveObserver(observer); -} - -View::View(ViewManager* manager) - : id_(ViewManagerPrivate(manager).synchronizer()->CreateView()), - node_(NULL), - manager_(manager) {} - -View::View() - : id_(-1), - node_(NULL), - manager_(NULL) {} - -View::~View() { - ScopedDestructionNotifier notifier(this); - if (manager_) - ViewManagerPrivate(manager_).RemoveView(id_); -} - -void View::LocalDestroy() { - delete this; -} - -} // namespace view_manager -} // namespace services -} // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager.cc b/mojo/services/public/cpp/view_manager/lib/view_manager.cc index f3f02e87..9325a99 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_manager.cc +++ b/mojo/services/public/cpp/view_manager/lib/view_manager.cc @@ -6,7 +6,6 @@ #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h" #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" -#include "mojo/services/public/cpp/view_manager/view.h" namespace mojo { namespace services { @@ -23,13 +22,6 @@ ViewManager::~ViewManager() { else nodes_.erase(it); } - while (!views_.empty()) { - IdToViewMap::iterator it = views_.begin(); - if (synchronizer_->OwnsView(it->second->id())) - it->second->Destroy(); - else - views_.erase(it); - } } void ViewManager::Init() { @@ -41,11 +33,6 @@ ViewTreeNode* ViewManager::GetNodeById(TransportNodeId id) { return it != nodes_.end() ? it->second : NULL; } -View* ViewManager::GetViewById(TransportViewId id) { - IdToViewMap::const_iterator it = views_.find(id); - return it != views_.end() ? it->second : NULL; -} - } // namespace view_manager } // namespace services } // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_private.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_private.cc index d69a383..bf08b39 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_manager_private.cc +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_private.cc @@ -13,7 +13,6 @@ ViewManagerPrivate::ViewManagerPrivate(ViewManager* manager) ViewManagerPrivate::~ViewManagerPrivate() {} void ViewManagerPrivate::AddNode(TransportNodeId node_id, ViewTreeNode* node) { - DCHECK(!manager_->nodes_[node_id]); manager_->nodes_[node_id] = node; } @@ -23,17 +22,6 @@ void ViewManagerPrivate::RemoveNode(TransportNodeId node_id) { manager_->nodes_.erase(it); } -void ViewManagerPrivate::AddView(TransportViewId view_id, View* view) { - DCHECK(!manager_->views_[view_id]); - manager_->views_[view_id] = view; -} - -void ViewManagerPrivate::RemoveView(TransportViewId view_id) { - ViewManager::IdToViewMap::iterator it = manager_->views_.find(view_id); - if (it != manager_->views_.end()) - manager_->views_.erase(it); -} - } // namespace view_manager } // namespace services } // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_private.h b/mojo/services/public/cpp/view_manager/lib/view_manager_private.h index 8df1231..f12fc64 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_manager_private.h +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_private.h @@ -30,9 +30,6 @@ class ViewManagerPrivate { void AddNode(TransportNodeId node_id, ViewTreeNode* node); void RemoveNode(TransportNodeId node_id); - void AddView(TransportViewId view_id, View* view); - void RemoveView(TransportViewId view_id); - // Returns true if the ViewManager's synchronizer is connected to the service. bool connected() { return manager_->synchronizer_->connected(); } diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc index 0335082..617f8ff 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc @@ -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,39 +16,9 @@ namespace mojo { namespace services { namespace view_manager { -uint32_t MakeTransportId(uint16_t connection_id, uint16_t local_id) { - return (connection_id << 16) | local_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; +TransportNodeId MakeTransportNodeId(uint16_t connection_id, + uint16_t local_node_id) { + return (connection_id << 16) | local_node_id; } class ViewManagerTransaction { @@ -74,17 +43,12 @@ class ViewManagerTransaction { 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 @@ class ViewManagerTransaction { 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 @@ class DestroyViewTreeNodeTransaction : public ViewManagerTransaction { // TODO(beng): recovery? } - const TransportNodeId node_id_; + TransportNodeId node_id_; DISALLOW_COPY_AND_ASSIGN(DestroyViewTreeNodeTransaction); }; @@ -273,36 +186,6 @@ class HierarchyTransaction : public ViewManagerTransaction { 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 @@ TransportNodeId ViewManagerSynchronizer::CreateViewTreeNode() { 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 @@ void ViewManagerSynchronizer::DestroyViewTreeNode(TransportNodeId node_id) { 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 @@ bool ViewManagerSynchronizer::OwnsNode(TransportNodeId id) const { 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 @@ void ViewManagerSynchronizer::OnNodeHierarchyChanged( 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 @@ void ViewManagerSynchronizer::OnNodeHierarchyChanged( 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::OnNodeDeleted(uint32_t node_id, } } -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::RemoveFromPendingQueue( 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 @@ void ViewManagerSynchronizer::OnRootTreeReceived( 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(); } diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h index 8792975..2bab3a1 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h +++ b/mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.h @@ -30,14 +30,11 @@ class ViewManagerSynchronizer : public IViewManagerClient { bool connected() const { return connected_; } - // API exposed to the node/view implementations that pushes local changes to - // the service. + // API exposed to the node implementation that pushes local changes to the + // service. TransportNodeId CreateViewTreeNode(); void DestroyViewTreeNode(TransportNodeId node_id); - TransportViewId CreateView(); - void DestroyView(TransportViewId view_id); - // These methods take TransportIds. For views owned by the current connection, // the connection id high word can be zero. In all cases, the TransportId 0x1 // refers to the root node. @@ -45,9 +42,6 @@ class ViewManagerSynchronizer : public IViewManagerClient { void RemoveChild(TransportNodeId child_id, TransportNodeId parent_id); bool OwnsNode(TransportNodeId id) const; - bool OwnsView(TransportViewId id) const; - - void SetActiveView(TransportNodeId node_id, TransportViewId view_id); private: friend class ViewManagerTransaction; @@ -70,9 +64,6 @@ class ViewManagerSynchronizer : public IViewManagerClient { uint32_t new_view_id, uint32_t old_view_id, TransportChangeId client_change_id) OVERRIDE; - virtual void OnViewDeleted(uint32_t node_id, - uint32_t server_change_id, - uint32_t client_change_id) OVERRIDE; // Sync the client model with the service by enumerating the pending // transaction queue and applying them in order. diff --git a/mojo/services/public/cpp/view_manager/lib/view_private.cc b/mojo/services/public/cpp/view_manager/lib/view_private.cc deleted file mode 100644 index c674533..0000000 --- a/mojo/services/public/cpp/view_manager/lib/view_private.cc +++ /dev/null @@ -1,25 +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. - -#include "mojo/services/public/cpp/view_manager/lib/view_private.h" - -namespace mojo { -namespace services { -namespace view_manager { - -ViewPrivate::ViewPrivate(View* view) - : view_(view) { -} - -ViewPrivate::~ViewPrivate() { -} - -// static -View* ViewPrivate::LocalCreate() { - return new View; -} - -} // namespace view_manager -} // namespace services -} // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/lib/view_private.h b/mojo/services/public/cpp/view_manager/lib/view_private.h deleted file mode 100644 index 45cc11b..0000000 --- a/mojo/services/public/cpp/view_manager/lib/view_private.h +++ /dev/null @@ -1,46 +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_PUBLIC_CPP_VIEW_MANAGER_LIB_VIEW_PRIVATE_H_ -#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_LIB_VIEW_PRIVATE_H_ - -#include "base/basictypes.h" - -#include "mojo/services/public/cpp/view_manager/view.h" - -namespace mojo { -namespace services { -namespace view_manager { - -class ViewPrivate { - public: - explicit ViewPrivate(View* view); - ~ViewPrivate(); - - static View* LocalCreate(); - void LocalDestroy() { - view_->LocalDestroy(); - } - - void set_id(TransportViewId id) { view_->id_ = id; } - void set_node(ViewTreeNode* node) { view_->node_ = node; } - - ViewManager* view_manager() { return view_->manager_; } - void set_view_manager(ViewManager* manager) { - view_->manager_ = manager; - } - - ObserverList<ViewObserver>* observers() { return &view_->observers_; } - - private: - View* view_; - - DISALLOW_COPY_AND_ASSIGN(ViewPrivate); -}; - -} // namespace view_manager -} // namespace services -} // namespace mojo - -#endif // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_LIB_VIEW_PRIVATE_H_ diff --git a/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc b/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc index a034176..74e88a9 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc +++ b/mojo/services/public/cpp/view_manager/lib/view_tree_node.cc @@ -6,17 +6,13 @@ #include "mojo/services/public/cpp/view_manager/lib/view_manager_private.h" #include "mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.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/view.h" #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h" namespace mojo { namespace services { namespace view_manager { -namespace { - void NotifyViewTreeChangeAtReceiver( ViewTreeNode* receiver, const ViewTreeNodeObserver::TreeChangeParams& params) { @@ -91,64 +87,6 @@ void RemoveChildImpl(ViewTreeNode* child, ViewTreeNode::Children* children) { } } -class ScopedSetActiveViewNotifier { - public: - ScopedSetActiveViewNotifier(ViewTreeNode* node, - View* old_view, - View* new_view) - : node_(node), - old_view_(old_view), - new_view_(new_view) { - FOR_EACH_OBSERVER( - ViewTreeNodeObserver, - *ViewTreeNodePrivate(node).observers(), - OnNodeActiveViewChange(node_, - old_view_, - new_view_, - ViewTreeNodeObserver::DISPOSITION_CHANGING)); - } - ~ScopedSetActiveViewNotifier() { - FOR_EACH_OBSERVER( - ViewTreeNodeObserver, - *ViewTreeNodePrivate(node_).observers(), - OnNodeActiveViewChange(node_, - old_view_, - new_view_, - ViewTreeNodeObserver::DISPOSITION_CHANGED)); - } - - private: - ViewTreeNode* node_; - View* old_view_; - View* new_view_; - - DISALLOW_COPY_AND_ASSIGN(ScopedSetActiveViewNotifier); -}; - -class ScopedDestructionNotifier { - public: - explicit ScopedDestructionNotifier(ViewTreeNode* node) - : node_(node) { - FOR_EACH_OBSERVER( - ViewTreeNodeObserver, - *ViewTreeNodePrivate(node_).observers(), - OnNodeDestroy(node_, ViewTreeNodeObserver::DISPOSITION_CHANGING)); - } - ~ScopedDestructionNotifier() { - FOR_EACH_OBSERVER( - ViewTreeNodeObserver, - *ViewTreeNodePrivate(node_).observers(), - OnNodeDestroy(node_, ViewTreeNodeObserver::DISPOSITION_CHANGED)); - } - - private: - ViewTreeNode* node_; - - DISALLOW_COPY_AND_ASSIGN(ScopedDestructionNotifier); -}; - -} // namespace - //////////////////////////////////////////////////////////////////////////////// // ViewTreeNode, public: @@ -176,24 +114,18 @@ void ViewTreeNode::RemoveObserver(ViewTreeNodeObserver* observer) { } void ViewTreeNode::AddChild(ViewTreeNode* child) { - if (manager_) - CHECK_EQ(ViewTreeNodePrivate(child).view_manager(), manager_); LocalAddChild(child); if (manager_) ViewManagerPrivate(manager_).synchronizer()->AddChild(child->id(), id_); } void ViewTreeNode::RemoveChild(ViewTreeNode* child) { - if (manager_) - CHECK_EQ(ViewTreeNodePrivate(child).view_manager(), manager_); LocalRemoveChild(child); if (manager_) ViewManagerPrivate(manager_).synchronizer()->RemoveChild(child->id(), id_); } bool ViewTreeNode::Contains(ViewTreeNode* child) const { - if (manager_) - CHECK_EQ(ViewTreeNodePrivate(child).view_manager(), manager_); for (ViewTreeNode* p = child->parent(); p; p = p->parent()) { if (p == this) return true; @@ -214,29 +146,25 @@ ViewTreeNode* ViewTreeNode::GetChildById(TransportNodeId id) { return NULL; } -void ViewTreeNode::SetActiveView(View* view) { - if (manager_) - CHECK_EQ(ViewPrivate(view).view_manager(), manager_); - LocalSetActiveView(view); - if (manager_) { - ViewManagerPrivate(manager_).synchronizer()->SetActiveView( - id_, active_view_->id()); - } -} - //////////////////////////////////////////////////////////////////////////////// // ViewTreeNode, protected: ViewTreeNode::ViewTreeNode() : manager_(NULL), id_(-1), - parent_(NULL), - active_view_(NULL) {} + parent_(NULL) {} ViewTreeNode::~ViewTreeNode() { - ScopedDestructionNotifier notifier(this); + FOR_EACH_OBSERVER( + ViewTreeNodeObserver, + observers_, + OnNodeDestroy(this, ViewTreeNodeObserver::DISPOSITION_CHANGING)); if (parent_) parent_->LocalRemoveChild(this); + FOR_EACH_OBSERVER( + ViewTreeNodeObserver, + observers_, + OnNodeDestroy(this, ViewTreeNodeObserver::DISPOSITION_CHANGED)); if (manager_) ViewManagerPrivate(manager_).RemoveNode(id_); } @@ -247,8 +175,7 @@ ViewTreeNode::~ViewTreeNode() { ViewTreeNode::ViewTreeNode(ViewManager* manager) : manager_(manager), id_(ViewManagerPrivate(manager).synchronizer()->CreateViewTreeNode()), - parent_(NULL), - active_view_(NULL) {} + parent_(NULL) {} void ViewTreeNode::LocalDestroy() { delete this; @@ -268,15 +195,6 @@ void ViewTreeNode::LocalRemoveChild(ViewTreeNode* child) { RemoveChildImpl(child, &children_); } -void ViewTreeNode::LocalSetActiveView(View* view) { - ScopedSetActiveViewNotifier notifier(this, active_view_, view); - if (active_view_) - ViewPrivate(active_view_).set_node(NULL); - active_view_ = view; - if (active_view_) - ViewPrivate(active_view_).set_node(this); -} - } // namespace view_manager } // namespace services } // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h b/mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h index ea7faf3..4837a97 100644 --- a/mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h +++ b/mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h @@ -5,6 +5,8 @@ #ifndef MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_LIB_VIEW_TREE_NODE_PRIVATE_H_ #define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_LIB_VIEW_TREE_NODE_PRIVATE_H_ +#include <vector> + #include "base/basictypes.h" #include "mojo/services/public/cpp/view_manager/view_tree_node.h" @@ -41,10 +43,6 @@ class ViewTreeNodePrivate { node_->LocalRemoveChild(child); } - void LocalSetActiveView(View* view) { - node_->LocalSetActiveView(view); - } - private: ViewTreeNode* node_; diff --git a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc index 6abcd4c..6505028 100644 --- a/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc +++ b/mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc @@ -8,8 +8,6 @@ #include "base/logging.h" #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" #include "mojo/services/public/cpp/view_manager/util.h" -#include "mojo/services/public/cpp/view_manager/view.h" -#include "mojo/services/public/cpp/view_manager/view_observer.h" #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h" #include "mojo/shell/shell_test_helper.h" #include "testing/gtest/include/gtest/gtest.h" @@ -247,68 +245,31 @@ TEST_F(ViewManagerTest, HierarchyChanged_NodeRemoved) { EXPECT_TRUE(tree2->children().empty()); } -// Utility class that waits for the destruction of some number of nodes and -// views. -class DestructionWaiter : public ViewTreeNodeObserver, - public ViewObserver { +class NodeDestroyed_Waiter : public ViewTreeNodeObserver { public: - // |nodes| or |views| can be NULL. - DestructionWaiter(ViewManager* view_manager, - std::set<TransportNodeId>* nodes, - std::set<TransportViewId>* views) - : nodes_(nodes), - views_(views) { - DCHECK(nodes || views); - if (nodes) { - for (std::set<TransportNodeId>::const_iterator it = nodes->begin(); - it != nodes->end(); ++it) { - view_manager->GetNodeById(*it)->AddObserver(this); - } - } - if (views) { - for (std::set<TransportViewId>::const_iterator it = views->begin(); - it != views->end(); ++it) { - view_manager->GetViewById(*it)->AddObserver(this); - } - } + NodeDestroyed_Waiter(ViewManager* view_manager, TransportNodeId id) + : id_(id), + view_manager_(view_manager) { + view_manager_->GetNodeById(id)->AddObserver(this); DoRunLoop(); } - - private: - // Overridden from ViewTreeNodeObserver: - virtual void OnNodeDestroy( - ViewTreeNode* node, - ViewTreeNodeObserver::DispositionChangePhase phase) OVERRIDE { - if (phase != ViewTreeNodeObserver::DISPOSITION_CHANGED) - return; - std::set<TransportNodeId>::const_iterator it = nodes_->find(node->id()); - if (it != nodes_->end()) - nodes_->erase(it); - if (CanQuit()) - QuitRunLoop(); + virtual ~NodeDestroyed_Waiter() { } - // Overridden from ViewObserver: - virtual void OnViewDestroy( - View* view, - ViewObserver::DispositionChangePhase phase) OVERRIDE { - if (phase != ViewObserver::DISPOSITION_CHANGED) + private: + // Overridden from TreeObserverBase: + virtual void OnNodeDestroy(ViewTreeNode* node, + DispositionChangePhase phase) OVERRIDE { + if (phase != DISPOSITION_CHANGED) return; - std::set<TransportViewId>::const_iterator it = views_->find(view->id()); - if (it != views_->end()) - views_->erase(it); - if (CanQuit()) + if (node->id() == id_) QuitRunLoop(); } - bool CanQuit() { - return (!nodes_ || nodes_->empty()) && (!views_ || views_->empty()); - } - - std::set<TransportNodeId>* nodes_; - std::set<TransportViewId>* views_; + TransportNodeId id_; + ViewManager* view_manager_; - DISALLOW_COPY_AND_ASSIGN(DestructionWaiter); + DISALLOW_COPY_AND_ASSIGN(NodeDestroyed_Waiter); }; TEST_F(ViewManagerTest, NodeDestroyed) { @@ -318,171 +279,23 @@ TEST_F(ViewManagerTest, NodeDestroyed) { // |node1| will be deleted after calling Destroy() below. TransportNodeId id = node1->id(); node1->Destroy(); - - std::set<TransportNodeId> nodes; - nodes.insert(id); - DestructionWaiter destroyed_waiter(view_manager_2(), &nodes, NULL); + NodeDestroyed_Waiter destroyed_waiter(view_manager_2(), id); EXPECT_TRUE(view_manager_2()->tree()->children().empty()); - EXPECT_EQ(NULL, view_manager_2()->GetNodeById(id)); } -TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNode) { +TEST_F(ViewManagerTest, ViewManagerDestroyed) { ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); TransportNodeId id = node1->id(); DestroyViewManager1(); - std::set<TransportNodeId> nodes; - nodes.insert(id); - DestructionWaiter destroyed_waiter(view_manager_2(), &nodes, NULL); + NodeDestroyed_Waiter destroyed_waiter(view_manager_2(), id); // tree() should still be valid, since it's owned by neither connection. EXPECT_TRUE(view_manager_2()->tree()->children().empty()); } -// Waits until the active view id of the supplied node changes. -class ActiveViewChangedWaiter : public ViewTreeNodeObserver { - public: - explicit ActiveViewChangedWaiter(ViewTreeNode* node) - : node_(node) { - node_->AddObserver(this); - DoRunLoop(); - } - virtual ~ActiveViewChangedWaiter() { - node_->RemoveObserver(this); - } - - private: - // Overridden from ViewTreeNodeObserver: - virtual void OnNodeActiveViewChange(ViewTreeNode* node, - View* old_view, - View* new_view, - DispositionChangePhase phase) OVERRIDE { - DCHECK_EQ(node, node_); - QuitRunLoop(); - } - - ViewTreeNode* node_; - - DISALLOW_COPY_AND_ASSIGN(ActiveViewChangedWaiter); -}; - -TEST_F(ViewManagerTest, SetActiveView) { - ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); - TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); - - View* view1 = View::Create(view_manager_1()); - node1->SetActiveView(view1); - - ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); - ActiveViewChangedWaiter waiter(node1_2); - - EXPECT_EQ(node1_2->active_view()->id(), view1->id()); -} - -TEST_F(ViewManagerTest, DestroyView) { - ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); - TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); - - View* view1 = View::Create(view_manager_1()); - node1->SetActiveView(view1); - - ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); - ActiveViewChangedWaiter active_view_waiter(node1_2); - - TransportViewId view1_id = view1->id(); - view1->Destroy(); - - std::set<TransportViewId> views; - views.insert(view1_id); - DestructionWaiter destruction_waiter(view_manager_2(), NULL, &views); - EXPECT_EQ(NULL, node1_2->active_view()); - EXPECT_EQ(NULL, view_manager_2()->GetViewById(view1_id)); -} - -// Destroying the connection that created a node and view should result in that -// node and view disappearing from all connections that see them. -TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) { - ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); - TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); - - View* view1 = View::Create(view_manager_1()); - node1->SetActiveView(view1); - - ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); - { - ActiveViewChangedWaiter active_view_waiter(node1_2); - } - - TransportNodeId node1_id = node1->id(); - TransportViewId view1_id = view1->id(); - - DestroyViewManager1(); - std::set<TransportNodeId> observed_nodes; - observed_nodes.insert(node1_id); - std::set<TransportViewId> observed_views; - observed_views.insert(view1_id); - DestructionWaiter destruction_waiter(view_manager_2(), - &observed_nodes, - &observed_views); - - // tree() should still be valid, since it's owned by neither connection. - EXPECT_TRUE(view_manager_2()->tree()->children().empty()); - EXPECT_EQ(NULL, view_manager_2()->GetNodeById(node1_id)); - EXPECT_EQ(NULL, view_manager_2()->GetViewById(view1_id)); -} - -// This test validates the following scenario: -// - a node originating from one connection -// - a view originating from a second connection -// + the connection originating the node is destroyed -// -> the view should still exist (since the second connection is live) but -// should be disconnected from any nodes. -TEST_F(ViewManagerTest, - ViewManagerDestroyed_CleanupNodeAndViewFromDifferentConnections) { - ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); - TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); - - View* view1_2 = View::Create(view_manager_2()); - ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id()); - node1_2->SetActiveView(view1_2); - - { - ActiveViewChangedWaiter active_view_waiter(node1); - } - - TransportNodeId node1_id = node1->id(); - TransportViewId view1_2_id = view1_2->id(); - - DestroyViewManager1(); - std::set<TransportNodeId> nodes; - nodes.insert(node1_id); - DestructionWaiter destruction_waiter(view_manager_2(), &nodes, NULL); - - // tree() should still be valid, since it's owned by neither connection. - EXPECT_TRUE(view_manager_2()->tree()->children().empty()); - // node1 was owned by the first connection, so it should be gone. - EXPECT_EQ(NULL, view_manager_2()->GetNodeById(node1_id)); - // view1_2 was owned by the second connection, so it should still exist, but - // disconnected from the node tree. - View* another_view1_2 = view_manager_2()->GetViewById(view1_2_id); - EXPECT_EQ(view1_2, another_view1_2); - EXPECT_EQ(NULL, view1_2->node()); -} - -// This test verifies that it is not possible to set the active view to a view -// defined in a different connection. -// TODO(beng): write these tests for ViewTreeNode::AddChild(), RemoveChild() and -// Contains(). -TEST_F(ViewManagerTest, SetActiveViewAcrossConnection) { - ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree()); - TreeSizeMatchesWaiter init_waiter(view_manager_2(), 2); - - View* view1_2 = View::Create(view_manager_2()); - EXPECT_DEATH(node1->SetActiveView(view1_2), ""); -} - } // namespace view_manager } // namespace services } // namespace mojo diff --git a/mojo/services/public/cpp/view_manager/view.h b/mojo/services/public/cpp/view_manager/view.h index 12ba55c..a0bba82 100644 --- a/mojo/services/public/cpp/view_manager/view.h +++ b/mojo/services/public/cpp/view_manager/view.h @@ -6,45 +6,14 @@ #define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ #include "base/basictypes.h" -#include "base/observer_list.h" -#include "mojo/services/public/cpp/view_manager/view_manager_types.h" namespace mojo { namespace services { namespace view_manager { -class ViewManager; -class ViewObserver; -class ViewTreeNode; - -// Views are owned by the ViewManager. class View { public: - static View* Create(ViewManager* manager); - - void Destroy(); - - TransportViewId id() const { return id_; } - ViewTreeNode* node() { return node_; } - - void AddObserver(ViewObserver* observer); - void RemoveObserver(ViewObserver* observer); - private: - friend class ViewPrivate; - - explicit View(ViewManager* manager); - View(); - ~View(); - - void LocalDestroy(); - - TransportViewId id_; - ViewTreeNode* node_; - ViewManager* manager_; - - ObserverList<ViewObserver> observers_; - DISALLOW_COPY_AND_ASSIGN(View); }; diff --git a/mojo/services/public/cpp/view_manager/view_manager.h b/mojo/services/public/cpp/view_manager/view_manager.h index 380974c..a06d566 100644 --- a/mojo/services/public/cpp/view_manager/view_manager.h +++ b/mojo/services/public/cpp/view_manager/view_manager.h @@ -17,7 +17,6 @@ class Shell; namespace services { namespace view_manager { -class View; class ViewManagerSynchronizer; class ViewTreeNode; @@ -45,19 +44,16 @@ class ViewManager { ViewTreeNode* tree() { return tree_; } ViewTreeNode* GetNodeById(TransportNodeId id); - View* GetViewById(TransportViewId id); private: friend class ViewManagerPrivate; typedef std::map<TransportNodeId, ViewTreeNode*> IdToNodeMap; - typedef std::map<TransportViewId, View*> IdToViewMap; Shell* shell_; scoped_ptr<ViewManagerSynchronizer> synchronizer_; ViewTreeNode* tree_; IdToNodeMap nodes_; - IdToViewMap views_; DISALLOW_COPY_AND_ASSIGN(ViewManager); }; diff --git a/mojo/services/public/cpp/view_manager/view_observer.h b/mojo/services/public/cpp/view_manager/view_observer.h deleted file mode 100644 index e08bac2..0000000 --- a/mojo/services/public/cpp/view_manager/view_observer.h +++ /dev/null @@ -1,35 +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_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ -#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ - -#include <vector> - -#include "base/basictypes.h" - -namespace mojo { -namespace services { -namespace view_manager { - -class View; - -class ViewObserver { - public: - enum DispositionChangePhase { - DISPOSITION_CHANGING, - DISPOSITION_CHANGED - }; - - virtual void OnViewDestroy(View* view, DispositionChangePhase phase) {} - - protected: - virtual ~ViewObserver() {} -}; - -} // namespace view_manager -} // namespace services -} // namespace mojo - -#endif // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_OBSERVER_H_ diff --git a/mojo/services/public/cpp/view_manager/view_tree_node.h b/mojo/services/public/cpp/view_manager/view_tree_node.h index e1f9058..b2af9cb 100644 --- a/mojo/services/public/cpp/view_manager/view_tree_node.h +++ b/mojo/services/public/cpp/view_manager/view_tree_node.h @@ -15,7 +15,6 @@ namespace mojo { namespace services { namespace view_manager { -class View; class ViewManager; class ViewTreeNodeObserver; @@ -51,10 +50,6 @@ class ViewTreeNode { ViewTreeNode* GetChildById(TransportNodeId id); - // View. - void SetActiveView(View* view); - View* active_view() { return active_view_; } - protected: // This class is subclassed only by test classes that provide a public ctor. ViewTreeNode(); @@ -68,7 +63,6 @@ class ViewTreeNode { void LocalDestroy(); void LocalAddChild(ViewTreeNode* child); void LocalRemoveChild(ViewTreeNode* child); - void LocalSetActiveView(View* view); ViewManager* manager_; TransportNodeId id_; @@ -77,8 +71,6 @@ class ViewTreeNode { ObserverList<ViewTreeNodeObserver> observers_; - View* active_view_; - DISALLOW_COPY_AND_ASSIGN(ViewTreeNode); }; diff --git a/mojo/services/public/cpp/view_manager/view_tree_node_observer.h b/mojo/services/public/cpp/view_manager/view_tree_node_observer.h index cd5da9d..ac55ae6 100644 --- a/mojo/services/public/cpp/view_manager/view_tree_node_observer.h +++ b/mojo/services/public/cpp/view_manager/view_tree_node_observer.h @@ -13,7 +13,6 @@ namespace mojo { namespace services { namespace view_manager { -class View; class ViewTreeNode; class ViewTreeNodeObserver { @@ -37,11 +36,6 @@ class ViewTreeNodeObserver { virtual void OnNodeDestroy(ViewTreeNode* node, DispositionChangePhase phase) {} - virtual void OnNodeActiveViewChange(ViewTreeNode* node, - View* old_view, - View* new_view, - DispositionChangePhase phase) {} - protected: virtual ~ViewTreeNodeObserver() {} }; diff --git a/mojo/services/public/interfaces/view_manager/view_manager.mojom b/mojo/services/public/interfaces/view_manager/view_manager.mojom index afb2ab7..4aa0fdb 100644 --- a/mojo/services/public/interfaces/view_manager/view_manager.mojom +++ b/mojo/services/public/interfaces/view_manager/view_manager.mojom @@ -96,7 +96,9 @@ interface IViewManagerClient { uint32 client_change_id); // Invoked when a node is deleted. - OnNodeDeleted(uint32 node, uint32 server_change_id, uint32 client_change_id); + OnNodeDeleted(uint32 node, + uint32 server_change_id, + uint32 client_change_id); // Invoked when the view associated with a node is replaced by another view. @@ -105,9 +107,6 @@ interface IViewManagerClient { uint32 new_view_id, uint32 old_view_id, uint32 client_change_id); - - // Invoked when a view is deleted. - OnViewDeleted(uint32 view, uint32 server_change_id, uint32 client_change_id); }; } diff --git a/mojo/services/view_manager/root_node_manager.cc b/mojo/services/view_manager/root_node_manager.cc index c5af14e..77ebfcf 100644 --- a/mojo/services/view_manager/root_node_manager.cc +++ b/mojo/services/view_manager/root_node_manager.cc @@ -116,15 +116,6 @@ void RootNodeManager::NotifyNodeDeleted(const NodeId& node) { } } -void RootNodeManager::NotifyViewDeleted(const ViewId& view) { - // TODO(sky): make a macro for this. - for (ConnectionMap::iterator i = connection_map_.begin(); - i != connection_map_.end(); ++i) { - i->second->NotifyViewDeleted(view, next_server_change_id_, - GetClientChangeId(i->first)); - } -} - void RootNodeManager::PrepareForChange(ViewManagerConnection* connection, TransportChangeId change_id) { DCHECK(!change_.get()); // Should only ever have one change in flight. diff --git a/mojo/services/view_manager/root_node_manager.h b/mojo/services/view_manager/root_node_manager.h index e2e286c..e040416 100644 --- a/mojo/services/view_manager/root_node_manager.h +++ b/mojo/services/view_manager/root_node_manager.h @@ -85,7 +85,6 @@ class MOJO_VIEW_MANAGER_EXPORT RootNodeManager : public NodeDelegate { const ViewId& new_view_id, const ViewId& old_view_id); void NotifyNodeDeleted(const NodeId& node); - void NotifyViewDeleted(const ViewId& view); private: // Used to setup any static state needed by RootNodeManager. diff --git a/mojo/services/view_manager/view_manager_connection.cc b/mojo/services/view_manager/view_manager_connection.cc index 837b685..176d8ee 100644 --- a/mojo/services/view_manager/view_manager_connection.cc +++ b/mojo/services/view_manager/view_manager_connection.cc @@ -136,14 +136,6 @@ void ViewManagerConnection::NotifyNodeDeleted( client_change_id); } -void ViewManagerConnection::NotifyViewDeleted( - const ViewId& view, - TransportChangeId server_change_id, - TransportChangeId client_change_id) { - client()->OnViewDeleted(ViewIdToTransportId(view), server_change_id, - client_change_id); -} - bool ViewManagerConnection::DeleteNodeImpl(ViewManagerConnection* source, const NodeId& node_id, TransportChangeId change_id) { @@ -181,7 +173,6 @@ bool ViewManagerConnection::DeleteViewImpl(ViewManagerConnection* source, view->node()->SetView(NULL); view_map_.erase(view_id.view_id); delete view; - context()->NotifyViewDeleted(view_id); return true; } diff --git a/mojo/services/view_manager/view_manager_connection.h b/mojo/services/view_manager/view_manager_connection.h index c12e7ef..bebbee9 100644 --- a/mojo/services/view_manager/view_manager_connection.h +++ b/mojo/services/view_manager/view_manager_connection.h @@ -63,9 +63,6 @@ class MOJO_VIEW_MANAGER_EXPORT ViewManagerConnection void NotifyNodeDeleted(const NodeId& node, TransportChangeId server_change_id, TransportChangeId client_change_id); - void NotifyViewDeleted(const ViewId& view, - TransportChangeId server_change_id, - TransportChangeId client_change_id); private: typedef std::map<TransportConnectionSpecificNodeId, Node*> NodeMap; diff --git a/mojo/services/view_manager/view_manager_connection_unittest.cc b/mojo/services/view_manager/view_manager_connection_unittest.cc index 8424dd0..221e804 100644 --- a/mojo/services/view_manager/view_manager_connection_unittest.cc +++ b/mojo/services/view_manager/view_manager_connection_unittest.cc @@ -239,17 +239,6 @@ class ViewManagerClientImpl : public IViewManagerClient { NodeIdToString(node).c_str())); QuitIfNecessary(); } - virtual void OnViewDeleted(TransportViewId view, - TransportChangeId server_change_id, - TransportChangeId client_change_id) OVERRIDE { - changes_.push_back( - base::StringPrintf( - "ViewDeleted change_id=%d,%d view=%s", - static_cast<int>(client_change_id), - static_cast<int>(client_change_id), - NodeIdToString(view).c_str())); - QuitIfNecessary(); - } virtual void OnNodeViewReplaced(TransportNodeId node, TransportViewId new_view_id, TransportViewId old_view_id, @@ -694,7 +683,7 @@ TEST_F(ViewManagerConnectionTest, SetViewFromSecondConnection) { client_.DoRunLoopUntilChangesCount(1); Changes changes(client_.GetAndClearChanges()); - ASSERT_EQ(2u, changes.size()); + ASSERT_EQ(1u, changes.size()); EXPECT_EQ("change_id=0 node=1,1 new_view=null old_view=2,51", changes[0]); } } |