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

Unified Diff: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc

Issue 315863002: Fix destruction tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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/public/cpp/view_manager/lib/view_manager_synchronizer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/services/public/cpp/view_manager/tests/view_manager_unittest.cc
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 e69be9c6b13263b339c4efc4e229399ad2f32bea..6ce1b20746e9592a3ce84f0f3efc2073eb8fc91b 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
@@ -50,15 +50,14 @@ void WaitForAllChangesToBeAcked(ViewManager* manager) {
ViewManagerPrivate(manager).synchronizer()->ClearChangesAckedCallback();
}
-// Used with IViewManager::Connect(). Creates a TestViewManagerClientConnection,
-// which creates and owns the ViewManagerProxy.
class ConnectServiceLoader : public ServiceLoader {
public:
explicit ConnectServiceLoader(base::Callback<void(ViewManager*)> callback)
: callback_(callback) {}
virtual ~ConnectServiceLoader() {}
- // ServiceLoader:
+ private:
+ // Overridden from ServiceLoader:
virtual void LoadService(ServiceManager* manager,
const GURL& url,
ScopedMessagePipeHandle shell_handle) OVERRIDE {
@@ -70,7 +69,6 @@ class ConnectServiceLoader : public ServiceLoader {
const GURL& url) OVERRIDE {
}
- private:
ScopedVector<Application> apps_;
base::Callback<void(ViewManager*)> callback_;
@@ -322,6 +320,10 @@ class ViewManagerTest : public testing::Test {
return view_manager;
}
+ void UnloadApplication(const GURL& url) {
+ test_helper_.SetLoaderForURL(scoped_ptr<ServiceLoader>(), url);
+ }
+
private:
// Overridden from testing::Test:
virtual void SetUp() OVERRIDE {
@@ -476,19 +478,20 @@ TEST_F(ViewManagerTest, NodeDestroyed) {
EXPECT_EQ(NULL, embedded->GetNodeById(id));
}
-// TODO(beng): provide a way to terminate an application.
-TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupNode) {
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree());
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2);
+TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNode) {
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager());
+ window_manager()->tree()->AddChild(node);
+ ViewManager* embedded = Embed(window_manager(), node);
+
+ TransportNodeId node_id = node->id();
+
+ UnloadApplication(GURL(kTestServiceURL));
- TransportNodeId id = node1->id();
- DestroyViewManager1();
std::set<TransportNodeId> nodes;
- nodes.insert(id);
- WaitForDestruction(view_manager_2(), &nodes, NULL);
+ nodes.insert(node_id);
+ WaitForDestruction(embedded, &nodes, NULL);
- // tree() should still be valid, since it's owned by neither connection.
- EXPECT_TRUE(view_manager_2()->tree()->children().empty());
+ EXPECT_EQ(NULL, embedded->tree());
}
TEST_F(ViewManagerTest, SetActiveView) {
@@ -530,30 +533,27 @@ TEST_F(ViewManagerTest, DestroyView) {
// 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, DISABLED_ViewManagerDestroyed_CleanupNodeAndView) {
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree());
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2);
-
- View* view1 = View::Create(view_manager_1());
- node1->SetActiveView(view1);
+TEST_F(ViewManagerTest, ViewManagerDestroyed_CleanupNodeAndView) {
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager());
+ window_manager()->tree()->AddChild(node);
+ View* view = View::Create(window_manager());
+ node->SetActiveView(view);
+ ViewManager* embedded = Embed(window_manager(), node);
- ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id());
- WaitForActiveViewToChange(node1_2);
+ TransportNodeId node_id = node->id();
+ TransportViewId view_id = view->id();
- TransportNodeId node1_id = node1->id();
- TransportViewId view1_id = view1->id();
+ UnloadApplication(GURL(kTestServiceURL));
- DestroyViewManager1();
std::set<TransportNodeId> observed_nodes;
- observed_nodes.insert(node1_id);
+ observed_nodes.insert(node_id);
std::set<TransportViewId> observed_views;
- observed_views.insert(view1_id);
- WaitForDestruction(view_manager_2(), &observed_nodes, &observed_views);
+ observed_views.insert(view_id);
+ WaitForDestruction(embedded, &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));
+ EXPECT_EQ(NULL, embedded->tree());
+ EXPECT_EQ(NULL, embedded->GetNodeById(node_id));
+ EXPECT_EQ(NULL, embedded->GetViewById(view_id));
}
// This test validates the following scenario:
@@ -563,32 +563,31 @@ TEST_F(ViewManagerTest, DISABLED_ViewManagerDestroyed_CleanupNodeAndView) {
// -> the view should still exist (since the second connection is live) but
// should be disconnected from any nodes.
TEST_F(ViewManagerTest,
- DISABLED_ViewManagerDestroyed_CleanupNodeAndViewFromDifferentConnections) {
- ViewTreeNode* node1 = CreateNodeInParent(view_manager_1()->tree());
- WaitForTreeSizeToMatch(view_manager_2()->tree(), 2);
+ ViewManagerDestroyed_CleanupNodeAndViewFromDifferentConnections) {
+ ViewTreeNode* node = ViewTreeNode::Create(window_manager());
+ window_manager()->tree()->AddChild(node);
+ ViewManager* embedded = Embed(window_manager(), node);
+ View* view_in_embedded = View::Create(embedded);
+ ViewTreeNode* node_in_embedded = embedded->GetNodeById(node->id());
+ node_in_embedded->SetActiveView(view_in_embedded);
- View* view1_2 = View::Create(view_manager_2());
- ViewTreeNode* node1_2 = view_manager_2()->tree()->GetChildById(node1->id());
- node1_2->SetActiveView(view1_2);
- WaitForActiveViewToChange(node1);
+ WaitForActiveViewToChange(node);
- TransportNodeId node1_id = node1->id();
- TransportViewId view1_2_id = view1_2->id();
+ TransportNodeId node_id = node->id();
+ TransportViewId view_id = view_in_embedded->id();
- DestroyViewManager1();
+ UnloadApplication(GURL(kTestServiceURL));
std::set<TransportNodeId> nodes;
- nodes.insert(node1_id);
- WaitForDestruction(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());
+ nodes.insert(node_id);
+ WaitForDestruction(embedded, &nodes, NULL);
+
+ EXPECT_EQ(NULL, embedded->tree());
+ // node was owned by the window manager, so it should be gone.
+ EXPECT_EQ(NULL, embedded->GetNodeById(node_id));
+ // view_in_embedded was owned by the embedded app, so it should still exist,
+ // but disconnected from the node tree.
+ EXPECT_EQ(view_in_embedded, embedded->GetViewById(view_id));
+ EXPECT_EQ(NULL, view_in_embedded->node());
}
// This test verifies that it is not possible to set the active view to a view
« no previous file with comments | « mojo/services/public/cpp/view_manager/lib/view_manager_synchronizer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698