| Index: ui/views/widget/widget_unittest.cc
|
| diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
|
| index fe51c6f0e0acaa603e2e2729994e0d3907ffe58a..52845e5ed925fc9141065f1f52e2ac2e7a8ccfc2 100644
|
| --- a/ui/views/widget/widget_unittest.cc
|
| +++ b/ui/views/widget/widget_unittest.cc
|
| @@ -738,8 +738,6 @@
|
| void OnWidgetDestroying(Widget* widget) override {
|
| if (active_ == widget)
|
| active_ = nullptr;
|
| - if (widget_activated_ == widget)
|
| - widget_activated_ = nullptr;
|
| widget_closed_ = widget;
|
| }
|
|
|
| @@ -810,10 +808,11 @@
|
| Widget* widget_to_close_on_hide_;
|
| };
|
|
|
| -TEST_F(WidgetObserverTest, ActivationChange) {
|
| +TEST_F(WidgetObserverTest, DISABLED_ActivationChange) {
|
| WidgetAutoclosePtr toplevel(CreateTopLevelPlatformWidget());
|
| - WidgetAutoclosePtr toplevel1(NewWidget());
|
| - WidgetAutoclosePtr toplevel2(NewWidget());
|
| +
|
| + Widget* toplevel1 = NewWidget();
|
| + Widget* toplevel2 = NewWidget();
|
|
|
| toplevel1->Show();
|
| toplevel2->Show();
|
| @@ -823,82 +822,20 @@
|
| toplevel1->Activate();
|
|
|
| RunPendingMessages();
|
| - EXPECT_EQ(toplevel1.get(), widget_activated());
|
| + EXPECT_EQ(toplevel1, widget_activated());
|
|
|
| toplevel2->Activate();
|
| RunPendingMessages();
|
| - EXPECT_EQ(toplevel1.get(), widget_deactivated());
|
| - EXPECT_EQ(toplevel2.get(), widget_activated());
|
| - EXPECT_EQ(toplevel2.get(), active());
|
| -}
|
| -
|
| -namespace {
|
| -
|
| -// This class simulates a focus manager that moves focus to a second widget when
|
| -// the first one is closed. It simulates a situation where a sequence of widget
|
| -// observers might try to call Widget::Close in response to a OnWidgetClosing().
|
| -class WidgetActivationForwarder : public TestWidgetObserver {
|
| - public:
|
| - WidgetActivationForwarder(Widget* current_active_widget,
|
| - Widget* widget_to_activate)
|
| - : TestWidgetObserver(current_active_widget),
|
| - widget_to_activate_(widget_to_activate) {}
|
| -
|
| - ~WidgetActivationForwarder() override {}
|
| -
|
| - private:
|
| - // WidgetObserver overrides:
|
| - void OnWidgetClosing(Widget* widget) override {
|
| - widget->OnNativeWidgetActivationChanged(false);
|
| - widget_to_activate_->Activate();
|
| - }
|
| - void OnWidgetActivationChanged(Widget* widget, bool active) override {
|
| - if (!active)
|
| - widget->Close();
|
| - }
|
| -
|
| - Widget* widget_to_activate_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WidgetActivationForwarder);
|
| -};
|
| -
|
| -// This class observes a widget and counts the number of times OnWidgetClosing
|
| -// is called.
|
| -class WidgetCloseCounter : public TestWidgetObserver {
|
| - public:
|
| - explicit WidgetCloseCounter(Widget* widget) : TestWidgetObserver(widget) {}
|
| -
|
| - ~WidgetCloseCounter() override {}
|
| -
|
| - int close_count() const { return close_count_; }
|
| -
|
| - private:
|
| - // WidgetObserver overrides:
|
| - void OnWidgetClosing(Widget* widget) override { close_count_++; }
|
| -
|
| - int close_count_ = 0;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WidgetCloseCounter);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -// Makes sure close notifications aren't sent more than once when a Widget is
|
| -// shutting down. Test for crbug.com/714334
|
| -TEST_F(WidgetObserverTest, CloseReentrancy) {
|
| - Widget* widget1 = CreateTopLevelPlatformWidget();
|
| - Widget* widget2 = CreateTopLevelPlatformWidget();
|
| - WidgetCloseCounter counter(widget1);
|
| - WidgetActivationForwarder focus_manager(widget1, widget2);
|
| - widget1->Close();
|
| - EXPECT_EQ(1, counter.close_count());
|
| - widget2->Close();
|
| -}
|
| -
|
| -TEST_F(WidgetObserverTest, VisibilityChange) {
|
| + EXPECT_EQ(toplevel1, widget_deactivated());
|
| + EXPECT_EQ(toplevel2, widget_activated());
|
| + EXPECT_EQ(toplevel2, active());
|
| +}
|
| +
|
| +TEST_F(WidgetObserverTest, DISABLED_VisibilityChange) {
|
| WidgetAutoclosePtr toplevel(CreateTopLevelPlatformWidget());
|
| - WidgetAutoclosePtr child1(NewWidget());
|
| - WidgetAutoclosePtr child2(NewWidget());
|
| +
|
| + Widget* child1 = NewWidget();
|
| + Widget* child2 = NewWidget();
|
|
|
| toplevel->Show();
|
| child1->Show();
|
| @@ -907,16 +844,16 @@
|
| reset();
|
|
|
| child1->Hide();
|
| - EXPECT_EQ(child1.get(), widget_hidden());
|
| + EXPECT_EQ(child1, widget_hidden());
|
|
|
| child2->Hide();
|
| - EXPECT_EQ(child2.get(), widget_hidden());
|
| + EXPECT_EQ(child2, widget_hidden());
|
|
|
| child1->Show();
|
| - EXPECT_EQ(child1.get(), widget_shown());
|
| + EXPECT_EQ(child1, widget_shown());
|
|
|
| child2->Show();
|
| - EXPECT_EQ(child2.get(), widget_shown());
|
| + EXPECT_EQ(child2, widget_shown());
|
| }
|
|
|
| TEST_F(WidgetObserverTest, DestroyBubble) {
|
|
|