aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDaniel d'Andrada <daniel.dandrada@nokia.com>2010-11-22 11:45:13 +0200
committerDaniel d'Andrada <daniel.dandrada@nokia.com>2010-11-23 11:23:19 +0200
commit671260be85d7492ceb8fdce3c9c31b3a598aad06 (patch)
tree77870979a2191adc251f379b8ba1d28d8d1c4929 /tests
parent55261fec9575ceaf96c6da80e80e3a07eee9f799 (diff)
Fixes: NB#205177 - Navigation bar unnecessarily disappears and reappears when switching pages
RevBy: Marcin Miklas
Diffstat (limited to 'tests')
-rw-r--r--tests/ut_mapplicationwindow/ut_mapplicationwindow.cpp65
-rw-r--r--tests/ut_mapplicationwindow/ut_mapplicationwindow.h4
-rw-r--r--tests/ut_mnavigationbarview/ut_mnavigationbarview.pro6
3 files changed, 56 insertions, 19 deletions
diff --git a/tests/ut_mapplicationwindow/ut_mapplicationwindow.cpp b/tests/ut_mapplicationwindow/ut_mapplicationwindow.cpp
index 77d2c9aa..25523836 100644
--- a/tests/ut_mapplicationwindow/ut_mapplicationwindow.cpp
+++ b/tests/ut_mapplicationwindow/ut_mapplicationwindow.cpp
@@ -315,7 +315,7 @@ void Ut_MApplicationWindow::testComponentsDisplayMode()
MSceneWindow *navigationBar = m_subject->d_func()->navigationBar;
QCOMPARE(homeButtonPanel->sceneWindowState(), MSceneWindow::Appeared);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->sceneWindowState(), MSceneWindow::Appeared);
page->setComponentsDisplayMode(MApplicationPage::AllComponents, MApplicationPageModel::Hide);
@@ -468,8 +468,12 @@ void Ut_MApplicationWindow::testTabBarMovesFromNavigationBarToFloatingWhenRotate
QVERIFY(isToolBarFloating());
}
-void Ut_MApplicationWindow::fastForwardDisappearAppearAnimations(MSceneWindow *sceneWindow)
+void Ut_MApplicationWindow::processEventsAndFastForwardDisappearAppearAnimations(MSceneWindow *sceneWindow)
{
+ // For the navigation bar case, updates on its scene window state based on its "isEmpty"
+ // property are deferred to a separate event.
+ QCoreApplication::processEvents();
+
// we can have at most 1 ongoing and 1 queued disappearing/appearing animation
// ensure both animations are fast forwarded
m_subject->sceneManager()->fastForwardSceneWindowTransitionAnimation(sceneWindow);
@@ -572,7 +576,7 @@ void Ut_MApplicationWindow::testNavigationBarVisibility()
m_subject->sceneManager()->appearSceneWindow(page);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), navbarVisibility);
delete page;
@@ -604,27 +608,27 @@ void Ut_MApplicationWindow::testNavigationBarVisibilityFloatableTabbar()
m_subject->sceneManager()->appearSceneWindowNow(page);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
page->addAction(menuAction);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
page->removeAction(menuAction);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
page->setEscapeMode(MApplicationPageModel::EscapeManualBack);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
page->setEscapeMode(MApplicationPageModel::EscapeAuto);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
delete page;
@@ -656,38 +660,38 @@ void Ut_MApplicationWindow::testNavigationBarVisibilityDockedTabbar()
m_subject->sceneManager()->appearSceneWindowNow(page);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
page->removeAction(action1);
page->removeAction(action2);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
page->addAction(menuAction);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
page->removeAction(menuAction);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
page->setEscapeMode(MApplicationPageModel::EscapeManualBack);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
page->setEscapeMode(MApplicationPageModel::EscapeAuto);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
page->addAction(action1);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
delete page;
@@ -704,11 +708,11 @@ void Ut_MApplicationWindow::testNavigationBarVisibilityHideToolbarAction()
action->setLocation(MAction::ToolBarLocation);
m_subject->addAction(action);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), true);
action->setVisible(false);
- fastForwardDisappearAppearAnimations(navigationBar);
+ processEventsAndFastForwardDisappearAppearAnimations(navigationBar);
QCOMPARE(navigationBar->isVisible(), false);
}
@@ -747,4 +751,31 @@ void Ut_MApplicationWindow::testNavigationBarOpacity()
QCOMPARE(navigationBar->opacity(), (qreal)0.5);
}
+// Regression test for NB#205177
+// https://projects.maemo.org/bugzilla/show_bug.cgi?id=205177
+void Ut_MApplicationWindow::testGoingBackDoesntMakeNavigationBarDisappearAndReappear()
+{
+ MApplicationPage *rootPage = new MApplicationPage;
+ MApplicationPage *subPage = new MApplicationPage;
+ MAction *action;
+ MNavigationBar* navigationBar = m_subject->d_func()->navigationBar;
+ MSceneManager *sceneManager = m_subject->sceneManager();
+
+ action = new MAction(rootPage);
+ action->setText("foo bar");
+ action->setLocation(MAction::ApplicationMenuLocation);
+ rootPage->addAction(action);
+
+ sceneManager->appearSceneWindowNow(rootPage);
+ sceneManager->appearSceneWindowNow(subPage);
+
+ QCOMPARE(navigationBar->sceneWindowState(), MSceneWindow::Appeared);
+
+ sceneManager->dismissSceneWindow(subPage);
+
+ // Navigation bar shouldn't go away since the root page needs the navigation
+ // bar to at least display a application menu button.
+ QCOMPARE(navigationBar->sceneWindowState(), MSceneWindow::Appeared);
+}
+
QTEST_MAIN(Ut_MApplicationWindow)
diff --git a/tests/ut_mapplicationwindow/ut_mapplicationwindow.h b/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
index 13774c2b..05b162fc 100644
--- a/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
+++ b/tests/ut_mapplicationwindow/ut_mapplicationwindow.h
@@ -93,13 +93,15 @@ private slots:
void testFirstPageWithCustomNavigationBarContent();
void testNavigationBarOpacity();
+ void testGoingBackDoesntMakeNavigationBarDisappearAndReappear();
+
private:
MApplicationWindow *m_subject;
MComponentData *m_componentData;
void initToolbarLocationTC(M::OrientationAngle angle, const QString &viewType);
bool isToolBarFloating();
- void fastForwardDisappearAppearAnimations(MSceneWindow* sceneWindow);
+ void processEventsAndFastForwardDisappearAppearAnimations(MSceneWindow* sceneWindow);
};
diff --git a/tests/ut_mnavigationbarview/ut_mnavigationbarview.pro b/tests/ut_mnavigationbarview/ut_mnavigationbarview.pro
index 61a5c008..79aab01b 100644
--- a/tests/ut_mnavigationbarview/ut_mnavigationbarview.pro
+++ b/tests/ut_mnavigationbarview/ut_mnavigationbarview.pro
@@ -1,6 +1,10 @@
include(../common_top.pri)
-INCLUDEPATH += $$MSRCDIR/corelib/widgets $$MSRCDIR/corelib/style $$MSRCDIR/views
+INCLUDEPATH += \
+ $$MSRCDIR/corelib/core \
+ $$MSRCDIR/corelib/widgets \
+ $$MSRCDIR/corelib/style \
+ $$MSRCDIR/views
TARGET = ut_mnavigationbarview