--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/tsrc/mcsplugin/mt_mcsplugin/mt_mcsplugin.cpp Thu Aug 19 10:13:44 2010 +0300
@@ -0,0 +1,313 @@
+/*
+* 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:
+*
+*/
+
+
+// CLASS HEADER
+
+#include "MT_mcsplugin.h"
+// EXTERNAL INCLUDES
+
+#include <aiutility.h>
+#include <w32std.h>
+#include <eikenv.h>
+#include <ecom/ecom.h>
+#include <ecom/implementationproxy.h>
+#include <centralrepository.h>
+#include <aicontentobserver.h>
+#include <aipluginsettings.h>
+#include <mcsplugin.h>
+#include <apgtask.h>
+#include <aknenv.h>
+// #include <aicontentpublisher.h>
+#include <ecom/implementationinformation.h>
+
+// #include <aipropertyextension.h>
+// #include <aieventhandlerextension.h>
+#include <centralrepository.h>
+#include <msvids.h>
+#include <senduimtmuids.h>
+
+#include <digia/eunit/eunitmacros.h>
+#include <digia/eunit/ceunitalloctestcasedecorator.h>
+
+#include <hspluginsettings.h>
+
+using namespace HSPluginSettingsIf;
+
+// INTERNAL INCLUDES
+
+#include "observer.h"
+#include "caouserafter.h"
+#include <mcspluginuids.hrh>
+
+_LIT( KEventNameLaunchByIndex, "LaunchByIndex" );
+const TInt KWait_1_secs = 1 * 1000000;
+const TInt KWait_2_secs = 2 * 1000000;
+const TInt KWait_5_secs = 5 * 1000000;
+const TInt KWait_10_secs = 10 * 1000000;
+const TInt KWait_15_secs = 15 * 1000000;
+const TInt KWait_20_secs = 20 * 1000000;
+
+_LIT( KMcsPluginName, "mcsplugin" );
+_LIT8( KNameSpace, "1" );
+
+// CONSTRUCTION
+
+/*EXPORT_C*/ MT_mcsplugin* MT_mcsplugin::NewL()
+{
+ MT_mcsplugin* self = MT_mcsplugin::NewLC();
+ CleanupStack::Pop();
+
+ return self;
+}
+
+/*EXPORT_C*/ MT_mcsplugin* MT_mcsplugin::NewLC()
+{
+ MT_mcsplugin* self = new(ELeave) MT_mcsplugin();
+ CleanupStack::PushL(self);
+
+ self->ConstructL();
+
+ return self;
+}
+
+// ---------------------------------------------------------------------------
+// Destructor (virtual by CBase)
+// ---------------------------------------------------------------------------
+//
+MT_mcsplugin::~MT_mcsplugin()
+{
+}
+
+// ---------------------------------------------------------------------------
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+MT_mcsplugin::MT_mcsplugin()
+{
+}
+
+// ---------------------------------------------------------------------------
+// Second phase construct
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::ConstructL()
+{
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+}
+
+// METHODS
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::HandleSessionEventL(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
+{
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::SetupL()
+{
+ __UHEAP_MARK;
+ _LIT8( KAppUid, "271012080" );
+ CHomescreenSettings::InitializeL( KAppUid );
+
+ iContentObserver = Observer::NewL();
+
+ TUid uid = { AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_MCSPLUGIN };
+ THsPublisherInfo pubInfo( uid, KMcsPluginName, KNameSpace );
+
+ EUNIT_ASSERT(iContentObserver);
+
+ iPlugin = CHsContentPublisher::NewL( pubInfo );
+ EUNIT_ASSERT( iPlugin );
+
+ // Array owned by the plugin
+ RAiSettingsItemArray settings;
+ //Content Item
+ MAiPluginSettings* setting = AiUtility::CreatePluginSettingsL();
+ CleanupDeletePushL( setting );
+ MAiPluginContentItem& item = setting->AiPluginContentItem();
+ item.SetTypeL( _L("image") );
+ item.SetNameL( _L("widget/icon"));
+ settings.AppendL( setting );
+ CleanupStack::Pop( setting );
+
+ MAiPluginSettings* setting1 = AiUtility::CreatePluginSettingsL();
+ CleanupDeletePushL( setting1 );
+ MAiPluginContentItem& item1 = setting1->AiPluginContentItem();
+ item1.SetTypeL( _L("image") );
+ item1.SetNameL( _L("widget/presenceicon"));
+ settings.AppendL( setting1 );
+ CleanupStack::Pop( setting1 );
+
+ MAiPluginSettings* setting2 = AiUtility::CreatePluginSettingsL();
+ CleanupDeletePushL( setting2 );
+ MAiPluginContentItem& item2 = setting2->AiPluginContentItem();
+ item2.SetTypeL( _L("text") );
+ item2.SetNameL( _L("widget/longname"));
+ settings.AppendL( setting2 );
+ CleanupStack::Pop( setting2 );
+
+ MAiPluginSettings* setting3 = AiUtility::CreatePluginSettingsL();
+ CleanupDeletePushL( setting3 );
+ MAiPluginContentItem& item3 = setting3->AiPluginContentItem();
+ item3.SetTypeL( _L("text") );
+ item3.SetNameL( _L("widget/shortname"));
+ settings.AppendL( setting3 );
+ CleanupStack::Pop( setting3 );
+
+ iPlugin->ConfigureL( settings );
+ iPlugin->SubscribeL( *iContentObserver );
+ iPlugin->Start( CHsContentPublisher::ESystemStartup );
+
+ iPlugin->Resume( CHsContentPublisher::EForeground );
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::EmptySetupL()
+{
+}
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::Teardown()
+{
+ delete iPlugin;
+ iPlugin = NULL;
+
+ delete iContentObserver;
+ iContentObserver = NULL;
+
+ CHomescreenSettings::UnInitialize();
+ __UHEAP_MARKEND;
+}
+
+
+// ---------------------------------------------------------------------------
+// Tests Resume, plugin is resumed correctly.
+// If plugin is working correctly it should be able to launch app
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestResumeL()
+{
+ // Frees engine, because shortcuts needs to be recreated when theme is changed
+ iPlugin->Resume( CHsContentPublisher::EForeground );
+
+ // Free engine one more time...
+ iPlugin->Stop( CHsContentPublisher::ESystemShutdown );
+
+ // ... to test last decicions.
+ iPlugin->Resume( CHsContentPublisher::EForeground );
+}
+
+// ---------------------------------------------------------------------------
+// Tests Suspend, plugin is suspended.
+// When plugin is suspended it shouldn't launch apps
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestSuspendL()
+{
+ TRAPD(err1, iPlugin->Suspend( CHsContentPublisher::EBackground));
+
+// EUNIT_ASSERT_NO_LEAVE(LaunchAppFailsL(0x00000001, KScutCalculatorUid));
+
+ iPlugin->Stop( CHsContentPublisher::ESystemShutdown );
+
+ TRAPD(err2, iPlugin->Suspend( CHsContentPublisher::EBackground));
+}
+
+// ---------------------------------------------------------------------------
+// Tests SubscribeL, adding observer.
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestSubscribeL()
+{
+ EUNIT_ASSERT_NO_LEAVE(iPlugin->SubscribeL(*iContentObserver));
+}
+
+// ---------------------------------------------------------------------------
+// Tests GetPropertyL
+// Return values shouldn't be null
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestGetPropertyL()
+{
+ TAny* anyPtr = iPlugin->GetProperty( CHsContentPublisher::EPublisherContent );
+ EUNIT_ASSERT( anyPtr );
+
+ MAiContentItemIterator* iter = static_cast<MAiContentItemIterator*>( anyPtr );
+ EUNIT_ASSERT( iter );
+}
+
+// ---------------------------------------------------------------------------
+// Free engine, ensure that plugin won't launch apps.
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestFreeEngineL()
+{
+ iPlugin->Stop( CHsContentPublisher::ESystemShutdown );
+
+ iPlugin->Start( CHsContentPublisher::ESystemStartup );
+
+ iPlugin->Resume( CHsContentPublisher::EForeground );
+
+// LaunchAppFailsL(0x00000001, KScutCalculatorUid);
+}
+
+
+
+// ---------------------------------------------------------------------------
+// Send invalid parameters to plugin, no crash should occur
+// ---------------------------------------------------------------------------
+//
+void MT_mcsplugin::TestHandleEventErrorHandling()
+{
+ iPlugin->HandleEvent(_L("invalid"), KNullDesC);
+ iPlugin->HandleEvent(KEventNameLaunchByIndex, KNullDesC);
+ iPlugin->HandleEvent(KEventNameLaunchByIndex, _L("0x"));
+ iPlugin->HandleEvent(KEventNameLaunchByIndex, _L("99999999"));
+ iPlugin->HandleEvent(KEventNameLaunchByIndex, _L("-1"));
+}
+
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(MT_mcsplugin, "MCSPlugin module tests", "MODULE")
+
+EUNIT_TEST("Resume", "MCSPlugin", "Resume", "FUNCTIONALITY", SetupL, TestResumeL, Teardown)
+EUNIT_TEST("Suspend", "MCSPlugin", "Suspend", "FUNCTIONALITY", SetupL, TestSuspendL, Teardown)
+EUNIT_TEST("Subscribe", "MCSPlugin", "SubscribeL", "FUNCTIONALITY", SetupL, TestSubscribeL, Teardown)
+//EUNIT_TEST("Get property", "MCSPlugin", "GetPropertyL", "FUNCTIONALITY", SetupL, TestGetPropertyL, Teardown)
+//EUNIT_TEST("Free engine", "MCSPlugin", "FreeEngineL", "FUNCTIONALITY", SetupL, TestFreeEngineL, Teardown)
+EUNIT_TEST("Test different events", "MCSPlugin", "HandleEvent", "FUNCTIONALITY", SetupL, TestHandleEventErrorHandling, Teardown)
+
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE