graphicstest/uibench/src/trenderorientation.h
changeset 152 9f1c3fea0f87
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicstest/uibench/src/trenderorientation.h	Wed Aug 18 11:05:09 2010 +0300
@@ -0,0 +1,106 @@
+// Copyright (c) 2010 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
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#ifndef TRENDERORIENTATION_H
+#define TRENDERORIENTATION_H
+
+#include <e32property.h>
+#include "te_graphicsperformanceSuiteStepBase.h"
+
+/**
+CTWindowSet contains a window server session, a group window and a child window.
+ */
+class CTWindowSet : public CBase
+    {
+public:
+    ~CTWindowSet();
+    void ConstructL();
+    void Destroy();
+
+    inline RWsSession&     Session()
+        {return iWs;};
+    inline RWindowGroup&   WindowGroup()
+        {return iWindowGroup;};
+
+private:
+    RWsSession      iWs;
+    RWindowGroup    iWindowGroup;
+    RWindow         iChildWindow;    
+    };
+
+/**
+Test case to test the performance of various use cases which affect the render orientation RProperty
+*/
+class CTRenderOrientation : public CTe_graphicsperformanceSuiteStepBase
+    {
+public:
+    CTRenderOrientation();
+    ~CTRenderOrientation();
+
+    // From CTestStep
+    virtual TVerdict doTestStepPreambleL();
+    virtual TVerdict doTestStepPostambleL();
+    
+    virtual TVerdict doTestStepL();
+
+private:
+    enum TWindowSet
+        {
+        // One per orientation
+        EFirstWindowSet,
+        ESecondWindowSet,
+        EThirdWindowSet,
+        EFourthWindowSet,
+        
+        ENumWindowSets
+        };
+    
+    enum TTestPhase
+        {
+        EIndicatedOrientationChange,    // window indicates a new render orientation
+        EWindowOrdinalChange,           // window order changed, render orientation dictated by a different window with a different orientation
+        EThemeOrientationChange,        // theme orientation changed, render orienation dictated by this due to relevant window being set to EDisplayOrientationAuto
+        EThemeOrientationChangeOnly,    // theme orientation change only, to compare timings to above
+        
+        ENumTestPhases
+        };    
+    
+    void TestOrientationChangeL(const TDesC& aStepName, TTestPhase aTestPhase);
+    
+    TRenderOrientation  GetRenderOrientationL();
+    TRenderOrientation  GetThemeOrientationL();
+    TRenderOrientation  GetOrientationL(RProperty& aProperty);
+    void                ThemeServerProperty(const TDesC& aCmd);
+    
+private:    
+    CTWindowSet     iWindowSet[ENumWindowSets];
+    RProperty       iWsRenderOrientationProperty;
+    RProperty       iThemeOrientationProperty;
+    
+    RTimer          iTimeoutTimer;
+    TRequestStatus  iTimeoutStatus;
+    TRequestStatus  iOrientationStatus;
+    TInt            iTimingsTaken;
+    };
+
+_LIT(KTRenderOrientation,"trenderorientation");
+
+#endif /* TRENDERORIENTATION_H */