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 |