idlefw/tsrc/mcsplugin/mt_mcsplugin/mt_mcsplugin.cpp
branchRCL_3
changeset 111 053c6c7c14f3
--- /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