--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appfw/apparchitecture/tef/TStartDocApp.cpp Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,198 @@
+// Copyright (c) 2005-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:
+// Supporting application for use by T_StartDocStep.cpp
+// The implementation of CR PHAR-5NTCWY removes the 256 character limit
+// on the length of document names.
+// This application is designed to be started by test code calling
+// RApaLsSession::StartDocument(const TDesC& aFileName, TThreadId& aId,
+// TLaunchType aLaunchType=ELaunchNewApp)
+// passing a document name (first parameter) that is longer than
+// 256 characters.
+// The test passes if this application is started with a document name
+// that is longer than 256 characters.
+//
+//
+
+/**
+ @file
+ @internalComponent - Internal Symbian test code
+*/
+
+#include <eikenv.h>
+#include <eikappui.h>
+#include <eikapp.h>
+#include <eikdoc.h>
+
+#include <eikstart.h>
+
+#include "TStartDoc.h"
+
+const TUid KUidTStartDocApp = { 0x10004c4d };
+
+enum TStartDocAppPanic
+ {
+ EPanicDocNameCheck1Failed,
+ EPanicDocNameCheck1NotExecuted,
+ EPanicDocNameCheck2Failed,
+ };
+
+void Panic(TStartDocAppPanic aPanic)
+//
+// Panic the process with TESTFAILED as the category.
+//
+ {
+ _LIT(KPanicCategory,"TESTFAILED");
+ User::Panic(KPanicCategory, aPanic);
+ }
+
+
+//
+//
+// CStartDocAppUi
+//
+//
+class CStartDocAppUi : public CEikAppUi
+ {
+public:
+ void ConstructL();
+ ~CStartDocAppUi();
+public:
+ TBool DocNameCheck1Executed() const;
+ // from CEikAppUi
+ TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail);
+private:
+ TBool iDocNameCheck1Executed;
+ };
+
+
+void CStartDocAppUi::ConstructL()
+ {
+ BaseConstructL(ENoAppResourceFile | ENoScreenFurniture);
+ }
+
+CStartDocAppUi::~CStartDocAppUi()
+ {
+ }
+
+TBool CStartDocAppUi::DocNameCheck1Executed() const
+ {
+ return iDocNameCheck1Executed;
+ }
+
+TBool CStartDocAppUi::ProcessCommandParametersL(TApaCommand /*aCommand*/, TFileName& aDocumentName, const TDesC8& /*aTail*/)
+ {
+ if (aDocumentName != KLitLongURL)
+ {
+ Panic(EPanicDocNameCheck1Failed);
+ }
+ iDocNameCheck1Executed = ETrue;
+ return EFalse; // don't try to open the document
+ }
+
+
+//
+//
+// CStartDocDocument
+//
+//
+class CStartDocDocument : public CEikDocument
+ {
+public:
+ static CStartDocDocument* NewL(CEikApplication& aApp);
+ CStartDocDocument(CEikApplication& aApp);
+ void ConstructL();
+ CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
+private:
+ // from CEikDocument
+ CEikAppUi* CreateAppUiL();
+ };
+
+CStartDocDocument::CStartDocDocument(CEikApplication& aApp)
+ : CEikDocument(aApp)
+ {
+ }
+
+CEikAppUi* CStartDocDocument::CreateAppUiL()
+ {
+ return new(ELeave) CStartDocAppUi;
+ }
+
+CFileStore* CStartDocDocument::OpenFileL(TBool /*aDoOpen*/,const TDesC& /*aFilename*/,RFs& /*aFs*/)
+ {
+ if (!(static_cast<CStartDocAppUi*>(CEikonEnv::Static()->EikAppUi())->DocNameCheck1Executed()))
+ {
+ Panic(EPanicDocNameCheck1NotExecuted);
+ }
+ /** the process main doc filename should have been set by the framework by the time
+ this function is called, so check it's been sucessfully set to a value that's
+ longer than 256 characters
+ (this tests the new CApaProcess::SetMainDocFileNameL API)
+ */
+ if (Process()->MainDocFileName() != KLitLongURL)
+ {
+ Panic(EPanicDocNameCheck2Failed);
+ }
+ // by exiting the app here with KTStartDocTestPassed, we ensure the test cannot pass
+ // in cases where something leaves during app startup
+ User::After(10000000); // ensure that the test harness gets a chance to logon to us
+ User::Exit(KTStartDocTestPassed);
+ return NULL; // just to keep the compiler happy
+ }
+
+
+//
+//
+// CStartDocApplication
+//
+//
+class CStartDocApplication : public CEikApplication
+ {
+private:
+ // from CApaApplication
+ CApaDocument* CreateDocumentL();
+ TUid AppDllUid() const;
+private:
+ TFileName ResourceFileName() const;
+private:
+ CApaDocument* CreateDocumentL(CApaProcess* a) { return CEikApplication::CreateDocumentL(a); }
+ //
+ };
+
+CApaDocument* CStartDocApplication::CreateDocumentL()
+ {
+ return new (ELeave) CStartDocDocument(*this);
+ }
+
+TUid CStartDocApplication::AppDllUid() const
+ {
+ return KUidTStartDocApp;
+ }
+
+TFileName CStartDocApplication::ResourceFileName() const
+ {
+ return TFileName(); // this app doesn't have a resource file
+ }
+
+
+LOCAL_C CApaApplication* NewApplication()
+ {
+ return new CStartDocApplication;
+ }
+
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication(NewApplication);
+ }
+
+