phoneapp/phoneuiqtviewadapter/tsrc/ut_phonevisibilityhandler/unit_tests.cpp
changeset 46 bc5a64e5bc3c
parent 45 6b911d05207e
child 65 2a5d4ab426d3
--- a/phoneapp/phoneuiqtviewadapter/tsrc/ut_phonevisibilityhandler/unit_tests.cpp	Wed Jun 23 18:12:20 2010 +0300
+++ b/phoneapp/phoneuiqtviewadapter/tsrc/ut_phonevisibilityhandler/unit_tests.cpp	Tue Jul 06 14:15:47 2010 +0300
@@ -27,12 +27,16 @@
 #include <telinformationpskeys.h>
 #include <coreapplicationuisdomainpskeys.h>
 #include <ccallinfoiter.h>
+#include <keyguardaccessapi.h>
 #include "phoneuiqtviewif.h"
 #define private public
 #include "phonevisibilityhandler.h"
 #undef public
 
 int m_callCount = 0;
+int g_keyGuardEnabled = false;
+int g_enableKeyGuardCalled = false;
+int g_disableKeyGuardCalled = false;
 
 #define PHONE_TEST_MAIN(TestObject) \
 int main(int argc, char *argv[]) \
@@ -63,26 +67,26 @@
 
     // From PhoneUIQtViewIF
     BubbleManagerIF& bubbleManager () {};
-    void addBubbleCommand (int bubbleId, const PhoneAction& action) {};
-    void clearBubbleCommands (int bubbleId) {};
+    void addBubbleCommand (int , const PhoneAction& ) {};
+    void clearBubbleCommands (int ) {};
     void addParticipantListAction(
-            int commandId,  
-            const QString &text, 
-            const HbIcon &icon) {};
+            int ,  
+            const QString &, 
+            const HbIcon &) {};
     void clearParticipantListActions() {};
     void hideToolbar () {};
     void showToolbar () {};
-    void setToolbarActions (const QList<PhoneAction*>& actions) {};
+    void setToolbarActions (const QList<PhoneAction*>& ) {};
     int volumeSliderValue () {};
     void removeVolumeSlider () {};
     void setVolumeSliderValue (
-            int value, 
-            int commandId, 
-            int maxVolumeValue, 
-            int minVolumeValue ) {};
+            int , 
+            int , 
+            int , 
+            int  ) {};
 
-    void setExpandAction(int bubbleId, int commandId) {};
-    void removeExpandAction(int bubbleId) {};
+    void setExpandAction(int , int ) {};
+    void removeExpandAction(int ) {};
     void showDialpad() {};
     void hideDialpad() {};
     bool isDialpadVisible() {};
@@ -90,10 +94,13 @@
     void clearAndHideDialpad() {};
     void clearDialpad() {};
     void bringToForeground() { m_bringToForegroundCalled = true;};
-    void setMenuActions(const QList<PhoneAction*>& actions) {};
+    void setMenuActions(const QList<PhoneAction*>& ) {};
     void shutdownPhoneApp() {};
-    void setBackButtonVisible(bool visible) {};
+    void setBackButtonVisible(bool ) {};
     HbMenu &menuReference() {};
+    void captureKey(Qt::Key , bool ) {};
+    void setRestrictedMode(bool ) {};
+    
 public slots:
     void initTestCase();
 
@@ -111,6 +118,8 @@
     void t_carmode();
     
     void t_devicelock();
+    
+    void t_keyGuardHandling();
 
     
 private:
@@ -121,6 +130,33 @@
     int m_normalPriority;
 };
 
+CKeyguardAccessApi* CKeyguardAccessApi::NewL()
+{
+    return new CKeyguardAccessApi;
+}
+CKeyguardAccessApi::~CKeyguardAccessApi( ) {}
+CKeyguardAccessApi::CKeyguardAccessApi( ) {}
+
+
+TBool CKeyguardAccessApi::IsKeyguardEnabled()
+{
+    return g_keyGuardEnabled;
+}
+
+TInt CKeyguardAccessApi::EnableKeyguard( TBool  )
+{
+    g_enableKeyGuardCalled = true;
+    return 0;
+}
+
+TInt CKeyguardAccessApi::DisableKeyguard( TBool  )
+{
+    g_disableKeyGuardCalled = true;
+    return 0;
+}
+
+
+
 TestPhoneVisibilityHandler::TestPhoneVisibilityHandler ()
 {
 }
