| 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 d39fac8f33b52411a114e3361c93a27a2433f498..693e91a4bce2675748ecf9f45bcd4f23a962ff54 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
|
| @@ -528,6 +528,117 @@ TEST_F(ViewManagerTest, DISABLED_Reorder) {
|
| }
|
| }
|
|
|
| +namespace {
|
| +
|
| +class VisibilityChangeObserver : public ViewObserver {
|
| + public:
|
| + explicit VisibilityChangeObserver(View* view) : view_(view) {
|
| + view_->AddObserver(this);
|
| + }
|
| + virtual ~VisibilityChangeObserver() { view_->RemoveObserver(this); }
|
| +
|
| + private:
|
| + // Overridden from ViewObserver:
|
| + virtual void OnViewVisibilityChanged(View* view) OVERRIDE {
|
| + EXPECT_EQ(view, view_);
|
| + QuitRunLoop();
|
| + }
|
| +
|
| + View* view_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(VisibilityChangeObserver);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +TEST_F(ViewManagerTest, DISABLED_Visible) {
|
| + View* view1 = View::Create(window_manager());
|
| + window_manager()->GetRoots().front()->AddChild(view1);
|
| +
|
| + // Embed another app and verify initial state.
|
| + ViewManager* embedded = Embed(window_manager(), view1);
|
| + ASSERT_EQ(1u, embedded->GetRoots().size());
|
| + View* embedded_root = embedded->GetRoots().front();
|
| + EXPECT_TRUE(embedded_root->visible());
|
| + EXPECT_TRUE(embedded_root->IsDrawn());
|
| +
|
| + // Change the visible state from the first connection and verify its mirrored
|
| + // correctly to the embedded app.
|
| + {
|
| + VisibilityChangeObserver observer(embedded_root);
|
| + view1->SetVisible(false);
|
| + DoRunLoop();
|
| + }
|
| +
|
| + EXPECT_FALSE(view1->visible());
|
| + EXPECT_FALSE(view1->IsDrawn());
|
| +
|
| + EXPECT_FALSE(embedded_root->visible());
|
| + EXPECT_FALSE(embedded_root->IsDrawn());
|
| +
|
| + // Make the node visible again.
|
| + {
|
| + VisibilityChangeObserver observer(embedded_root);
|
| + view1->SetVisible(true);
|
| + DoRunLoop();
|
| + }
|
| +
|
| + EXPECT_TRUE(view1->visible());
|
| + EXPECT_TRUE(view1->IsDrawn());
|
| +
|
| + EXPECT_TRUE(embedded_root->visible());
|
| + EXPECT_TRUE(embedded_root->IsDrawn());
|
| +}
|
| +
|
| +namespace {
|
| +
|
| +class DrawnChangeObserver : public ViewObserver {
|
| + public:
|
| + explicit DrawnChangeObserver(View* view) : view_(view) {
|
| + view_->AddObserver(this);
|
| + }
|
| + virtual ~DrawnChangeObserver() { view_->RemoveObserver(this); }
|
| +
|
| + private:
|
| + // Overridden from ViewObserver:
|
| + virtual void OnViewDrawnChanged(View* view) OVERRIDE {
|
| + EXPECT_EQ(view, view_);
|
| + QuitRunLoop();
|
| + }
|
| +
|
| + View* view_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DrawnChangeObserver);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +TEST_F(ViewManagerTest, DISABLED_Drawn) {
|
| + View* view1 = View::Create(window_manager());
|
| + window_manager()->GetRoots().front()->AddChild(view1);
|
| +
|
| + // Embed another app and verify initial state.
|
| + ViewManager* embedded = Embed(window_manager(), view1);
|
| + ASSERT_EQ(1u, embedded->GetRoots().size());
|
| + View* embedded_root = embedded->GetRoots().front();
|
| + EXPECT_TRUE(embedded_root->visible());
|
| + EXPECT_TRUE(embedded_root->IsDrawn());
|
| +
|
| + // Change the visibility of the root, this should propagate a drawn state
|
| + // change to |embedded|.
|
| + {
|
| + DrawnChangeObserver observer(embedded_root);
|
| + window_manager()->GetRoots().front()->SetVisible(false);
|
| + DoRunLoop();
|
| + }
|
| +
|
| + EXPECT_TRUE(view1->visible());
|
| + EXPECT_FALSE(view1->IsDrawn());
|
| +
|
| + EXPECT_TRUE(embedded_root->visible());
|
| + EXPECT_FALSE(embedded_root->IsDrawn());
|
| +}
|
| +
|
| // TODO(beng): tests for view event dispatcher.
|
| // - verify that we see events for all views.
|
|
|
|
|