/** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
#include <QtTest/QtTest>
#include <QPixmap>
#include <e32std.h>
#include <AknDef.h>
#include <QString>
#include <qdebug>
#include <apgcli.h>
#include <apacmdln.h>
#include <apgtask.h>
#include <eikenv.h>
#include <s32strm.h>
#include <S32MEM.H>
#include <APGWGNAM.H>
#include <FBS.H>
#include "t_tsbackstepping.h"
#include "tsbackstepping.h"
#include <tsresourcemanager.h>
#include <tswindowgroupsobserver.h>
#include "tstestutils.h"
const TUid KIconApplicationUid = {0xEd0b4e47};
const TUid KNoIconApplicationUid = {0xE453fc1b};
const TUid KHsApplicationUid = {0x20022F35};
namespace {
const char KIconApplicationName[] = "appwithicon";
const char KNoIconApplicationName[] = "appwithouticon";
}
// -----------------------------------------------------------------------------
// init and cleanup methods
// -----------------------------------------------------------------------------
//
void TestBackStepping::initTestCase()
{
mResources = CTsResourceManager::NewL();
mMonitor = CTsWindowGroupsMonitor::NewL(*mResources);
}
void TestBackStepping::cleanupTestCase()
{
delete mMonitor;
delete mResources;
}
// -----------------------------------------------------------------------------
// test cases
// -----------------------------------------------------------------------------
//
void TestBackStepping::testBacksteppingMovesHomescreenToSecondPosition()
{
// start test applicationss
quint64 iconAppId;
quint64 noIconAppId;
QVERIFY(TsTestUtils::startApplication(KIconApplicationName, iconAppId));
QVERIFY(TsTestUtils::startApplication(KNoIconApplicationName, noIconAppId));
// get window group list that will be passed to backstepping algorithm
RArray<RWsSession::TWindowGroupChainInfo> windowGroupList;
QCOMPARE(mResources->WsSession().WindowGroupList(0, &windowGroupList), KErrNone);
// we don't test window server events monitor. manually force backstepping algorithm
CTsBackstepping *backstepping = CTsBackstepping::NewL(*mMonitor);
static_cast<MTsWindowGroupsObserver*>(backstepping)->HandleWindowGroupChanged(*mResources, windowGroupList.Array());
// read window group list list after backstepping
QCOMPARE(mResources->WsSession().WindowGroupList(0, &windowGroupList), KErrNone);
QCOMPARE(getUidForWgId(windowGroupList[0].iId), KNoIconApplicationUid);
QCOMPARE(getUidForWgId(windowGroupList[1].iId), KHsApplicationUid);
QCOMPARE(getUidForWgId(windowGroupList[2].iId), KIconApplicationUid);
delete backstepping;
windowGroupList.Close();
// close test applications
QVERIFY(TsTestUtils::closeApplication(noIconAppId));
QVERIFY(TsTestUtils::closeApplication(iconAppId));
}
// -----------------------------------------------------------------------------
// helper method
// -----------------------------------------------------------------------------
//
TUid TestBackStepping::getUidForWgId(int wgId) const
{
CApaWindowGroupName *windowName = CApaWindowGroupName::NewLC(mResources->WsSession(), wgId);
TUid appUid = windowName->AppUid();
CleanupStack::PopAndDestroy(windowName);
return appUid;
}
QTEST_MAIN(TestBackStepping)