javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp
changeset 35 85266cc22c7f
parent 26 dc7c549001d5
child 47 f40128debb5d
equal deleted inserted replaced
26:dc7c549001d5 35:85266cc22c7f
    29 #include "logger.h"
    29 #include "logger.h"
    30 
    30 
    31 // SCR usage is enabled if this macro has been defined.
    31 // SCR usage is enabled if this macro has been defined.
    32 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
    32 #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
    33 
    33 
    34 #include <qservicemanager.h>
       
    35 #include <qurl.h>
       
    36 #include <usif/scr/scr.h>
    34 #include <usif/scr/scr.h>
    37 #include <usif/scr/screntries.h>
    35 #include <usif/scr/screntries.h>
    38 #ifdef RD_JAVA_USIF_APP_REG
    36 #ifdef RD_JAVA_USIF_APP_REG
    39 #include <usif/scr/appreginfo.h>
    37 #include <usif/scr/appreginfo.h>
    40 #endif // RD_JAVA_USIF_APP_REG
    38 #endif // RD_JAVA_USIF_APP_REG
       
    39 #include <xqappmgr.h>
    41 
    40 
    42 // Helper macro for logging a TDesC.
    41 // Helper macro for logging a TDesC.
    43 #define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \
    42 #define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \
    44     {                                                               \
    43     {                                                               \
    45         HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1);  \
    44         HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1);  \
    48         LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\
    47         LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\
    49         CleanupStack::PopAndDestroy(tdescBuf);                      \
    48         CleanupStack::PopAndDestroy(tdescBuf);                      \
    50     }
    49     }
    51 
    50 
    52 // NAMESPACE DECLARATION
    51 // NAMESPACE DECLARATION
    53 QTM_USE_NAMESPACE
       
    54 using namespace java;
    52 using namespace java;
    55 using namespace Usif;
    53 using namespace Usif;
    56 
    54 
    57 IMPORT_C HBufC* CreateHBufCFromJavaStringLC(JNIEnv* aEnv, jstring aString);
    55 IMPORT_C HBufC* CreateHBufCFromJavaStringLC(JNIEnv* aEnv, jstring aString);
    58 
       
    59 // Java MIME types.
       
    60 _LIT(KMimeTypeAppDescriptor, "text/vnd.sun.j2me.app-descriptor");
       
    61 _LIT(KMimeTypeJava, "application/java");
       
    62 _LIT(KMimeTypeJavaArchive, "application/java-archive");
       
    63 _LIT(KMimeTypeXJavaArchive, "application/x-java-archive");
       
    64 
    56 
    65 // Properties registered to SCR.
    57 // Properties registered to SCR.
    66 _LIT(KMIDletName, "MIDlet-Name");
    58 _LIT(KMIDletName, "MIDlet-Name");
    67 _LIT(KUid, "Uid");
    59 _LIT(KUid, "Uid");
    68 _LIT(KMediaId, "Media-Id");
    60 _LIT(KMediaId, "Media-Id");
   252 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1launchAppView
   244 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1launchAppView
   253 (JNIEnv *, jclass)
   245 (JNIEnv *, jclass)
   254 {
   246 {
   255     TInt err = KErrNone;
   247     TInt err = KErrNone;
   256 
   248 
   257     QServiceManager serviceManager;
   249     CActiveScheduler* newScheduler = 0;
   258     QObject* activityManager =
   250     if (0 == CActiveScheduler::Current())
   259         serviceManager.loadInterface("com.nokia.qt.activities.ActivityManager");
   251     {
   260     if (!activityManager)
   252         // Create ActiveScheduler as it does not yet exist.
   261     {
   253         newScheduler = new CActiveScheduler;
   262         err = serviceManager.error();
   254         CActiveScheduler::Install(newScheduler);
   263         ELOG1(EJavaInstaller,
   255     }
   264               "launchAppView: loading ActivityManager failed, error %d", err);
   256 
   265         return KErrCouldNotConnect;
   257     QUrl openRecentView("appto://20022F35?activityname=AppLibRecentView");
   266     }
   258     XQApplicationManager applicationManager;
   267     // URL for launching AppLib.
   259     XQAiwRequest *request = applicationManager.create(openRecentView);
   268     QUrl url(QString("appto://20022F35?activityname=AppLibRecentView"));
   260     if (request) {
   269     QMetaObject::invokeMethod(activityManager, "launchActivity",
   261         bool result = request->send();
   270                               Q_ARG(QString, url.toString()));
   262         if (!result) {
   271     err = serviceManager.error();
   263             int error = request->lastError();
   272     delete activityManager;
   264             ELOG1(EJavaInstaller,
   273     if (QServiceManager::NoError != err)
   265                   "launchAppView: launching AppLib failed, error %d", error);
   274     {
   266             err = KErrGeneral;
   275         ELOG1(EJavaInstaller,
   267         }
   276               "launchAppView: launching AppLib activity failed, error %d",
   268         delete request;
   277               err);
   269     }
   278         return KErrCouldNotConnect;
   270 
   279     }
   271     if (newScheduler)
   280 
   272     {
   281     // Start AppLib and bring it to foreground.
   273         delete newScheduler;
   282     const TUid KAppLibUid = { 0x20022F35 };
   274         newScheduler = 0;
   283     TRAP(err, StartAppL(KAppLibUid));
   275     }
   284     return err;
   276 
   285 }
   277     if (KErrNone == err)
   286 
   278     {
   287 /**
   279         // Start AppLib and bring it to foreground.
   288  * See JNI method __1registerJavaSoftwareType.
   280         const TUid KAppLibUid = { 0x20022F35 };
   289  * This method makes calls that may leave (the actual registering).
   281         TRAP(err, StartAppL(KAppLibUid));
   290  */
   282     }
   291 void RegisterJavaSoftwareTypeL(RSoftwareComponentRegistry *aScr, TBool aRegister = ETrue)
       
   292 {
       
   293     RPointerArray<HBufC> javaMimeTypes;
       
   294     CleanupResetAndDestroyPushL(javaMimeTypes);
       
   295     javaMimeTypes.AppendL(KMimeTypeAppDescriptor().AllocL());
       
   296     javaMimeTypes.AppendL(KMimeTypeJava().AllocL());
       
   297     javaMimeTypes.AppendL(KMimeTypeJavaArchive().AllocL());
       
   298     javaMimeTypes.AppendL(KMimeTypeXJavaArchive().AllocL());
       
   299     if (aRegister)
       
   300     {
       
   301         TUid javaSifPluginUid = TUid::Uid(0x2002bc70);
       
   302         _LIT_SECURE_ID(KJavaInstallerSid, 0x102033E6);
       
   303         aScr->AddSoftwareTypeL(
       
   304             Usif::KSoftwareTypeJava, javaSifPluginUid,
       
   305             KJavaInstallerSid, KJavaInstallerSid, javaMimeTypes);
       
   306     }
       
   307     else
       
   308     {
       
   309         aScr->DeleteSoftwareTypeL(Usif::KSoftwareTypeJava, javaMimeTypes);
       
   310     }
       
   311     CleanupStack::PopAndDestroy(&javaMimeTypes);
       
   312 }
       
   313 
       
   314 /*
       
   315  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
       
   316  * Method:    _registerJavaSoftwareType
       
   317  * Signature: (Z)I
       
   318  */
       
   319 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerJavaSoftwareType
       
   320 (JNIEnv *, jclass, jboolean aRegister)
       
   321 {
       
   322     RSoftwareComponentRegistry *pScr = NULL;
       
   323     TRAPD(err, pScr = CreateScrL());
       
   324     if (KErrNone != err)
       
   325     {
       
   326         return err;
       
   327     }
       
   328     TRAP(err, RegisterJavaSoftwareTypeL(pScr, aRegister));
       
   329     if (KErrNone != err)
       
   330     {
       
   331         ELOG1(EJavaInstaller,
       
   332               "registerJavaSoftwareType: registration failed, error %d",
       
   333               err);
       
   334     }
       
   335     pScr->Close();
       
   336     delete pScr;
       
   337     return err;
   283     return err;
   338 }
   284 }
   339 
   285 
   340 /*
   286 /*
   341  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
   287  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
   536  jobjectArray aComponentFiles, jlong aComponentSize, jboolean aIsRemovable,
   482  jobjectArray aComponentFiles, jlong aComponentSize, jboolean aIsRemovable,
   537  jboolean aIsDrmProtected, jboolean aIsOriginVerified, jboolean aIsUpdate,
   483  jboolean aIsDrmProtected, jboolean aIsOriginVerified, jboolean aIsUpdate,
   538  jint aMediaId, jstring aMidletInfoUrl, jstring aMidletDescription,
   484  jint aMediaId, jstring aMidletInfoUrl, jstring aMidletDescription,
   539  jstring aDownloadUrl, jobject aComponentId)
   485  jstring aDownloadUrl, jobject aComponentId)
   540 {
   486 {
   541     //__UHEAP_MARK;
   487     __UHEAP_MARK;
   542     RSoftwareComponentRegistry *pScr =
   488     RSoftwareComponentRegistry *pScr =
   543         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
   489         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
   544     TComponentId componentId = -1;
   490     TComponentId componentId = -1;
   545     TRAPD(err, componentId = RegisterComponentL(
   491     TRAPD(err, componentId = RegisterComponentL(
   546                                  aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aName, aGlobalId,
   492                                  aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aName, aGlobalId,
   547                                  aComponentFiles, aComponentSize, aIsRemovable,
   493                                  aComponentFiles, aComponentSize, aIsRemovable,
   548                                  aIsDrmProtected, aIsOriginVerified, aIsUpdate, aMediaId,
   494                                  aIsDrmProtected, aIsOriginVerified, aIsUpdate, aMediaId,
   549                                  aMidletInfoUrl, aMidletDescription, aDownloadUrl));
   495                                  aMidletInfoUrl, aMidletDescription, aDownloadUrl));
   550     //__UHEAP_MARKEND;
   496     __UHEAP_MARKEND;
   551     if (KErrNone == err)
   497     if (KErrNone == err)
   552     {
   498     {
   553         jclass clazz = aEnv->GetObjectClass(aComponentId);
   499         jclass clazz = aEnv->GetObjectClass(aComponentId);
   554         jmethodID methodSetId = aEnv->GetMethodID(clazz, "setId", "(I)V");
   500         jmethodID methodSetId = aEnv->GetMethodID(clazz, "setId", "(I)V");
   555         aEnv->CallVoidMethod(aComponentId, methodSetId, componentId);
   501         aEnv->CallVoidMethod(aComponentId, methodSetId, componentId);
   563  * Signature: (II)I
   509  * Signature: (II)I
   564  */
   510  */
   565 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1unregisterComponent
   511 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1unregisterComponent
   566 (JNIEnv *, jclass, jint aSessionHandle, jint aComponentId)
   512 (JNIEnv *, jclass, jint aSessionHandle, jint aComponentId)
   567 {
   513 {
   568     //__UHEAP_MARK;
   514     __UHEAP_MARK;
   569     RSoftwareComponentRegistry *pScr =
   515     RSoftwareComponentRegistry *pScr =
   570         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
   516         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
   571     TInt err = KErrNone;
   517     TInt err = KErrNone;
   572 #ifdef RD_JAVA_USIF_APP_REG
   518 #ifdef RD_JAVA_USIF_APP_REG
   573     TRAP(err, pScr->DeleteApplicationEntriesL(aComponentId));
   519     TRAP(err, pScr->DeleteApplicationEntriesL(aComponentId));
   574 #endif // RD_JAVA_USIF_APP_REG
   520 #endif // RD_JAVA_USIF_APP_REG
   575     if (KErrNone == err)
   521     if (KErrNone == err)
   576     {
   522     {
   577         TRAP(err, pScr->DeleteComponentL(aComponentId));
   523         TRAP(err, pScr->DeleteComponentL(aComponentId));
   578     }
   524     }
   579     //__UHEAP_MARKEND;
   525     __UHEAP_MARKEND;
   580     return err;
   526     return err;
   581 }
   527 }
   582 
   528 
   583 /**
   529 /**
   584  * See JNI method __1registerApplication.
   530  * See JNI method __1registerApplication.
  1083  * Signature: (ILjava/lang/String;)I
  1029  * Signature: (ILjava/lang/String;)I
  1084  */
  1030  */
  1085 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1logComponent
  1031 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1logComponent
  1086 (JNIEnv *aEnv, jclass, jint aSessionHandle, jstring aGlobalId)
  1032 (JNIEnv *aEnv, jclass, jint aSessionHandle, jstring aGlobalId)
  1087 {
  1033 {
  1088     __UHEAP_MARK;
  1034     //__UHEAP_MARK;
  1089     RSoftwareComponentRegistry *pScr =
  1035     RSoftwareComponentRegistry *pScr =
  1090         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
  1036         reinterpret_cast<RSoftwareComponentRegistry*>(aSessionHandle<<2);
  1091     TRAPD(err, LogComponentL(aEnv, pScr, aGlobalId));
  1037     TRAPD(err, LogComponentL(aEnv, pScr, aGlobalId));
  1092     __UHEAP_MARKEND;
  1038     //__UHEAP_MARKEND;
  1093     return err;
  1039     return err;
  1094 }
  1040 }
  1095 
  1041 
  1096 /*
  1042 /*
  1097  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
  1043  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
  1132     return KErrNone;
  1078     return KErrNone;
  1133 }
  1079 }
  1134 
  1080 
  1135 /*
  1081 /*
  1136  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
  1082  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
  1137  * Method:    _registerJavaSoftwareType
       
  1138  * Signature: (Z)I
       
  1139  */
       
  1140 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerJavaSoftwareType
       
  1141 (JNIEnv *, jclass, jboolean)
       
  1142 {
       
  1143     return KErrNone;
       
  1144 }
       
  1145 
       
  1146 /*
       
  1147  * Class:     com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator
       
  1148  * Method:    _startSession
  1083  * Method:    _startSession
  1149  * Signature: ()I
  1084  * Signature: ()I
  1150  */
  1085  */
  1151 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1startSession
  1086 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1startSession
  1152 (JNIEnv *, jclass, jboolean)
  1087 (JNIEnv *, jclass, jboolean)