--- a/windowing/windowserver/tcsc/cwsgcecscbase.cpp Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,400 +0,0 @@
-// Copyright (c) 2008-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:
-// @file
-//
-//
-
-#include <e32std.h>
-#include <e32math.h>
-#include <w32std.h>
-#include <w32debug.h>
-#include <e32base.h>
-#include "teflogextensions.h"
-#include "globalsettings.h"
-#include "CWsGceCscBase.h"
-#include <bitdraw.h>
-#include <bitdrawinterfaceid.h>
-#include <imageconversion.h>
-#include <test/tefunit.h>
-
-
-CWsGceCscBase::CWsGceCscBase():
-iDoTearDown(EFalse),
-iUtility(this, NULL)
-{
-}
-
-CWsGceCscBase::~CWsGceCscBase()
-{
-if (iDoTearDown)
- TearDownFromDeleteL(); //This mechanism is not entirely clean to use.
-}
-
-void CWsGceCscBase::SetupL()
-{
-iDoTearDown=ETrue;
-iRed.SetInternal(0xFFFF0000);
-iGreen.SetInternal(0xFF00FF00);
-iBlue.SetInternal(0xFF0000FF);
-iCyan.SetInternal(0xFF00FFFF);
-iMagenta.SetInternal(0xFFFF00FF);
-iYellow.SetInternal(0xFFFFFF00);
-iWhite.SetInternal(0xFFFFFFFF);
-
-ASSERT_EQUALS_X(iSession.Connect(), KErrNone);
-
- {//Stolen from TAuto CloseAllPanicWindows()
- TInt idFocus = iSession.GetFocusWindowGroup();
- TWsEvent event;
- event.SetType(EEventKey); //EEventKeyDown
- TKeyEvent *keyEvent = event.Key();
- keyEvent->iCode = EKeyEscape;
- keyEvent->iScanCode = EStdKeyEscape;
- keyEvent->iModifiers = 0;
- TInt theLimit = 50;
- while(idFocus != NULL && (theLimit-- > 0))
- {
- iSession.SendEventToAllWindowGroups(event);
- TInt idNewFocus = iSession.GetFocusWindowGroup();
- if (idNewFocus!=idFocus)
- {
- INFO_PRINTF1(_L("A window was closed [probably a panic box from the previous test]."));
- }
- idFocus=idNewFocus;
- }
- }
-TInt err = KErrNone;
-
-TRAP(err, iScreenDevice = new (ELeave) CWsScreenDevice(iSession));
-PRINT_ON_ERROR2_L(err, _L("Failed to create screen device: %d"), err);
-ASSERT_EQUALS_X(iScreenDevice->Construct(TGlobalSettings::Instance().iScreen), KErrNone);
-iDisplayMode = iScreenDevice->DisplayMode(); // Get default display mode
-
-TRAP(err, iGc = new (ELeave) CWindowGc(iScreenDevice));
-PRINT_ON_ERROR2_L(err, _L("Failed to create graphics context: %d"), err);
-ASSERT_EQUALS_X(iGc->Construct(), KErrNone);
-
-iGroup = RWindowGroup(iSession);
-ASSERT_EQUALS_X(iGroup.Construct(++iWindowHandle,iScreenDevice), KErrNone);
-iSession.Flush();
-
-RWindow testTrans(iSession);
-ASSERT_EQUALS_X(testTrans.Construct(iGroup, ++iWindowHandle), KErrNone);
-iTransparencyEnabled=(testTrans.SetTransparencyFactor(iWhite)==KErrNone);
-testTrans.Close();
-
-//clean-up if previous test abended
- if (PostTestCleanupInstance().iSharedUtility)
- {
-//Temp removed - may be causing ONB fails!
-// if (PostTestCleanupInstance().iSharedUtility->DestroyAll())
-// {
-// INFO_PRINTF1(_L("Destroyed some surfaces from previous test."));
-//
-// }
- }
- if (!PostTestCleanupInstance().iCleanedUpOnExit)
- PostTestCleanupInstance().iCleanedUpOnExit=EFalse;
-
- if (!GCEIsSupported())
- {
- INFO_PRINTF1(_L("Some Setup skipped: GCE support is not loaded"));
- return;
- }
-
- TRAPD(err_FailedToCreateSurfaceUtility, iUtility = CSurfaceUtility::NewL( PostTestCleanupInstance().iSharedUtility));
- ASSERT_EQUALS(err_FailedToCreateSurfaceUtility,KErrNone);
-
-}
-
-void CWsGceCscBase::TearDownL()
-{
-iDoTearDown=EFalse;
-delete iGc;
-delete iScreenDevice;
-
-iGroup.Close();
-iSession.Flush();
-iSession.Close();
-
-delete iUtility();
-PostTestCleanupInstance().iCleanedUpOnExit=ETrue;
-Pause(1000);
-}
-
-void CWsGceCscBase::TearDownFromDeleteL()
-{
-CWsGceCscBase::TearDownL();
-}
-
-void CWsGceCscBase::Pause(TInt aMilliseconds)
-{
-User::After(TTimeIntervalMicroSeconds32(aMilliseconds * 1000));
-}
-
-/** Test using an indipendent method that GCE version of WServ is running
- * This method can only be called after the testcase is started
- *
- * @return true if WServ version is GCE technology, false if legacy technology
- **/
-TBool CWsGceCscBase::GCEIsSupported() const
- {
- CFbsDrawDevice* screenDevice=NULL;
- TDisplayMode displayMode=iScreenDevice->DisplayMode();
- TRAPD(err, screenDevice = CFbsDrawDevice::NewScreenDeviceL(TGlobalSettings::Instance().iScreen, displayMode));
- TBool rv=EFalse;
- if(err == KErrNone)
- {
- TAny* p=NULL;
- rv=(screenDevice->GetInterface(KSurfaceInterfaceID, p)==KErrNone);
- delete screenDevice;
- }
- return rv;
- }
-/** Test using an indipendent method that GCE version of WServ is running
- * This method can be called at any time, even by external code, but creates temporary window session objects
- *
- * @return true if WServ version is GCE technology, false if legacy technology
- **/
-TBool CWsGceCscBase::GCEIsSupportedStatic()
- {
- CFbsDrawDevice* screenDevice=NULL;
- RWsSession session;
- if (session.Connect()!=KErrNone)
- {
- return EFalse;
- }
- CWsScreenDevice screen(session);
- if (screen.Construct(TGlobalSettings::Instance().iScreen)!=KErrNone)
- {
- return EFalse;
- }
-
- TDisplayMode displayMode=screen.DisplayMode();
- TRAPD(err, screenDevice = CFbsDrawDevice::NewScreenDeviceL(TGlobalSettings::Instance().iScreen, displayMode));
- TBool rv=EFalse;
- if(err == KErrNone)
- {
- TAny* p=NULL;
- rv=(screenDevice->GetInterface(KSurfaceInterfaceID, p)==KErrNone);
- delete screenDevice;
- }
- return rv;
- }
-
-//Allocating an instance of surface utility here means all test code instances will share the same instance of the utility class.
-// Owns the singleton
-CWsGceCscBase::TPostTestCleanup& CWsGceCscBase::PostTestCleanupInstance()
- {
- static
- class RPostTestCleanup:public TPostTestCleanup
- {
- public:
- RPostTestCleanup()
- {
- iSharedUtility=NULL;
- iCleanedUpOnExit=ETrue;
- }
- ~RPostTestCleanup()
- {
- // I want to cleanly release the surface utility, but at this point the threads have already been pulled down!
- // if (iSharedUtility)
- // delete iSharedUtility;
- iSharedUtility=NULL; //avoid phoenix behaviour
- }
- } staticInstance;
- return staticInstance;
- }
-
-// This handles any non-member uses of the extended ASSERT_XXX macros
-extern void TefUnitFailLeaveL();
-/**
- * side-effect: log the state info just before I leave!
- * Note that this only logs intentional assertion failures.
- * Fails due to panics or throws won't log this info.
- **/
-void CWsGceCscBase::TefUnitFailLeaveL()
- {
- for (TInt line=0;line<KMaxInfoLines;line++)
- if (iTestInfo[line].Length())
- Logger().LogExtra((TText8*)"Test state at fail - line",line, ESevrAll, iTestInfo[line]);
- TGlobalSettings::Instance().Report(Logger());
-
- User::Leave(KErrTEFUnitFail);
- }
-
-TInt CWsGceCscBase::DebugInfo(TWsDebugInfoFunc aFunction,
- TInt aParam,
- TDes8& aHostBuffer,
- const void*&aReturnedObject,
- TInt aObjectSize)const
- {
- TInt reqSize=iSession.DebugInfo(aFunction,aHostBuffer,aParam);
- aReturnedObject=NULL;
- if (reqSize<0)
- {
- if ((reqSize%aObjectSize)!=0)
- {
- return KErrCorrupt;
- }
- else
- {
- return reqSize;
- }
- }
- if (reqSize>aHostBuffer.MaxLength())
- {
- return reqSize/aObjectSize;
- }
- if (reqSize==0)
- {
- reqSize=aHostBuffer.MaxLength();
- }
- if ((reqSize%aObjectSize)!=0)
- {
- return KErrCorrupt;
- }
- aReturnedObject=(const void*)aHostBuffer.Ptr();
- reqSize/=aObjectSize;
- return reqSize;
- }
-
-void CWsGceCscBase::SetCompositionMode(RWindow& aWindow, TDisplayMode aMode)
- {
- iDisplayMode = (TDisplayMode)aWindow.SetRequiredDisplayMode(aMode);
- aWindow.Invalidate();
- aWindow.BeginRedraw();
- aWindow.EndRedraw();
- }
-
-TBool CWsGceCscBase::Compare(CFbsBitmap& aBitmap1, CFbsBitmap& aBitmap2)
- {
- if ((aBitmap1.SizeInPixels() == aBitmap2.SizeInPixels()) &&
- (aBitmap1.DisplayMode() == aBitmap2.DisplayMode()))
- {
- TSize size = aBitmap1.SizeInPixels();
- TInt width = size.iWidth;
- TInt height = size.iHeight;
- TRgb color1, color2;
-
- for (TInt i = 0; i < width; i++)
- {
- for (TInt j = 0; j < height; j++)
- {
- aBitmap1.GetPixel(color1, TPoint(i, j));
- aBitmap2.GetPixel(color2, TPoint(i, j));
- if (color1 != color2)
- {
- return EFalse;
- }
- }
- }
-
- return ETrue;
- }
- return EFalse;
- }
-
-void CWsGceCscBase::ConstructOpaqueWindowL(RWindow& aWindow,
- const TRgb& aColor,
- TInt aPos,
- const TPoint &aPoint,
- const TSize &aSize)
- {
- ASSERT_EQUALS_X(aWindow.Construct(iGroup, ++iWindowHandle), KErrNone);
- aWindow.SetRequiredDisplayMode(iDisplayMode);
- aWindow.SetExtent(aPoint, aSize);
- aWindow.SetBackgroundColor(aColor);
- aWindow.SetOrdinalPosition(aPos);
- aWindow.Activate();
- aWindow.BeginRedraw();
- iGc->Activate(aWindow);
- iGc->Deactivate();
- aWindow.EndRedraw();
- }
-
-void CWsGceCscBase::ConstructOpaqueWindowLC(RWindow& aWindow,
- const TRgb& aColor,
- TInt aPos,
- const TPoint &aPoint,
- const TSize &aSize)
- {
- ASSERT_EQUALS_X(aWindow.Construct(iGroup, ++iWindowHandle), KErrNone);
- CleanupClosePushL(aWindow);
- aWindow.SetRequiredDisplayMode(iDisplayMode);
- aWindow.SetExtent(aPoint, aSize);
- aWindow.SetBackgroundColor(aColor);
- aWindow.SetOrdinalPosition(aPos);
- aWindow.SetVisible(ETrue);
- aWindow.Activate();
- aWindow.BeginRedraw();
- iGc->Activate(aWindow);
- iGc->Clear();
- iGc->Deactivate();
- aWindow.EndRedraw();
- }
-
-
-void CWsGceCscBase::SetBackgroundColorWindow(RWindow& aWindow, const TRgb& aColor)
- {
- aWindow.Invalidate();
- aWindow.SetBackgroundColor(aColor);
- aWindow.BeginRedraw();
- iGc->Activate(aWindow);
- iGc->Deactivate();
- aWindow.EndRedraw();
- }
-
-void CWsGceCscBase::ConstructOpaqueSurfacedWindowLC(RWindow& aWindow,
- const TRgb& aColor,
- TInt aPos,
- const TPoint &aPoint,
- const TSize &aSize,
- TSurfaceId& aSurfaceID)
- {
- ASSERT_EQUALS_X(aWindow.Construct(iGroup, ++iWindowHandle), KErrNone);
- CleanupClosePushL(aWindow);
- aWindow.SetRequiredDisplayMode(iDisplayMode);
- aWindow.SetExtent(aPoint, aSize);
- aWindow.SetBackgroundColor(aColor);
- aWindow.SetOrdinalPosition(aPos);
- ASSERT_EQUALS_X(aWindow.SetBackgroundSurface(aSurfaceID), KErrNone);
- aWindow.Activate();
- aWindow.BeginRedraw();
- iGc->Activate(aWindow);
- iGc->Deactivate();
- aWindow.EndRedraw();
- }
-
-void CWsGceCscBase::ConstructOpaqueSurfacedWindowL(RWindow& aWindow,
- const TRgb& aColor,
- TInt aPos,
- const TPoint& aPoint,
- const TSize& aSize,
- const TSurfaceId& aSurfaceID)
- {
- ASSERT_EQUALS_X(aWindow.Construct(iGroup, ++iWindowHandle), KErrNone);
- aWindow.SetRequiredDisplayMode(iDisplayMode);
- aWindow.SetExtent(aPoint, aSize);
- aWindow.SetBackgroundColor(aColor);
- aWindow.SetOrdinalPosition(aPos);
- ASSERT_EQUALS_X(aWindow.SetBackgroundSurface(aSurfaceID), KErrNone);
- aWindow.Activate();
- aWindow.BeginRedraw();
- iGc->Activate(aWindow);
- iGc->Deactivate();
- aWindow.EndRedraw();
- }
-
-