@@ -135,7 +171,7 @@
     
     m_handler = new PhoneVisibilityHandler (*this, this);
     
-    m_startPosition = m_handler->ordinalPosition();
+    m_startPosition = CEikonEnv::Static()->RootWin().OrdinalPosition();
     QVERIFY(m_startPosition > 0); // Expect OrdinalPosition higher than 0
     m_startPriority = CEikonEnv::Static()->RootWin().OrdinalPriority();
     QCOMPARE(m_startPriority, (int)ECoeWinPriorityNeverAtFront);
@@ -153,6 +189,9 @@
 
 void TestPhoneVisibilityHandler::cleanup ()
 {
+    g_keyGuardEnabled = false;
+    g_enableKeyGuardCalled = false;
+    g_disableKeyGuardCalled = false;
     m_bringToForegroundCalled = false;
 }
 
@@ -176,7 +215,7 @@
     m_handler->bringToForeground();
     QVERIFY(m_bringToForegroundCalled);
     QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
-    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 1);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
     
     // Test hide device dialogs when foreground ( false )
     m_handler->hideDeviceDialogs(false);
@@ -186,7 +225,7 @@
     // Test hide device dialogs when foreground ( true )
     m_handler->hideDeviceDialogs(true);
     QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
-    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 1);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
     
     // send backgroud is called last
     m_handler->sendToBackground(false);
@@ -227,6 +266,11 @@
     QTest::qWait(100);
     QVERIFY(m_handler->m_carModeEnabled == false);
     QVERIFY(m_bringToForegroundCalled == false);
+    
+    // send backgroud is called last
+    m_handler->sendToBackground(false);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
 }
 
 void TestPhoneVisibilityHandler::t_devicelock()
@@ -249,7 +293,7 @@
     m_handler->bringToForeground();
     QVERIFY(m_bringToForegroundCalled);
     QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
-    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 1);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
     
     // Test hide device dialogs when foreground ( false )
     m_handler->hideDeviceDialogs(false);
@@ -259,12 +303,12 @@
     // Test hide device dialogs when foreground ( true )
     m_handler->hideDeviceDialogs(true);
     QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
-    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 1);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
     
     // Test lock status change
     m_handler->HandlePropertyChangedL(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
     QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
-    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 1);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
 
     
     // send backgroud is called last
@@ -275,5 +319,114 @@
 }
 
 
+void TestPhoneVisibilityHandler::t_keyGuardHandling()
+{
+    // Test when keyguard is not enabled before call
+    g_keyGuardEnabled = false; 
+    
+    // bringToForeground is call
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    // send backgroud is called last
+    m_handler->sendToBackground(false);
+    QVERIFY(!g_enableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
+    
+    
+    // Test when keyguard is enabled before call
+    cleanup();
+    g_keyGuardEnabled = true; 
+    
+    // bringToForeground is call
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    // send backgroud is called last
+    m_handler->sendToBackground(false);
+    QVERIFY(g_enableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
+    
+    // Test when keyguard is enabled before call +
+    // keyguard is not enabled when phone is background
+    cleanup();
+    g_keyGuardEnabled = true;
+    
+    // bringToForeground is call
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+
+    cleanup();
+    // Test that keyguard is not enabled when phone is background
+    CEikonEnv::Static()->RootWin().SetOrdinalPosition(-1, ECoeWinPriorityNormal);
+    m_handler->sendToBackground(false);
+    QVERIFY(!g_enableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
+    
+    
+    // Test case where two calls is created and key guard is enabled
+    cleanup();
+    g_keyGuardEnabled = true; 
+    
+    // bringToForeground is call
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    m_handler->sendToBackground(false);
+    QVERIFY(g_enableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
+    
+    // Test case where two calls is created and key guard is enabled during middle
+    cleanup();
+    
+    // bringToForeground is call
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    g_keyGuardEnabled = true; 
+    m_handler->bringToForeground();
+    QVERIFY(m_bringToForegroundCalled);
+    QVERIFY(g_disableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), 0);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), ECoeWinPriorityAlwaysAtFront + 100);
+    
+    cleanup();
+    m_handler->sendToBackground(false);
+    QVERIFY(g_enableKeyGuardCalled);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPosition(), m_startPosition);
+    QCOMPARE(CEikonEnv::Static()->RootWin().OrdinalPriority(), m_startPriority);
+}
+
+
 PHONE_TEST_MAIN(TestPhoneVisibilityHandler)
 #include "unit_tests.moc"