appfw/apparchitecture/tef/t_clientnotifstep.cpp
branchRCL_3
changeset 19 924385140d98
equal deleted inserted replaced
18:0818dd463d41 19:924385140d98
       
     1 // Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @internalComponent - Internal Symbian test code 
       
    19 */
       
    20 
       
    21 #include "t_clientnotifstep.h"
       
    22 #include <e32base.h>
       
    23 #include <e32cmn.h>
       
    24 #include "T_SisFileInstaller.h"
       
    25 #include <apgtask.h>
       
    26 #include <apgnotif.h>
       
    27 
       
    28 _LIT(KSimpleAppSisFile, "z:\\apparctest\\apparctestsisfiles\\SimpleApparcTestApp.sis");
       
    29 _LIT(KSimpleAppComponent, "SimpleApparcTestApp");
       
    30 
       
    31 _LIT(KTestMultipleAppsSisFile, "z:\\apparctest\\apparctestsisfiles\\TestMultipleApps.sis");
       
    32 _LIT(KTestMultipleAppsComponent, "TestMultipleApps");
       
    33 
       
    34 _LIT(KTestMultipleAppsDowngradeSisFile, "z:\\apparctest\\apparctestsisfiles\\TestMultipleAppsDowngrade.sis");
       
    35 _LIT(KTestMultipleAppsDowngradeComponent, "TestMultipleApps");
       
    36 
       
    37 _LIT(KTstAppStandAloneSisFile, "z:\\apparctest\\apparctestsisfiles\\TSTAPP_standalone.sis");
       
    38 _LIT(KTstAppStandAloneComponent, "TSTAPP_standalone");
       
    39 
       
    40 const TUid KUidSimpleApp={0x12008ACE};
       
    41 const TUid KUidMultipleApp1={0x102032AB};
       
    42 const TUid KUidMultipleApp2={0x10208183};
       
    43 const TUid KUidMultipleApp3={0x10208184};
       
    44 const TUid KUidTstAppStandalone={10};
       
    45 
       
    46 CT_ClientNotifStep::~CT_ClientNotifStep()
       
    47 /**
       
    48    Destructor
       
    49  */
       
    50     {
       
    51     }
       
    52 
       
    53 CT_ClientNotifStep::CT_ClientNotifStep()
       
    54 /**
       
    55    Constructor
       
    56  */
       
    57     {
       
    58     // Call base class method to set up the human readable name for logging
       
    59     SetTestStepName(KT_ClientNotifStep);
       
    60     }
       
    61 
       
    62 TVerdict CT_ClientNotifStep::doTestStepPreambleL()
       
    63 /**
       
    64    @return - TVerdict code
       
    65    Override of base class virtual
       
    66  */
       
    67     {
       
    68     SetTestStepResult(EPass);
       
    69     return TestStepResult();
       
    70     }
       
    71 
       
    72 TVerdict CT_ClientNotifStep::doTestStepPostambleL()
       
    73 /**
       
    74    @return - TVerdict code
       
    75    Override of base class virtual
       
    76  */
       
    77     {
       
    78     return TestStepResult();
       
    79     }
       
    80     
       
    81     
       
    82 TVerdict CT_ClientNotifStep::doTestStepL()
       
    83 {
       
    84     RunTestCases();
       
    85     return TestStepResult();
       
    86 }
       
    87 
       
    88 
       
    89 void CT_ClientNotifStep::RunTestCases()
       
    90     {
       
    91     RTestableApaLsSession ls;
       
    92     User::LeaveIfError(ls.Connect());
       
    93     
       
    94     TApaAppInfo info;
       
    95     TUid uid = {0x12008ACE};     
       
    96     TInt err = ls.GetAppInfo(info, uid);
       
    97     if(err == KErrNone)
       
    98         {       
       
    99         CSisFileInstaller sisFileInstaller;
       
   100         sisFileInstaller.UninstallSisL(KSimpleAppComponent);
       
   101         }
       
   102    
       
   103     //DONT_CHECK is used because when an application is installed the updated application
       
   104     //information is added in the session objects. This causes increase of memory at server side.
       
   105     //As there can be multiple applications registered with apparc for applist change notifications,
       
   106     //its not possible to clear the information in all the session objects.
       
   107     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifInitialApplistCreation(ls), NO_CLEANUP);
       
   108     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifLanguageChange(ls), NO_CLEANUP);     
       
   109     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifSingleAppInstallation(ls), NO_CLEANUP);
       
   110     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifMultipleAppInstallation(ls), NO_CLEANUP);
       
   111     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifUpgradeApp(ls), NO_CLEANUP);
       
   112     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifMultipleInstallations(ls), NO_CLEANUP);
       
   113     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifWithoutSetNotify(ls), NO_CLEANUP);
       
   114     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifOnPackageUpgrade(ls), NO_CLEANUP);  
       
   115     HEAP_TEST_LS_SESSION(ls, 0, DONT_CHECK, TestClientNotifOnPackageDowngrade(ls), NO_CLEANUP);        
       
   116     ls.Close();
       
   117     }
       
   118 
       
   119 
       
   120 /**
       
   121    @SYMTestCaseID           APPFWK-APPARC-0106
       
   122   
       
   123 
       
   124     @SYMTestCaseDesc        Tests apparc will not provide updated application information when the application list
       
   125                             created first time after device bootup.
       
   126                             
       
   127    @SYMTestPriority         High
       
   128   
       
   129    @SYMTestStatus           Implemented
       
   130    
       
   131    @SYMTestActions          1. Wait till the applist got created after phone boot.
       
   132                             2. Retrieve the updated application information and check it is empty.
       
   133                             
       
   134                              
       
   135    @SYMTestExpectedResults Apparc will not provide updated application information.
       
   136  */
       
   137 void CT_ClientNotifStep::TestClientNotifInitialApplistCreation(RTestableApaLsSession &aLs)
       
   138     {
       
   139     INFO_PRINTF1(_L("TestClientNotifInitialApplistCreation started............"));    
       
   140   
       
   141     TRequestStatus applistChangeStatus;
       
   142     TRequestStatus applistCreationStatus;
       
   143     //Register with apparc for applist change notification
       
   144     aLs.SetNotify(ETrue, applistChangeStatus);
       
   145     aLs.RegisterListPopulationCompleteObserver(applistCreationStatus);    
       
   146     User::WaitForRequest(applistCreationStatus);
       
   147     User::WaitForRequest(applistChangeStatus);
       
   148     
       
   149     //Get the updated application information from apparc.
       
   150     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   151     CleanupClosePushL(updatedAppsInfo);
       
   152     INFO_PRINTF1(_L("Retrieving updated application information after installation"));    
       
   153     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   154     INFO_PRINTF2(_L("Updated application count: %d expected: 0"), updatedAppsInfo.Count()); 
       
   155     TEST(updatedAppsInfo.Count() == 0);
       
   156     
       
   157     CleanupStack::PopAndDestroy(); //updatedAppsInfo   
       
   158     INFO_PRINTF1(_L("TestClientNotifInitialApplistCreation ended............")); 
       
   159     }
       
   160 
       
   161 
       
   162 void CT_ClientNotifStep::ChangeLocaleL(TLanguage aLanguage)
       
   163     {
       
   164     _LIT(KLitLanguageLocaleDllNameBase, "elocl_lan");
       
   165     //Region and collation code values are hard coded, as the check, after changing the locale is made for the language only.
       
   166     _LIT(KLitRegionLocaleDllNameBase, "elocl_reg.826");        
       
   167     _LIT(KLitCollationLocaleDllNameBase, "elocl_col.001");
       
   168     _LIT(ThreeDigExt,".%03d");
       
   169     TExtendedLocale localeDll;    
       
   170     const TUidType uidType(TUid::Uid(0x10000079),TUid::Uid(0x100039e6));
       
   171     TBuf<16> languageLocaleDllName(KLitLanguageLocaleDllNameBase);  
       
   172     languageLocaleDllName.AppendFormat(ThreeDigExt, aLanguage);
       
   173     TBuf<16> regionLocaleDllName(KLitRegionLocaleDllNameBase);  
       
   174     TBuf<16> collationLocaleDllName(KLitCollationLocaleDllNameBase);  
       
   175     // Try to load the locale dll
       
   176     TInt error=localeDll.LoadLocale(languageLocaleDllName, regionLocaleDllName, collationLocaleDllName);
       
   177         
       
   178     if (error==KErrNotFound)
       
   179         {
       
   180         // Locale dll is not found for the asked language. 
       
   181         ERR_PRINTF2(_L("Failed to find the locale dll for %d"), aLanguage);
       
   182         }
       
   183            
       
   184     User::LeaveIfError(error);
       
   185     localeDll.SaveSystemSettings();
       
   186     }
       
   187 
       
   188 
       
   189 
       
   190 /**
       
   191    @SYMTestCaseID           APPFWK-APPARC-0106
       
   192   
       
   193 
       
   194     @SYMTestCaseDesc        Tests apparc will not provide updated application information when the application list
       
   195                             updated due phone language change.
       
   196                             
       
   197    @SYMTestPriority         High
       
   198   
       
   199    @SYMTestStatus           Implemented
       
   200    
       
   201    @SYMTestActions          1. Wait till the applist got updated after phone language change.
       
   202                             2. Retrieve the updated application information and check it is empty.
       
   203                             
       
   204                              
       
   205    @SYMTestExpectedResults Apparc will not provide updated application information.
       
   206  */
       
   207 void CT_ClientNotifStep::TestClientNotifLanguageChange(RTestableApaLsSession &aLs)
       
   208     {
       
   209     INFO_PRINTF1(_L("TestClientNotifLanguageChange started............"));    
       
   210   
       
   211     TRequestStatus applistChangeStatus;
       
   212     aLs.SetNotify(EFalse, applistChangeStatus);
       
   213     //Change language
       
   214     ChangeLocaleL(ELangGerman);    
       
   215     User::WaitForRequest(applistChangeStatus);
       
   216 
       
   217     //Get the updated application information from apparc.
       
   218     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   219     CleanupClosePushL(updatedAppsInfo);
       
   220     INFO_PRINTF1(_L("Retrieving updated application information after installation"));    
       
   221     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   222     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   223     TEST(updatedAppsInfo.Count() == 0);
       
   224     
       
   225     applistChangeStatus=KRequestPending;
       
   226     aLs.SetNotify(EFalse, applistChangeStatus);
       
   227     ChangeLocaleL(ELangEnglish);
       
   228     User::WaitForRequest(applistChangeStatus);
       
   229     
       
   230     CleanupStack::PopAndDestroy(); //updatedAppsInfo   
       
   231     INFO_PRINTF1(_L("TestClientNotifInitialApplistCreation ended............")); 
       
   232     }
       
   233 
       
   234 /**
       
   235    @SYMTestCaseID           APPFWK-APPARC-0106
       
   236   
       
   237 
       
   238     @SYMTestCaseDesc        Tests whether apparc provides updated application information when single application is installed 
       
   239                             and uninstalled.
       
   240   
       
   241    @SYMTestPriority         High
       
   242   
       
   243    @SYMTestStatus           Implemented
       
   244    
       
   245    @SYMTestActions          1. Installs a sis file which has single application and waits till applist is changed.
       
   246                             2. Checks the updated information provided by apparc is as expected.
       
   247                             3. Uninstalls the component installed in Step 1
       
   248                             4. Checks the updated information provided by apparc is as expected.
       
   249                             
       
   250                              
       
   251    @SYMTestExpectedResults Apparc provides updated application information.,
       
   252  */
       
   253 void CT_ClientNotifStep::TestClientNotifSingleAppInstallation(RTestableApaLsSession &aLs)
       
   254     {
       
   255     INFO_PRINTF1(_L("TestSingleAppInstallation started............"));    
       
   256     CSisFileInstaller sisInstaller;
       
   257     TRequestStatus applistChangeStatus;
       
   258  
       
   259     INFO_PRINTF1(_L("Installing single application"));     
       
   260     aLs.SetNotify(EFalse, applistChangeStatus);
       
   261     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KSimpleAppSisFile);
       
   262     sisInstaller.InstallSisL(KSimpleAppSisFile);
       
   263     User::WaitForRequest(applistChangeStatus);
       
   264     
       
   265     //Get the updated application information from apparc.
       
   266     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   267     CleanupClosePushL(updatedAppsInfo);
       
   268     INFO_PRINTF1(_L("Retrieving updated application information after installation"));    
       
   269     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   270     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   271     
       
   272     //Check the information provided by apparc is what is expected.
       
   273     TEST(updatedAppsInfo.Count()== 1);
       
   274     TEST(updatedAppsInfo[0].iAppUid == KUidSimpleApp);
       
   275     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);
       
   276     
       
   277     //Check the application is available in the applist. 
       
   278     TApaAppInfo appInfo;
       
   279     TEST(aLs.GetAppInfo(appInfo, KUidSimpleApp) == KErrNone);
       
   280     
       
   281     INFO_PRINTF1(_L("Unnstalling single application"));        
       
   282     applistChangeStatus=KRequestPending;
       
   283     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   284     sisInstaller.UninstallSisL(KSimpleAppComponent);
       
   285     User::WaitForRequest(applistChangeStatus);  
       
   286     
       
   287     //Get the updated application information from apparc.    
       
   288     updatedAppsInfo.Reset();
       
   289     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   290     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   291     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   292     
       
   293     //Check the information provided by apparc is what is expected.    
       
   294     TEST(updatedAppsInfo.Count()== 1);
       
   295     TEST(updatedAppsInfo[0].iAppUid == KUidSimpleApp);
       
   296     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   297     
       
   298     //Check the application is not available in the applist.    
       
   299     TEST(aLs.GetAppInfo(appInfo, KUidSimpleApp) == KErrNotFound);
       
   300     
       
   301     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   302     INFO_PRINTF1(_L("TestSingleAppInstallation ended............")); 
       
   303     }
       
   304 
       
   305 
       
   306 /**
       
   307    @SYMTestCaseID           APPFWK-APPARC-0106
       
   308   
       
   309 
       
   310     @SYMTestCaseDesc        Tests whether apparc provides updated application information when multiple applications are installed 
       
   311                             and uninstalled.
       
   312   
       
   313    @SYMTestPriority         High
       
   314   
       
   315    @SYMTestStatus           Implemented
       
   316    
       
   317    @SYMTestActions          1. Installs a sis file which has multiple applications and waits till applist is changed.
       
   318                             2. Checks the updated information provided by apparc is as expected.
       
   319                             3. Uninstalls the component installed in Step 1
       
   320                             4. Checks the updated information provided by apparc is as expected.
       
   321                             
       
   322                              
       
   323    @SYMTestExpectedResults Apparc provides updated application information.
       
   324   */
       
   325    
       
   326 void CT_ClientNotifStep::TestClientNotifMultipleAppInstallation(RTestableApaLsSession &aLs)
       
   327     {
       
   328     INFO_PRINTF1(_L("TestMultipleAppInstallation started............"));
       
   329     CSisFileInstaller sisInstaller;
       
   330     TRequestStatus applistChangeStatus;
       
   331     
       
   332     INFO_PRINTF1(_L("Installing multiple applications"));     
       
   333     aLs.SetNotify(EFalse, applistChangeStatus);
       
   334     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsSisFile);
       
   335     sisInstaller.InstallSisL(KTestMultipleAppsSisFile);
       
   336     User::WaitForRequest(applistChangeStatus);
       
   337  
       
   338     //Get the updated application information from apparc.    
       
   339     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   340     CleanupClosePushL(updatedAppsInfo);    
       
   341     INFO_PRINTF1(_L("Retrieving updated application information after installation"));
       
   342     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   343     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   344     
       
   345     //Check the information provided by apparc is what is expected.    
       
   346     TEST(updatedAppsInfo.Count()== 3);
       
   347     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   348     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);
       
   349     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   350     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);    
       
   351     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   352     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   353     
       
   354     //Check the application is available in the applist.    
       
   355     TApaAppInfo appInfo;
       
   356     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNone);
       
   357     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   358     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);
       
   359     
       
   360     INFO_PRINTF1(_L("Uninstalling multiple applications"));    
       
   361     applistChangeStatus=KRequestPending;
       
   362     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   363     sisInstaller.UninstallSisL(KTestMultipleAppsComponent);
       
   364     User::WaitForRequest(applistChangeStatus); 
       
   365     
       
   366     //Get the updated application information from apparc.    
       
   367     updatedAppsInfo.Reset();
       
   368     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   369     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   370     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   371     TEST(updatedAppsInfo.Count()== 3);
       
   372     
       
   373     //Check the information provided by apparc is what is expected.    
       
   374     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   375     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   376     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   377     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppNotPresent);    
       
   378     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   379     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   380     
       
   381     //Check the application is not available in the applist.     
       
   382     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNotFound);
       
   383     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNotFound);
       
   384     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNotFound);
       
   385     
       
   386     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   387     INFO_PRINTF1(_L("TestMultipleAppInstallation ended............"));    
       
   388     }
       
   389 
       
   390 
       
   391 /**
       
   392    @SYMTestCaseID           APPFWK-APPARC-0106
       
   393   
       
   394 
       
   395     @SYMTestCaseDesc        Tests whether apparc provides updated application information when an applications is
       
   396                             upgraded.
       
   397   
       
   398    @SYMTestPriority         High
       
   399   
       
   400    @SYMTestStatus           Implemented
       
   401    
       
   402    @SYMTestActions          1. Checks whether upgrading application exists in applist.
       
   403                             2. Installs a sis file which upgrades  existing applications and waits till applist is changed.
       
   404                             2. Checks the updated information provided by apparc is as expected.
       
   405                             3. Uninstalls the component installed in Step 2
       
   406                             4. Checks the updated information provided by apparc is as expected.
       
   407                             
       
   408                              
       
   409    @SYMTestExpectedResults Apparc provides updated application information.
       
   410   */
       
   411 void CT_ClientNotifStep::TestClientNotifUpgradeApp(RTestableApaLsSession &aLs)
       
   412 {
       
   413     INFO_PRINTF1(_L("TestClientNotifUpgradeApp started............"));    
       
   414     CSisFileInstaller sisInstaller;
       
   415     TRequestStatus applistChangeStatus;
       
   416  
       
   417     INFO_PRINTF1(_L("Check the application is present before upgrade")); 
       
   418     //Check the application is available in the applist. 
       
   419     TApaAppInfo appInfo;
       
   420     TEST(aLs.GetAppInfo(appInfo, KUidTstAppStandalone) == KErrNone);
       
   421     
       
   422     INFO_PRINTF1(_L("Installing upgrade application"));     
       
   423     aLs.SetNotify(EFalse, applistChangeStatus);
       
   424     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTstAppStandAloneSisFile);
       
   425     sisInstaller.InstallSisL(KTstAppStandAloneSisFile);
       
   426     User::WaitForRequest(applistChangeStatus);
       
   427     
       
   428     //Get the updated application information from apparc.
       
   429     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   430     CleanupClosePushL(updatedAppsInfo);
       
   431     INFO_PRINTF1(_L("Retrieving updated application information after installation"));    
       
   432     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   433     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   434     
       
   435     //Check the information provided by apparc is what is expected.
       
   436     TEST(updatedAppsInfo.Count()== 1);
       
   437     TEST(updatedAppsInfo[0].iAppUid == KUidTstAppStandalone);
       
   438     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);
       
   439     
       
   440     //Check the application is available in the applist. 
       
   441     TEST(aLs.GetAppInfo(appInfo, KUidTstAppStandalone) == KErrNone);
       
   442     
       
   443     INFO_PRINTF1(_L("Unnstalling upgrade application"));        
       
   444     applistChangeStatus=KRequestPending;
       
   445     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   446     sisInstaller.UninstallSisL(KTstAppStandAloneComponent);
       
   447     User::WaitForRequest(applistChangeStatus);  
       
   448     
       
   449     //Get the updated application information from apparc.    
       
   450     updatedAppsInfo.Reset();
       
   451     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   452     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   453     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   454     
       
   455     //Check the information provided by apparc is what is expected.    
       
   456     TEST(updatedAppsInfo.Count()== 1);
       
   457     TEST(updatedAppsInfo[0].iAppUid == KUidTstAppStandalone);
       
   458     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);
       
   459     
       
   460     //Check the application is still available in the applist.    
       
   461     TEST(aLs.GetAppInfo(appInfo, KUidTstAppStandalone) == KErrNone);
       
   462     
       
   463     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   464     INFO_PRINTF1(_L("TestClientNotifUpgradeApp ended............"));     
       
   465 }
       
   466 
       
   467 
       
   468 /**
       
   469    @SYMTestCaseID           APPFWK-APPARC-0106
       
   470   
       
   471 
       
   472     @SYMTestCaseDesc        Tests whether apparc provides updated application information when there are multiple installations
       
   473                             happened before the clients requests for updated application information.
       
   474   
       
   475    @SYMTestPriority         High
       
   476   
       
   477    @SYMTestStatus           Implemented
       
   478    
       
   479    @SYMTestActions          1. Installs a sis file and waits till applist is changed.
       
   480                             2. Installs another sis file and waits till applist is changed.
       
   481                             3. Checks the updated information provided by apparc is as expected.
       
   482                             4. Uninstalls the component installed in Step 1 and waits till applist is changed.
       
   483                             5. Uninstalls the component installed in Step 2 and waits till applist is changed.                            
       
   484                             6. Checks the updated information provided by apparc is as expected.
       
   485                             
       
   486                              
       
   487    @SYMTestExpectedResults Apparc provides updated application information.
       
   488   */
       
   489 void CT_ClientNotifStep::TestClientNotifMultipleInstallations(RTestableApaLsSession &aLs)
       
   490 {
       
   491     INFO_PRINTF1(_L("TestClientNotifMultipleInstallations started............"));    
       
   492     CSisFileInstaller sisInstaller;
       
   493     TRequestStatus applistChangeStatus;
       
   494  
       
   495     INFO_PRINTF1(_L("Installing first sis file"));     
       
   496     aLs.SetNotify(EFalse, applistChangeStatus);
       
   497     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KSimpleAppSisFile);
       
   498     sisInstaller.InstallSisL(KSimpleAppSisFile);
       
   499     User::WaitForRequest(applistChangeStatus);
       
   500     
       
   501     INFO_PRINTF1(_L("Installing second sis file")); 
       
   502     applistChangeStatus=KRequestPending;    
       
   503     aLs.SetNotify(EFalse, applistChangeStatus);
       
   504     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsSisFile);
       
   505     sisInstaller.InstallSisL(KTestMultipleAppsSisFile);
       
   506     User::WaitForRequest(applistChangeStatus);
       
   507     
       
   508     //Get the updated application information from apparc.
       
   509     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   510     CleanupClosePushL(updatedAppsInfo);
       
   511     INFO_PRINTF1(_L("Retrieving updated application information after installations"));    
       
   512     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   513     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   514     
       
   515     //Check the information provided by apparc is what is expected.
       
   516     TEST(updatedAppsInfo.Count()== 4);
       
   517     TEST(updatedAppsInfo[0].iAppUid == KUidSimpleApp);
       
   518     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);
       
   519     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp1);
       
   520     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);
       
   521     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp2);
       
   522     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   523     TEST(updatedAppsInfo[3].iAppUid == KUidMultipleApp3);
       
   524     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   525     
       
   526     //Check the applications is available in the applist. 
       
   527     TApaAppInfo appInfo;    
       
   528     TEST(aLs.GetAppInfo(appInfo, KUidSimpleApp) == KErrNone);
       
   529     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNone);
       
   530     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   531     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);
       
   532     
       
   533     INFO_PRINTF1(_L("Unnstalling first component"));        
       
   534     applistChangeStatus=KRequestPending;
       
   535     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   536     sisInstaller.UninstallSisL(KSimpleAppComponent);
       
   537     User::WaitForRequest(applistChangeStatus);  
       
   538     
       
   539     INFO_PRINTF1(_L("Unnstalling second component"));        
       
   540     applistChangeStatus=KRequestPending;
       
   541     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   542     sisInstaller.UninstallSisL(KTestMultipleAppsComponent);
       
   543     User::WaitForRequest(applistChangeStatus);  
       
   544     
       
   545     //Get the updated application information from apparc.    
       
   546     updatedAppsInfo.Reset();
       
   547     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   548     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   549     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   550     
       
   551     //Check the information provided by apparc is what is expected.    
       
   552     TEST(updatedAppsInfo.Count()== 4);
       
   553     TEST(updatedAppsInfo[0].iAppUid == KUidSimpleApp);
       
   554     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   555     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp1);
       
   556     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   557     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp2);
       
   558     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   559     TEST(updatedAppsInfo[3].iAppUid == KUidMultipleApp3);
       
   560     TEST(updatedAppsInfo[3].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   561     
       
   562     //Check the applications are not available in the applist. 
       
   563     TEST(aLs.GetAppInfo(appInfo, KUidSimpleApp) == KErrNotFound);
       
   564     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNotFound);
       
   565     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNotFound);
       
   566     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNotFound);
       
   567     
       
   568     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   569     INFO_PRINTF1(_L("TestClientNotifMultipleInstallations ended............"));     
       
   570 }
       
   571 
       
   572 
       
   573 /**
       
   574    @SYMTestCaseID           APPFWK-APPARC-0106
       
   575   
       
   576 
       
   577     @SYMTestCaseDesc        Tests apparc will not provide updated application information if SetNotify is not called
       
   578                             on an apparc session. Apparc only maintains updated application information with the sessions
       
   579                             which actually requested SetNotify and not yet called UpdatedAppsInfoL API.
       
   580                             
       
   581    @SYMTestPriority         High
       
   582   
       
   583    @SYMTestStatus           Implemented
       
   584    
       
   585    @SYMTestActions          1. Installs a sis file which has single application and waits till applist is changed.
       
   586                             2. Retrieves the updated applist from different apparc session and checks the list is empty.
       
   587                             
       
   588                              
       
   589    @SYMTestExpectedResults Apparc provides updated application information.
       
   590  */
       
   591 void CT_ClientNotifStep::TestClientNotifWithoutSetNotify(RTestableApaLsSession &aLs)
       
   592     {
       
   593     INFO_PRINTF1(_L("TestClientNotifWithoutSetNotify started............"));    
       
   594     CSisFileInstaller sisInstaller;
       
   595     TRequestStatus applistChangeStatus;
       
   596  
       
   597     INFO_PRINTF1(_L("Installing application"));     
       
   598     sisInstaller.InstallSisAndWaitForAppListUpdateL(KSimpleAppSisFile);
       
   599     
       
   600     //Get the updated application information from apparc.
       
   601     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   602     CleanupClosePushL(updatedAppsInfo);
       
   603     INFO_PRINTF1(_L("Retrieving updated application information after installation"));    
       
   604     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   605     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   606     
       
   607     //Check the information provided by apparc is what is expected.
       
   608     TEST(updatedAppsInfo.Count()== 0);
       
   609     
       
   610     INFO_PRINTF1(_L("Unnstalling application"));        
       
   611     sisInstaller.UninstallSisAndWaitForAppListUpdateL(KSimpleAppComponent);
       
   612     
       
   613     //Get the updated application information from apparc.    
       
   614     updatedAppsInfo.Reset();
       
   615     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   616     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   617     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   618     
       
   619     //Check the information provided by apparc is what is expected.    
       
   620     TEST(updatedAppsInfo.Count()== 0);
       
   621     
       
   622     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   623     INFO_PRINTF1(_L("TestClientNotifWithoutSetNotify ended............")); 
       
   624     }
       
   625 
       
   626 
       
   627 /**
       
   628    @SYMTestCaseID           APPFWK-APPARC-0106
       
   629   
       
   630 
       
   631     @SYMTestCaseDesc        Tests whether apparc provides updated application information a component is upgraded.
       
   632   
       
   633    @SYMTestPriority         High
       
   634   
       
   635    @SYMTestStatus           Implemented
       
   636    
       
   637    @SYMTestActions          1. Installs a sis file which has 2 applications and waits till applist is changed.
       
   638                             2. Checks the updated information provided by apparc is as expected.
       
   639                             3. Upgrades the component which is installed in Step 1 which has one more application.
       
   640                             4. Checks the updated information provided by apparc is as expected.
       
   641                             3. Uninstalls the component installed in Step 3
       
   642                             4. Checks the updated information provided by apparc is as expected.
       
   643                             
       
   644                              
       
   645    @SYMTestExpectedResults Apparc provides updated application information.
       
   646   */
       
   647    
       
   648 void CT_ClientNotifStep::TestClientNotifOnPackageUpgrade(RTestableApaLsSession &aLs)
       
   649     {
       
   650     INFO_PRINTF1(_L("TestClientNotifOnPackageUpgrade started............"));
       
   651     CSisFileInstaller sisInstaller;
       
   652     TRequestStatus applistChangeStatus;
       
   653     
       
   654     INFO_PRINTF1(_L("Installing sis file which has 2 applications"));     
       
   655     aLs.SetNotify(EFalse, applistChangeStatus);
       
   656     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsDowngradeSisFile);
       
   657     sisInstaller.InstallSisL(KTestMultipleAppsDowngradeSisFile);
       
   658     User::WaitForRequest(applistChangeStatus);
       
   659  
       
   660     //Get the updated application information from apparc.    
       
   661     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   662     CleanupClosePushL(updatedAppsInfo);    
       
   663     INFO_PRINTF1(_L("Retrieving updated application information after installation"));
       
   664     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   665     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   666     
       
   667     //Check the information provided by apparc is what is expected.    
       
   668     TEST(updatedAppsInfo.Count()== 2);
       
   669     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp2);
       
   670     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);    
       
   671     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp3);
       
   672     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);
       
   673     
       
   674     //Check the application is available in the applist.    
       
   675     TApaAppInfo appInfo;
       
   676     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   677     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);
       
   678     
       
   679  
       
   680     INFO_PRINTF1(_L("Installing upgrade sis file which has 3 applications"));   
       
   681     applistChangeStatus=KRequestPending;    
       
   682     aLs.SetNotify(EFalse, applistChangeStatus);
       
   683     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsSisFile);
       
   684     sisInstaller.InstallSisL(KTestMultipleAppsSisFile);
       
   685     User::WaitForRequest(applistChangeStatus);
       
   686  
       
   687     //Get the updated application information from apparc.    
       
   688     updatedAppsInfo.Reset();    
       
   689     INFO_PRINTF1(_L("Retrieving updated application information after installation"));
       
   690     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   691     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   692     
       
   693     //Check the information provided by apparc is what is expected.    
       
   694     TEST(updatedAppsInfo.Count()== 3);
       
   695     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   696     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);     
       
   697     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   698     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);    
       
   699     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   700     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   701     
       
   702     //Check the application is available in the applist.    
       
   703     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNone);    
       
   704     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   705     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);
       
   706     
       
   707     INFO_PRINTF1(_L("Uninstalling applications ............"));    
       
   708     applistChangeStatus=KRequestPending;
       
   709     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   710     sisInstaller.UninstallSisL(KTestMultipleAppsComponent);
       
   711     User::WaitForRequest(applistChangeStatus); 
       
   712     
       
   713     //Get the updated application information from apparc.    
       
   714     updatedAppsInfo.Reset();
       
   715     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   716     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   717     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   718     TEST(updatedAppsInfo.Count()== 3);
       
   719     
       
   720     //Check the information provided by apparc is what is expected.    
       
   721     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   722     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   723     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   724     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppNotPresent);    
       
   725     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   726     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   727     
       
   728     //Check the application is not available in the applist.     
       
   729     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNotFound);
       
   730     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNotFound);
       
   731     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNotFound);
       
   732     
       
   733     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   734     INFO_PRINTF1(_L("TestMultipleAppInstallation ended............"));    
       
   735     }
       
   736 
       
   737 
       
   738 
       
   739 /**
       
   740    @SYMTestCaseID           APPFWK-APPARC-0106
       
   741   
       
   742 
       
   743     @SYMTestCaseDesc        Tests whether apparc provides updated application information a component is upgraded.
       
   744   
       
   745    @SYMTestPriority         High
       
   746   
       
   747    @SYMTestStatus           Implemented
       
   748    
       
   749    @SYMTestActions          1. Installs a sis file which has 3 applications and waits till applist is changed.
       
   750                             2. Checks the updated information provided by apparc is as expected.
       
   751                             3. Degrades the component which is installed in Step 1 which has only 2 applications.
       
   752                             4. Checks the updated information provided by apparc is as expected.
       
   753                             3. Uninstalls the component installed in Step 3
       
   754                             4. Checks the updated information provided by apparc is as expected.
       
   755                             
       
   756                              
       
   757    @SYMTestExpectedResults Apparc provides updated application information.
       
   758   */
       
   759    
       
   760 void CT_ClientNotifStep::TestClientNotifOnPackageDowngrade(RTestableApaLsSession &aLs)
       
   761     {
       
   762     INFO_PRINTF1(_L("TestClientNotifOnPackageDowngrade started............"));
       
   763     CSisFileInstaller sisInstaller;
       
   764     TRequestStatus applistChangeStatus;
       
   765     
       
   766     INFO_PRINTF1(_L("Installing sis file which has 3 applications"));     
       
   767     aLs.SetNotify(EFalse, applistChangeStatus);
       
   768     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsSisFile);
       
   769     sisInstaller.InstallSisL(KTestMultipleAppsSisFile);
       
   770     User::WaitForRequest(applistChangeStatus);
       
   771  
       
   772     //Get the updated application information from apparc.    
       
   773     RArray<TApaAppUpdateInfo> updatedAppsInfo;
       
   774     CleanupClosePushL(updatedAppsInfo);    
       
   775     INFO_PRINTF1(_L("Retrieving updated application information after installation"));
       
   776     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   777     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   778     
       
   779     //Check the information provided by apparc is what is expected.    
       
   780     TEST(updatedAppsInfo.Count()== 3);
       
   781     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   782     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppPresent);     
       
   783     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   784     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);    
       
   785     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   786     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   787     
       
   788 
       
   789     //Check the application is available in the applist.    
       
   790     TApaAppInfo appInfo;
       
   791     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNone);    
       
   792     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   793     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);
       
   794     
       
   795  
       
   796     INFO_PRINTF1(_L("Installing sis file which has only 2 applications"));   
       
   797     applistChangeStatus=KRequestPending;    
       
   798     aLs.SetNotify(EFalse, applistChangeStatus);
       
   799     INFO_PRINTF2(_L("Installing sis file from -> %S"), &KTestMultipleAppsDowngradeSisFile);
       
   800     sisInstaller.InstallSisL(KTestMultipleAppsDowngradeSisFile);
       
   801     User::WaitForRequest(applistChangeStatus);
       
   802  
       
   803     //Get the updated application information from apparc.    
       
   804     updatedAppsInfo.Reset();    
       
   805     INFO_PRINTF1(_L("Retrieving updated application information after installation"));
       
   806     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   807     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count()); 
       
   808     
       
   809     //Check the information provided by apparc is what is expected.    
       
   810     TEST(updatedAppsInfo.Count()== 3);
       
   811     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp1);
       
   812     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);     
       
   813     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp2);
       
   814     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppPresent);    
       
   815     TEST(updatedAppsInfo[2].iAppUid == KUidMultipleApp3);
       
   816     TEST(updatedAppsInfo[2].iAction == TApaAppUpdateInfo::EAppPresent);
       
   817 
       
   818     //Check the application is not available in the applist.    
       
   819     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp1) == KErrNotFound);
       
   820     
       
   821     //Check the application is available in the applist.    
       
   822     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNone);
       
   823     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNone);    
       
   824 
       
   825     
       
   826     INFO_PRINTF1(_L("Uninstalling applications"));    
       
   827     applistChangeStatus=KRequestPending;
       
   828     aLs.SetNotify(EFalse, applistChangeStatus);    
       
   829     sisInstaller.UninstallSisL(KTestMultipleAppsDowngradeComponent);
       
   830     User::WaitForRequest(applistChangeStatus); 
       
   831     
       
   832     //Get the updated application information from apparc.    
       
   833     updatedAppsInfo.Reset();
       
   834     INFO_PRINTF1(_L("Retrieving updated application information after uninstallation"));    
       
   835     aLs.UpdatedAppsInfoL(updatedAppsInfo);
       
   836     INFO_PRINTF2(_L("Updated application count: %d"), updatedAppsInfo.Count());
       
   837     TEST(updatedAppsInfo.Count()== 2);
       
   838     
       
   839     //Check the information provided by apparc is what is expected.    
       
   840     TEST(updatedAppsInfo[0].iAppUid == KUidMultipleApp2);
       
   841     TEST(updatedAppsInfo[0].iAction == TApaAppUpdateInfo::EAppNotPresent);    
       
   842     TEST(updatedAppsInfo[1].iAppUid == KUidMultipleApp3);
       
   843     TEST(updatedAppsInfo[1].iAction == TApaAppUpdateInfo::EAppNotPresent);
       
   844     
       
   845     //Check the application is not available in the applist.     
       
   846     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp2) == KErrNotFound);
       
   847     TEST(aLs.GetAppInfo(appInfo, KUidMultipleApp3) == KErrNotFound);
       
   848     
       
   849     CleanupStack::PopAndDestroy(); //updatedAppsInfo
       
   850     INFO_PRINTF1(_L("TestClientNotifOnPackageDowngrade ended............"));    
       
   851     }