# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1277305630 -10800 # Node ID f40128debb5d6e6fb8371781eeb19e36a25515de # Parent 85266cc22c7fa891a0ebb12cb776a4fef3affc9d Revision: v2.2.2 Kit: 2010125 diff -r 85266cc22c7f -r f40128debb5d build/Makefile.comp --- a/build/Makefile.comp Fri Jun 11 13:33:44 2010 +0300 +++ b/build/Makefile.comp Wed Jun 23 18:07:10 2010 +0300 @@ -119,7 +119,7 @@ # Symbian ---------------------------------- ifeq ($(BUILDENV),symbian) -all: qmake java native +all: qmake java native codescanner # Extract basename of current component BASENAME = $(basename $(PRO_FILE)) @@ -170,6 +170,12 @@ clean_qmake: -$(call RMFILES,abld.bat bld.inf* Makefile* $(BASENAME).mmp $(BASENAME)_*.mmp $(BASENAME)_*.pkg $(BASENAME)_reg.rss eabi_stl4/*) +# Use Carbide CodeScanner to list high-level issues +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,..) +endif + # Symbian SBS ------------------------------ ifdef USESBS diff -r 85266cc22c7f -r f40128debb5d build/Makefile.defs --- a/build/Makefile.defs Fri Jun 11 13:33:44 2010 +0300 +++ b/build/Makefile.defs Wed Jun 23 18:07:10 2010 +0300 @@ -57,6 +57,7 @@ MKDIR = if [ ! -d $(1)]; then mkdir $(1); fi RMDIR = if [ -d $(1)]; then rmdir $(1); fi DELTREE = if [ -d $(1)]; then rm -fr $(1); fi + PATHSEARCH = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) else # CMD.exe definitions @@ -74,6 +75,7 @@ MKDIR = if not exist $(1) mkdir $(1) RMDIR = if exist $(1) rmdir $(1) DELTREE = if exist $(1) rmdir /S/Q $(1) + PATHSEARCH = $(firstword $(wildcard $(addsuffix /$(1),$(subst ;, ,$(PATH))))) endif @@ -103,6 +105,7 @@ export ANT_OPTS= BLDMAKE = perl -S bldmake.pl ABLDMAKE = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&make -r + CODESCANNER = codescanner -c $(JAVA_SRC_ROOT)/build/codescanner_high.xml -o std $(1) | perl -ne "print if /error:/;" ifdef NODEP # Makmake does not make dependency checks with this flag diff -r 85266cc22c7f -r f40128debb5d build/Makefile.nonqt --- a/build/Makefile.nonqt Fri Jun 11 13:33:44 2010 +0300 +++ b/build/Makefile.nonqt Wed Jun 23 18:07:10 2010 +0300 @@ -43,19 +43,24 @@ # Symbian ---------------------------------- ifeq ($(BUILDENV),symbian) -all: native +all: native codescanner javareleasables: makestubs: +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,..) +endif + # Symbian SBS ------------------------------ ifdef USESBS # BUILD combines commands EXPORT MAKEFILE BITMAP RESOURCE LIBRARY TARGET FINAL native: $(PHASEINFO) - $(SBS) -c $(PLATFORM)_$(CFG) BUILD + $(SBS) -c $(PLATFORM)_$(CFG) clean_java: diff -r 85266cc22c7f -r f40128debb5d build/Makefile.project --- a/build/Makefile.project Fri Jun 11 13:33:44 2010 +0300 +++ b/build/Makefile.project Wed Jun 23 18:07:10 2010 +0300 @@ -174,13 +174,6 @@ ifdef RD_JAVA_USIF_ENABLED SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK = 1 PROJECT_DEFINES += SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK - # Following flag enables application registrations to USIF - # and disables application registrations to AppArc. - PROJECT_DEFINES += RD_JAVA_USIF_APP_REG - # Following flag enables application notifications to AppArc. - PROJECT_DEFINES += RD_JAVA_USIF_NOTIFY_APP_ARC - # Following flag enables installation progress notifications through USIF. - PROJECT_DEFINES += RD_JAVA_USIF_NOTIFY_PROGRESS endif # Java proximity Listener support exsist in 9.2 only(can not be used if 5.0 untill IAD dependecy mentioned) diff -r 85266cc22c7f -r f40128debb5d build/Makefile.subsystem --- a/build/Makefile.subsystem Fri Jun 11 13:33:44 2010 +0300 +++ b/build/Makefile.subsystem Wed Jun 23 18:07:10 2010 +0300 @@ -188,6 +188,11 @@ bld.inf: $(MAKE) -f subsystem.mk makestubs qmake +# Use Carbide CodeScanner to list high-level issues +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,.) +endif # Symbian SBS ------------------------------ ifdef USESBS diff -r 85266cc22c7f -r f40128debb5d build/bld.inf --- a/build/bld.inf Fri Jun 11 13:33:44 2010 +0300 +++ b/build/bld.inf Wed Jun 23 18:07:10 2010 +0300 @@ -50,7 +50,7 @@ #else // RD_JAVA_UI_QT -../rom/java_2_1.iby CORE_APP_LAYER_IBY_EXPORT_PATH(java.iby) +../rom/java_2_2.iby CORE_APP_LAYER_IBY_EXPORT_PATH(java.iby) // Export ODC list files ../rom/midpodclist /epoc32/release/winscw/udeb/z/resource/java/midpodclist diff -r 85266cc22c7f -r f40128debb5d build/codescanner_high.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/codescanner_high.xml Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,61 @@ + + + + + + + .*\.au + .*\.avi + .*\.bmp + .*\.dll + .*\.doc + .*\.exe + .*\.gif + .*\.jpg + .*\.mbm + .*\.mp3 + .*\.mpg + .*\.png + .*\.raw + .*\.rtf + .*\.tif + .*\.wav + .*\.wbmp + .*\.wmf + .*\.xls + + .*\\ts_.* + .*\\tsrc\\.* + .*\\tsrc.s60\\.* + .*\\test\\.* + .*\\internal\\.* + .*\\Internal\\.* + .*\\.svn\\.* + \\tools\\.* + + + + + + + + + + diff -r 85266cc22c7f -r f40128debb5d build/exports.inf --- a/build/exports.inf Fri Jun 11 13:33:44 2010 +0300 +++ b/build/exports.inf Wed Jun 23 18:07:10 2010 +0300 @@ -48,7 +48,7 @@ #else // RD_JAVA_UI_QT -../rom/java_2_1.iby CORE_APP_LAYER_IBY_EXPORT_PATH(java.iby) +../rom/java_2_2.iby CORE_APP_LAYER_IBY_EXPORT_PATH(java.iby) // Export ODC list files ../rom/midpodclist /epoc32/release/winscw/udeb/z/resource/java/midpodclist diff -r 85266cc22c7f -r f40128debb5d build/loc/resources.jar Binary file build/loc/resources.jar has changed diff -r 85266cc22c7f -r f40128debb5d build/loc/resources_qt.jar Binary file build/loc/resources_qt.jar has changed diff -r 85266cc22c7f -r f40128debb5d build/makefile.javaversion --- a/build/makefile.javaversion Fri Jun 11 13:33:44 2010 +0300 +++ b/build/makefile.javaversion Wed Jun 23 18:07:10 2010 +0300 @@ -1,2 +1,2 @@ # Set Java version (must be dot separated, without spaces) -JAVA_VERSION = 2.2.1 +JAVA_VERSION = 2.2.2 diff -r 85266cc22c7f -r f40128debb5d build/sis/incompatible_openc.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/sis/incompatible_openc.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,3 @@ +OpenC version 1.5 or later is not found. Some Java applications may not work properly. Make sure that latest device firmware is used. + +Continue installation? \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d build/sis/incompatible_platform.txt --- a/build/sis/incompatible_platform.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/build/sis/incompatible_platform.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,1 +1,1 @@ -Unfortunately Java Runtime 2.0 Alpha is not compatible with your device. Java Runtime 2.0 Alpha works only on S60 5.0 devices. +Java Runtime is not compatible with your device. Java Runtime requires S60 5th Edition device. \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d build/sis/java_2_0.pkg --- a/build/sis/java_2_0.pkg Fri Jun 11 13:33:44 2010 +0300 +++ b/build/sis/java_2_0.pkg Wed Jun 23 18:07:10 2010 +0300 @@ -43,6 +43,17 @@ ; Popup error on Non-S60 v 5.0 platforms. Do not allow continuing. "incompatible_platform.txt"-"", FILETEXT, FORCEABORT ENDIF + +; Check OpenC versions +; 0x10282872 = Standard C++ library +; 0x10281F34 = Open C LIBSSL +; 0x20009a80 = Symbian OS PIPS +IF( version(0x10282872, <, 1, 5, 0) ) OR + ( version(0x10281F34, <, 1, 5, 0) ) OR + ( version(0x20009a80, <, 1, 5, 0) ) + "incompatible_openc.txt"-"", FT, TA +ENDIF + #endif // RD_JAVA_S60_RELEASE_5_0_IAD diff -r 85266cc22c7f -r f40128debb5d build/sis/java_3_1.pkg --- a/build/sis/java_3_1.pkg Fri Jun 11 13:33:44 2010 +0300 +++ b/build/sis/java_3_1.pkg Wed Jun 23 18:07:10 2010 +0300 @@ -180,7 +180,6 @@ "\epoc32\release\armv5\urel\javapushcontroller.dll"-"c:\sys\bin\javapushcontroller.dll" "\epoc32\release\armv5\urel\javaregistryclient.dll"-"c:\sys\bin\javaregistryclient.dll" "\epoc32\release\armv5\urel\javaruntimestarterutils.dll"-"c:\sys\bin\javaruntimestarterutils.dll" -"\epoc32\release\armv5\urel\javasidchecker.dll"-"c:\sys\bin\javasidchecker.dll" "\epoc32\release\armv5\urel\javasizehelperclient.dll"-"c:\sys\bin\javasizehelperclient.dll" "\epoc32\release\armv5\urel\javasizehelperserver.dll"-"c:\sys\bin\javasizehelperserver.dll" "\epoc32\release\armv5\urel\javasocketscplugin.dll"-"c:\sys\bin\javasocketscplugin.dll" @@ -223,7 +222,6 @@ "\epoc32\data\z\resource\apps\javainstaller_icon.mif"-"c:\resource\apps\javainstaller_icon.mif" "\epoc32\data\z\resource\java\java_trusted.png"-"c:\resource\java\java_trusted.png" "\epoc32\data\z\resource\java\java_untrusted.png"-"c:\resource\java\java_untrusted.png" -"\epoc32\data\z\resource\plugins\javasidchecker.rsc" -"c:\resource\plugins\javasidchecker.rsc" "\epoc32\data\z\resource\plugins\javaunicertstoreplugin.rsc" -"c:\resource\plugins\javaunicertstoreplugin.rsc" "\epoc32\data\z\resource\plugins\midp2backupplugin.rsc"-"c:\resource\plugins\midp2backupplugin.rsc" #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK @@ -317,14 +315,16 @@ ;"\epoc32\release\armv5\urel\javacoreui.dll"-"c:\sys\bin\javacoreui.dll" ;"\epoc32\data\z\resource\apps\javastartscreen.mif"-"c:\resource\apps\javastartscreen.mif" -;"\epoc32\release\armv5\urel\javaamms.dll"-"c:\sys\bin\javaamms.dll" -;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javaamms.odc"-"c:\resource\java\jvm\lib\jrt\javaamms.odc" +"\epoc32\release\armv5\urel\javaamms.dll"-"c:\sys\bin\javaamms.dll" +"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javaamms.odc"-"c:\resource\java\jvm\lib\jrt\javaamms.odc" ;"\epoc32\release\armv5\urel\javalegacyutils.dll"-"c:\sys\bin\javalegacyutils.dll" ;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javalegacyutils.odc"-"c:\resource\java\jvm\lib\jrt\javalegacyutils.odc" -;"\epoc32\release\armv5\urel\javamobilemedia.dll"-"c:\sys\bin\javamobilemedia.dll" -;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javamobilemedia.odc"-"c:\resource\java\jvm\lib\jrt\javamobilemedia.odc" +"\epoc32\release\armv5\urel\javamobilemedia.dll"-"c:\sys\bin\javamobilemedia.dll" +"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javamobilemedia.odc"-"c:\resource\java\jvm\lib\jrt\javamobilemedia.odc" +"\epoc32\release\armv5\urel\z\system\sounds\digital\CamcorderJavaCapture.wav"-"c:\System\Sounds\Digital\CamcorderJavaCapture.wav" +"\epoc32\release\armv5\urel\z\system\sounds\digital\CamcorderJavaStart.wav"-"c:\System\Sounds\Digital\CamcorderJavaStart.wav" ;"\epoc32\release\armv5\urel\javam2g.dll"-"c:\sys\bin\javam2g.dll" ;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javam2g.odc"-"c:\resource\java\jvm\lib\jrt\javam2g.odc" @@ -339,9 +339,11 @@ ;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javasoftnotification.odc"-"c:\resource\java\jvm\lib\jrt\javasoftnotification.odc" "\epoc32\release\armv5\urel\eswtqt.dll"-"c:\sys\bin\eswtqt.dll" +"\epoc32\release\armv5\urel\eswtqtwebkit.dll"-"c:\sys\bin\eswtqtwebkit.dll" "\epoc32\release\armv5\urel\openlcdui.dll"-"c:\sys\bin\openlcdui.dll" "\epoc32\release\armv5\urel\javanokiaui.dll"-"c:\sys\bin\javanokiaui.dll" "\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\eswtqt.odc"-"c:\resource\java\jvm\lib\jrt\eswtqt.odc" +"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\eswtqtwebkit.odc"-"c:\resource\java\jvm\lib\jrt\eswtqtwebkit.odc" "\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\openlcdui.odc"-"c:\resource\java\jvm\lib\jrt\openlcdui.odc" "\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javanokiaui.odc"-"c:\resource\java\jvm\lib\jrt\javanokiaui.odc" diff -r 85266cc22c7f -r f40128debb5d inc/build_defines.hrh --- a/inc/build_defines.hrh Fri Jun 11 13:33:44 2010 +0300 +++ b/inc/build_defines.hrh Wed Jun 23 18:07:10 2010 +0300 @@ -15,7 +15,7 @@ * */ -#define RD_JAVA_VERSION 2,2,1 +#define RD_JAVA_VERSION 2,2,2 #define RD_JAVA_SYMBIAN_TARGET #define RD_JAVA_S60_RELEASE_10_1 #define RD_JAVA_S60_RELEASE_10_1_ONWARDS @@ -27,9 +27,6 @@ #define RD_JAVA_HTTP_EMC_ENABLED #define RD_JAVA_NGA_ENABLED #define SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK -#define RD_JAVA_USIF_APP_REG -#define RD_JAVA_USIF_NOTIFY_APP_ARC -#define RD_JAVA_USIF_NOTIFY_PROGRESS #define RD_JAVA_PROXIMITY_LISTENER_ENABLED #define RD_JAVA_OPENC_BETA_PATCH #define OPENLCDUI_ENABLED diff -r 85266cc22c7f -r f40128debb5d inc/build_defines.pri --- a/inc/build_defines.pri Fri Jun 11 13:33:44 2010 +0300 +++ b/inc/build_defines.pri Wed Jun 23 18:07:10 2010 +0300 @@ -13,4 +13,4 @@ # # Description: Generated file - do not edit manually # -PROJECT_DEFINES *= RD_JAVA_SYMBIAN_TARGET RD_JAVA_S60_RELEASE_10_1 RD_JAVA_S60_RELEASE_10_1_ONWARDS RD_JAVA_S60_RELEASE_9_2_ONWARDS RD_JAVA_S60_RELEASE_5_0_ONWARDS RD_JAVA_UI_QT RD_JAVA_STDCPPV5 RD_JAVA_EPOCALLOWDLLDATA_FIX RD_JAVA_HTTP_EMC_ENABLED RD_JAVA_NGA_ENABLED SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK RD_JAVA_USIF_APP_REG RD_JAVA_USIF_NOTIFY_APP_ARC RD_JAVA_USIF_NOTIFY_PROGRESS RD_JAVA_PROXIMITY_LISTENER_ENABLED RD_JAVA_OPENC_BETA_PATCH OPENLCDUI_ENABLED RD_JAVA_OPENLCDUI_ENABLED RD_JAVA_INSTALLERUI_ENABLED RD_JAVA_PREWARM RD_JAVA_ADVANCED_TACTILE_FEEDBACK RD_JAVA_APPLICATION_SETTINGS_QT RD_JAVA_MIDPRMS_DB +PROJECT_DEFINES *= RD_JAVA_SYMBIAN_TARGET RD_JAVA_S60_RELEASE_10_1 RD_JAVA_S60_RELEASE_10_1_ONWARDS RD_JAVA_S60_RELEASE_9_2_ONWARDS RD_JAVA_S60_RELEASE_5_0_ONWARDS RD_JAVA_UI_QT RD_JAVA_STDCPPV5 RD_JAVA_EPOCALLOWDLLDATA_FIX RD_JAVA_HTTP_EMC_ENABLED RD_JAVA_NGA_ENABLED SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK RD_JAVA_PROXIMITY_LISTENER_ENABLED RD_JAVA_OPENC_BETA_PATCH OPENLCDUI_ENABLED RD_JAVA_OPENLCDUI_ENABLED RD_JAVA_INSTALLERUI_ENABLED RD_JAVA_PREWARM RD_JAVA_ADVANCED_TACTILE_FEEDBACK RD_JAVA_APPLICATION_SETTINGS_QT RD_JAVA_MIDPRMS_DB diff -r 85266cc22c7f -r f40128debb5d inc/java.txt --- a/inc/java.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/inc/java.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,1 +1,1 @@ -2.2.1 +2.2.2 diff -r 85266cc22c7f -r f40128debb5d inc/project_defines.hrh --- a/inc/project_defines.hrh Fri Jun 11 13:33:44 2010 +0300 +++ b/inc/project_defines.hrh Wed Jun 23 18:07:10 2010 +0300 @@ -26,9 +26,6 @@ MACRO RD_JAVA_HTTP_EMC_ENABLED MACRO RD_JAVA_NGA_ENABLED MACRO SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK -MACRO RD_JAVA_USIF_APP_REG -MACRO RD_JAVA_USIF_NOTIFY_APP_ARC -MACRO RD_JAVA_USIF_NOTIFY_PROGRESS MACRO RD_JAVA_PROXIMITY_LISTENER_ENABLED MACRO RD_JAVA_OPENC_BETA_PATCH MACRO OPENLCDUI_ENABLED diff -r 85266cc22c7f -r f40128debb5d javacommons/connectionmanager/inc.s60/connectionmanager.h --- a/javacommons/connectionmanager/inc.s60/connectionmanager.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/connectionmanager/inc.s60/connectionmanager.h Wed Jun 23 18:07:10 2010 +0300 @@ -163,6 +163,7 @@ static HBufC8 * PromptUserSelectNetworkAccessPointL(); static HBufC8 * CreateDescriptorL(const int aType, const int id); + static bool checkIapDefaultL(TUint32 aMatchIapId, TUint32 aDestId, bool aDefault); diff -r 85266cc22c7f -r f40128debb5d javacommons/connectionmanager/src.s60/connectionmanager.cpp --- a/javacommons/connectionmanager/src.s60/connectionmanager.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/connectionmanager/src.s60/connectionmanager.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -65,7 +65,21 @@ EXPORT_C bool ConnectionManager::isIapDefault(TUint32 aMatchIapId, TUint32 aDestId, bool aDefault) { - LOG(ESOCKET,EInfo,"+ConnectionManager::getDefualtId"); + LOG(ESOCKET,EInfo,"+ConnectionManager::isIapDefault"); + bool retVal = false; + TRAPD(err,retVal = checkIapDefaultL(aMatchIapId,aDestId,aDefault)); + if(err!=KErrNone) + { + // error occured + return false; + } + return retVal; +} + +bool ConnectionManager::checkIapDefaultL(TUint32 aMatchIapId, TUint32 aDestId, bool aDefault) +{ + + LOG(ESOCKET,EInfo,"+ConnectionManager::checkIapDefaultL"); TUint32 id = aDestId; TUint32 tmpapId; TCmDefConnType type; @@ -104,8 +118,9 @@ return true; } } - return false; - + return false; + + } // --------------------------------------------------------------------------- diff -r 85266cc22c7f -r f40128debb5d javacommons/fileutils/tsrc/fileutilstestinit/build/javafileutilstestinit.pro --- a/javacommons/fileutils/tsrc/fileutilstestinit/build/javafileutilstestinit.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/fileutils/tsrc/fileutilstestinit/build/javafileutilstestinit.pro Wed Jun 23 18:07:10 2010 +0300 @@ -21,7 +21,6 @@ symbian { TARGET.CAPABILITY = all -tcb - INCLUDEPATH += /epoc32/include/caf LIBS += -lcaf -lcafutils -lefsrv -lDrmParsers -lDRMServerInterfaces } diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java --- a/javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -115,7 +115,7 @@ */ public String toString() { - return "javax.microedition.io.PushRegistryPermission"; + return "javax.microedition.io.PushRegistry"; } /** diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java --- a/javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java Wed Jun 23 18:07:10 2010 +0300 @@ -95,7 +95,17 @@ public String toString() { - return "javax.microedition.io.FileProtocolPermission"; + if (intent.equals("read")) + { + return "javax.microedition.io.Connector.file.read"; + } + + if (intent.equals("write")) + { + return "javax.microedition.io.Connector.file.write"; + } + + return null; } /** diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/file/tsrc/mt/filetestinit/build/javafiletestinit.pro --- a/javacommons/gcfprotocols/file/tsrc/mt/filetestinit/build/javafiletestinit.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/file/tsrc/mt/filetestinit/build/javafiletestinit.pro Wed Jun 23 18:07:10 2010 +0300 @@ -21,7 +21,6 @@ symbian { TARGET.CAPABILITY = all -tcb - INCLUDEPATH += /epoc32/include/caf LIBS += -lcaf -lcafutils -lefsrv -lDrmParsers -lDRMServerInterfaces } diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java --- a/javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -45,7 +45,7 @@ public String toString() { - return "javax.microedition.io.HttpProtocolPermission"; + return "javax.microedition.io.Connector.http"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java --- a/javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -51,7 +51,7 @@ public String toString() { - return "javax.microedition.io.HttpsProtocolPermission"; + return "javax.microedition.io.Connector.https"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java --- a/javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -55,7 +55,7 @@ public String toString() { - return "javax.microedition.io.SSLProtocolPermission"; + return "javax.microedition.io.Connector.ssl"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java --- a/javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -55,7 +55,7 @@ public String toString() { - return "javax.microedition.io.SocketProtocolPermission"; + return "javax.microedition.io.Connector.socket"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javacommons/javaenv/tsrc/build/alltests.mmp --- a/javacommons/javaenv/tsrc/build/alltests.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/javaenv/tsrc/build/alltests.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -22,8 +22,6 @@ #include <../../../../inc/java_stdcpp_support_for_exe.hrh> #include -//SYSTEMINCLUDE /epoc32/include - USERINCLUDE ../../../inc USERINCLUDE ../../../../tools/cpputest/include/cpputest USERINCLUDE ../../../../tools/cpputest/include/platforms/symbian diff -r 85266cc22c7f -r f40128debb5d javacommons/javastorage/tsrc/storageclient/build/alltests.mmp --- a/javacommons/javastorage/tsrc/storageclient/build/alltests.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/javastorage/tsrc/storageclient/build/alltests.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -22,7 +22,7 @@ #include <../../../../../inc/java_stdcpp_support_for_exe.hrh> #include -SYSTEMINCLUDE /epoc32/include +APP_LAYER_SYSTEMINCLUDE USERINCLUDE ../../../inc USERINCLUDE ../../../../../tools/cpputest/include/cpputest diff -r 85266cc22c7f -r f40128debb5d javacommons/jvms/j9/exports.inf --- a/javacommons/jvms/j9/exports.inf Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -/* -* Copyright (c) 2010 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: -* -*/ - -PRJ_PLATFORMS -default - -#ifndef RD_JAVA_SF_BUILD -#include "s60/exports.inf" -#endif diff -r 85266cc22c7f -r f40128debb5d javacommons/jvms/j9/j9.pro --- a/javacommons/jvms/j9/j9.pro Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -# -# Copyright (c) 2010 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: -# - -TEMPLATE = subdirs - -# Export J9 only when available here (not available here in SF builds) -# (use indirection through ./exports.inf for pregenerated bld.inf variation) -exists($${_PRO_FILE_PWD_}/s60/exports.inf): { - BLD_INF_RULES.prj_extensions += "$${LITERAL_HASH}include \"exports.inf\"" \ -} diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/att_manufacturer.txt --- a/javacommons/security/data/att_manufacturer.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/att_manufacturer.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/att_operatorextra.txt --- a/javacommons/security/data/att_operatorextra.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/att_operatorextra.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/msa_manufacturer.txt --- a/javacommons/security/data/msa_manufacturer.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/msa_manufacturer.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/msa_operator.txt --- a/javacommons/security/data/msa_operator.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/msa_operator.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/msa_trustedthirdparty.txt --- a/javacommons/security/data/msa_trustedthirdparty.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/msa_trustedthirdparty.txt Wed Jun 23 18:07:10 2010 +0300 @@ -71,6 +71,8 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/msa_untrusted.txt --- a/javacommons/security/data/msa_untrusted.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/msa_untrusted.txt Wed Jun 23 18:07:10 2010 +0300 @@ -60,6 +60,8 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/s60_manufacturer.txt --- a/javacommons/security/data/s60_manufacturer.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/s60_manufacturer.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/s60_operator.txt --- a/javacommons/security/data/s60_operator.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/s60_operator.txt Wed Jun 23 18:07:10 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/s60_trustedthirdparty.txt --- a/javacommons/security/data/s60_trustedthirdparty.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/s60_trustedthirdparty.txt Wed Jun 23 18:07:10 2010 +0300 @@ -72,6 +72,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { + +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/data/s60_untrusted.txt --- a/javacommons/security/data/s60_untrusted.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/data/s60_untrusted.txt Wed Jun 23 18:07:10 2010 +0300 @@ -60,6 +60,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { + +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java --- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Wed Jun 23 18:07:10 2010 +0300 @@ -359,7 +359,8 @@ ((PolicyBasedPermission)grantedPermissions.elementAt(i)); UserSecuritySettings settings = permission.getUserSecuritySettings(); - if (settings == null) + if (permission.getType() != PolicyBasedPermission.USER_TYPE + || settings == null) { // not a user permission -> move on to the next permission Logger.log("Permission " + permission.getName() + " is not a user permission, therefore is is not returned as part of the group of blanket permissions"); @@ -586,7 +587,9 @@ for (int i=0; i hande it as deny + Logger.logWarning("User permission was denied by platform since it did not provide any security prompt question " + userPermission); + return handleDenyAnswer(settings); + } // check if the two texts are equal if ((mostPowerfulInteractionModeText != null && mostPowerfulInteractionModeText.equalsIgnoreCase( diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java Wed Jun 23 18:07:10 2010 +0300 @@ -194,7 +194,6 @@ PERMISSION_MAPPING_TABLE.put( "javax.microedition.io.Connector.vtag", new MIDPPermission( "com.nokia.mj.impl.ccapi.utils.ContactlessCommunicationPermission", "vtag://*", "open")); - // add name of MIDP3 class permissions PERMISSION_MAPPING_TABLE.put( "javax.microedition.io.SocketProtocolPermission", new MIDPPermission( "com.nokia.mj.impl.gcf.protocol.socket.SocketPermissionImpl", "socket://*")); @@ -229,6 +228,9 @@ "javax.microedition.midlet.AutoStartPermission", new MIDPPermission( "com.nokia.mj.impl.installer.utils.AutoStartPermission", null)); PERMISSION_MAPPING_TABLE.put( + "AutoStartPermission", new MIDPPermission( + "com.nokia.mj.impl.installer.utils.AutoStartPermission", null)); + PERMISSION_MAPPING_TABLE.put( "javax.microedition.midlet.CmdLineArgsPermission", new MIDPPermission( "com.nokia.mj.impl.rt.utils.CmdLineArgsPermission", null)); PERMISSION_MAPPING_TABLE.put( diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java Wed Jun 23 18:07:10 2010 +0300 @@ -26,6 +26,7 @@ public static final int USER_TYPE = 1; public static final int ALLOWED_TYPE = 2; public static final int ASSIGNED_TYPE = 3; + public static final int USER_ASSIGNED_TYPE = 4; public String getName(); public String getTarget(); diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -33,17 +33,27 @@ String name, String target, String actionList, + int type, UserSecuritySettings userSettings, PermissionBase securityPromptDetails) { super(name, target, actionList, userSettings, securityPromptDetails); + this.type = type; + } - this.type = USER_TYPE; + public PolicyBasedPermissionImpl( + String name, + String target, + String actionList, + int type, + UserSecuritySettings userSettings) + { + this(name, target, actionList, type, userSettings, null); } public PolicyBasedPermissionImpl(PolicyBasedPermission p) { - this(p.getName(), p.getTarget(), p.getActionList(), + this(p.getName(), p.getTarget(), p.getActionList(), p.getType(), (p.getUserSecuritySettings() != null ? new UserSecuritySettingsImpl(p.getUserSecuritySettings().getName(), p.getUserSecuritySettings().getCurrentInteractionMode(), @@ -57,7 +67,7 @@ String actionList, UserSecuritySettings userSettings) { - this(name, target, actionList, userSettings, null); + this(name, target, actionList, USER_TYPE, userSettings, null); } @@ -67,10 +77,7 @@ String actionList, int type) { - super(name, target, actionList, null); - - // Check type - this.type = type; + this(name, target, actionList, type, null, null); } public int getType() diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java Wed Jun 23 18:07:10 2010 +0300 @@ -25,6 +25,7 @@ public interface UserSecuritySettings { // interaction modes + public static final int UNDEFINED_INTERACTION_MODE = -1; public static final int ONESHOT_INTERACTION_MODE = 1; public static final int SESSION_INTERACTION_MODE = 2; public static final int BLANKET_INTERACTION_MODE = 3; @@ -55,6 +56,7 @@ public static final String SECURITY_WARNINGS_DEFAULT_MODE = "2"; public String getName(); + public boolean isActive(); public int getCurrentInteractionMode(); public int[] getAllowedInteractionModes(); public boolean isInteractionModeAllowed(int interactionMode); diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -33,6 +33,7 @@ private int[] allowedInteractionModes; private boolean blanketPrompt; private static ResourceLoader resLoader = null; + private boolean active; private static final String NET_ACCESS_ID = "setting_net_access"; private static final String LOW_LEVEL_NET_ACCESS_ID = "setting_low_level_net_access"; @@ -65,12 +66,28 @@ String name, int currentInteractionMode, int[] allowedInteractionModes, - boolean blanketPrompt) + boolean blanketPrompt, + boolean active) { this.name = name; setCurrentInteractionMode(currentInteractionMode); setAllowedInteractionModes(allowedInteractionModes); this.blanketPrompt = blanketPrompt; + this.active = active; + } + + public UserSecuritySettingsImpl( + String name, + int currentInteractionMode, + int[] allowedInteractionModes, + boolean blanketPrompt) + { + this(name, currentInteractionMode, allowedInteractionModes, blanketPrompt, true); + } + + public boolean isActive() + { + return active; } public String getName() diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Wed Jun 23 18:07:10 2010 +0300 @@ -314,12 +314,13 @@ StorageNames.NAME); String actionList = getStorageAttributeValue(permEntries[i], StorageNames.ACTION); - String fgName = getStorageAttributeValue(permEntries[i], - StorageNames.FUNCTION_GROUP); - if (fgName != null) + FunctionGroup fg = decodeFunctionGroup( + getStorageAttributeValue(permEntries[i], + StorageNames.FUNCTION_GROUP)); + if (fg != null) { UserSecuritySettings cachedSettings = - (UserSecuritySettings)fGroups.get(fgName); + (UserSecuritySettings)fGroups.get(fg.name); if (cachedSettings != null) { permissions.addElement( @@ -327,6 +328,7 @@ className, target, actionList, + fg.type, cachedSettings)); } else @@ -338,7 +340,7 @@ appUID.getStringValue())); fgQuery.addAttribute(new StorageAttribute( StorageNames.FUNCTION_GROUP, - fgName)); + fg.name)); fgQuery.addAttribute(new StorageAttribute( StorageNames.ALLOWED_SETTINGS, "")); @@ -364,17 +366,19 @@ String blanketPrompt = getStorageAttributeValue(fgEntries[0], StorageNames.BLANKET_PROMPT); UserSecuritySettings settings = new UserSecuritySettingsImpl( - fgName, + fg.name, currentSetting, decodeAllowedSettings(allowedSettings), - ("1".equals(blanketPrompt) ? true : false)); + ("1".equals(blanketPrompt) ? true : false), + fg.isActive); permissions.addElement( new PolicyBasedPermissionImpl( className, target, actionList, + fg.type, settings)); - fGroups.put(fgName, settings); + fGroups.put(fg.name, settings); } catch (NumberFormatException e) { @@ -394,7 +398,10 @@ null)); } // cleanup the query, so it can be used at the next interation - query.removeAttribute(fgName); + if (fg != null) + { + query.removeAttribute(fg.name); + } } } // add the non user permissions into the set of returned permissions @@ -483,7 +490,33 @@ StorageAttribute fgAttribute = new StorageAttribute( StorageNames.FUNCTION_GROUP, fgName); - permEntry.addAttribute(fgAttribute); + if (p.getType() == PolicyBasedPermission.USER_ASSIGNED_TYPE + || !settings.isActive()) + { + // the inactive settings or the settings of assigned + // permissions with user settings should be activated + // only after the first usage of the permission. + // Otherwise it creates confusion for the user, + // like in the following use cases: + // 1) the installation time dialog would include the assigned + // permissions even though the MIDlet did not request it + // 2) after installing a MIDlet suite and before accessing + // some protected functionality (which is guarder by + // assigned permission with user setting) the user sees + // the settings of the permissions in the MIDlet settings + // (even though the MIDlet might never access such + // functionality) + // + // disabling the settings = alter the name of the function + // group stored in PERMISSIONS table + permEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + encodeFunctionGroup(p.getType(),fgName))); + } + else + { + permEntry.addAttribute(fgAttribute); + } // Do we need to check if the settings which already exist // are equal to the ones which are to be inserted? // This won't even happen, since all the settings are read @@ -722,6 +755,10 @@ validCerts)); } int securityWarningsMode = data.getSecurityWarningsMode(); + if (update) + { + securityWarningsMode = readSecurityWarningsMode(appUID); + } if (securityWarningsMode == GeneralSecuritySettings.DEFAULT_SECURITY_MODE || securityWarningsMode == GeneralSecuritySettings.USER_SECURITY_MODE) { @@ -1014,6 +1051,42 @@ } } } + + /** + * Activates user security settings + * + * @param appUID the UID of the application whose user + settings are activatesversion is read + * @param settingsName the name of permission whose settings + * which are activated + */ + public void activateUserSecuritySettings( + Uid msUID, + PolicyBasedPermission permission) + { + if (permission.getUserSecuritySettings() == null) + { + return; + } + StorageEntry oldEntry = new StorageEntry(); + oldEntry.addAttribute(new StorageAttribute( + StorageAttribute.ID, + msUID.getStringValue())); + oldEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + encodeFunctionGroup(permission.getType(), + permission.getUserSecuritySettings().getName()))); + StorageEntry newEntry = new StorageEntry(); + newEntry.addAttribute(new StorageAttribute( + StorageAttribute.ID, + msUID.getStringValue())); + newEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + permission.getUserSecuritySettings().getName())); + doStorageUpdate(StorageNames.MIDP_PERMISSIONS_TABLE, + newEntry, + oldEntry); + } /** * Reads the value of the suite version attribute @@ -1213,16 +1286,24 @@ if (oldSettings != null && newSettings != null) { + boolean activeSettings = false; + if (oldSettings.isActive() + || newSettings.isActive()) + { + activeSettings = true; + } newGrantedPermissions.addElement( new PolicyBasedPermissionImpl( p.getName(), p.getTarget(), p.getActionList(), + p.getType(), new UserSecuritySettingsImpl( newSettings.getName(), oldSettings.getCurrentInteractionMode(), newSettings.getAllowedInteractionModes(), - oldSettings.getBlanketPrompt()))); + oldSettings.getBlanketPrompt(), + activeSettings))); } else { @@ -1792,4 +1873,46 @@ } return NOT_FOUND; } + + private String encodeFunctionGroup(int type, String name) + { + return (type + ";" + name); + } + + private FunctionGroup decodeFunctionGroup(String fg) + { + boolean isActive = true; + if (fg != null) + { + int sepIndex = fg.indexOf(";"); + int type = PolicyBasedPermission.USER_TYPE; + if (sepIndex != -1) + { + isActive = false; + try + { + type = Integer.valueOf( + fg.substring(0, sepIndex)).intValue(); + } + catch (NumberFormatException e) + { + } + } + return new FunctionGroup(type, fg.substring(sepIndex + 1), isActive); + } + return null; + } + + private class FunctionGroup + { + FunctionGroup(int type, String name, boolean isActive) + { + this.type = type; + this.name = name; + this.isActive = isActive; + } + private boolean isActive; + private int type; + private String name; + } } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/javaunicertstoreplugin/src.s60/200213A3.rss --- a/javacommons/security/javaunicertstoreplugin/src.s60/200213A3.rss Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/javaunicertstoreplugin/src.s60/200213A3.rss Wed Jun 23 18:07:10 2010 +0300 @@ -18,7 +18,7 @@ // INCLUDES -#include +#include #include // Some defines of useful values for attributes to simplify diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/midp2userpreferences/build/midp2userpreferences.pro --- a/javacommons/security/legacysupport/midp2userpreferences/build/midp2userpreferences.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/midp2userpreferences/build/midp2userpreferences.pro Wed Jun 23 18:07:10 2010 +0300 @@ -19,11 +19,7 @@ CONFIG += omj stl CONFIG -= qt -INCLUDEPATH += /epoc32/include/j2me/midp2/data \ - ../../../../../inc/j2me/midp2/security \ - ../../../../../inc/j2me/midp2/runtime \ - ../../../../../inc/j2me/midp2/dbv2 \ - ../../storageutils/inc +INCLUDEPATH += ../../storageutils/inc SOURCES += ../../storageutils/src/*.cpp \ ../src/*.cpp diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/midp2userpreferences/src/MIDP2UserPreferences.cpp --- a/javacommons/security/legacysupport/midp2userpreferences/src/MIDP2UserPreferences.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/midp2userpreferences/src/MIDP2UserPreferences.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -22,8 +22,8 @@ #include "UserPreferencesIterator.h" #include "MIDletSuiteUserPreferences.h" #include "MIDletSuiteCustomAttributes.h" -#include -#include +#include "MUserSecurityPreferencesTable.h" +#include "j2me/midp2/security/MSecurityPolicyV2.h" #include "SecurityPreferences.h" #include "javauid.h" diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/tsrc/build/securitylegacysupportunittests.mmp --- a/javacommons/security/legacysupport/tsrc/build/securitylegacysupportunittests.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/tsrc/build/securitylegacysupportunittests.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -22,11 +22,6 @@ #include <../../../../../inc/java_stdcpp_support_for_exe.hrh> #include -SYSTEMINCLUDE /epoc32/include -SYSTEMINCLUDE ../../../../../inc/j2me/midp2/security -SYSTEMINCLUDE ../../../../../inc/j2me/midp2/data -SYSTEMINCLUDE ../../../../../inc/j2me/midp2/runtime - USERINCLUDE ../../../../../tools/cpputest/include/cpputest USERINCLUDE ../../../../../tools/cpputest/include/platforms/symbian USERINCLUDE ../../../../../inc diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/tsrc/src/testpermissiondb.cpp --- a/javacommons/security/legacysupport/tsrc/src/testpermissiondb.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/tsrc/src/testpermissiondb.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -23,7 +23,7 @@ #include "javastoragenames.h" #include "javauid.h" -#include +#include "j2me/midp2/security/midp2permissiondb.h" using namespace MIDP; using namespace java::storage; diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/tsrc/src/testsecuritypolicy.cpp --- a/javacommons/security/legacysupport/tsrc/src/testsecuritypolicy.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/tsrc/src/testsecuritypolicy.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -20,7 +20,7 @@ #include "TestHarness.h" -#include +#include "j2me/midp2/security/msecuritypolicyv2.h" using namespace MIDP; diff -r 85266cc22c7f -r f40128debb5d javacommons/security/legacysupport/tsrc/src/testuserpreferences.cpp --- a/javacommons/security/legacysupport/tsrc/src/testuserpreferences.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/legacysupport/tsrc/src/testuserpreferences.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -25,11 +25,11 @@ #include "javauid.h" #include "javasymbianoslayer.h" -#include -#include -#include -#include -#include +#include "j2me/midp2/data/muserpreferences.h" +#include "j2me/midp2/data/mmidletsuiteuserpreferencesiterator.h" +#include "j2me/midp2/data/mmidletsuiteuserpreferences.h" +#include "j2me/midp2/data/mmidletsuitecustomattributes.h" +#include "j2me/midp2/security/msecuritypolicyv2.h" using namespace MIDP; using namespace java::storage; diff -r 85266cc22c7f -r f40128debb5d javacommons/security/src.s60/telutils.cpp --- a/javacommons/security/src.s60/telutils.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/src.s60/telutils.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -63,6 +63,18 @@ } } +signed int TelUtils::getSecureTime() +{ + TTime t; + if (t.UniversalTimeSecure()) + { + t.UniversalTime(); + } + TTimeIntervalSeconds sec; + TTime baseTime(MAKE_TINT64(0x00dcddb3 ,0x0f2f8000)); // 1st Jan 1970 + t.SecondsFrom(baseTime, sec); + return sec.Int(); +} void TelUtils::ConstructL() { diff -r 85266cc22c7f -r f40128debb5d javacommons/security/src.s60/telutils.h --- a/javacommons/security/src.s60/telutils.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/src.s60/telutils.h Wed Jun 23 18:07:10 2010 +0300 @@ -35,6 +35,7 @@ static TelUtils* createInstance(); void getNetworkCodes(std::string& mnc, std::string& mcc); void getImei(std::string& imei); + static signed int getSecureTime(); virtual ~TelUtils(); private: //Methods diff -r 85266cc22c7f -r f40128debb5d javacommons/security/src/midpauthenticationmoduleimpl.cpp --- a/javacommons/security/src/midpauthenticationmoduleimpl.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/src/midpauthenticationmoduleimpl.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -22,6 +22,7 @@ #include "midpauthenticationmoduleimpl.h" #include "storagehandler.h" #include "securityutils.h" +#include "telutils.h" #include "javacertstorehandler.h" #include "securitycommsmessagedefs.h" #include "javastorage.h" @@ -38,7 +39,6 @@ #include #include #include -#include #include using namespace java::security; @@ -455,9 +455,7 @@ break; } - struct timeval tv; - int i = gettimeofday(&tv, NULL); - X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, tv.tv_sec); + X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, TelUtils::getSecureTime()); // set the callback for validation - needed for the critical extension // used by developer certificates X509_STORE_CTX_set_verify_cb(x509_ctx, verify_callback); @@ -475,7 +473,7 @@ { bool extKeyUsageKnown = false; char EXT_KEY_USAGE_OID[80]; - for (i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) + for (int i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) { ASN1_OBJECT *usage = sk_ASN1_OBJECT_value(extKeyUsage,i); OBJ_obj2txt(EXT_KEY_USAGE_OID, diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java --- a/javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java Wed Jun 23 18:07:10 2010 +0300 @@ -32,6 +32,11 @@ return null; } + public boolean isActive() + { + return true; + } + public int getCurrentInteractionMode() { return 0; diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java --- a/javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java Wed Jun 23 18:07:10 2010 +0300 @@ -22,6 +22,11 @@ private class myInnerClass implements com.nokia.mj.impl.security.midp.common.UserSecuritySettings { + + public boolean isActive() + { + return true; + } public String getName() { diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/policies/all.txt --- a/javacommons/security/tsrc/data/policies/all.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/all.txt Wed Jun 23 18:07:10 2010 +0300 @@ -3,5 +3,4 @@ grant assigned { permission java.util.PropertyPermission "microedition.*" "read"; permission javax.microedition.PropertyPermission "mobinfo.publicinfo" "read"; - permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/policies/test_manufacturer.txt --- a/javacommons/security/tsrc/data/policies/test_manufacturer.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_manufacturer.txt Wed Jun 23 18:07:10 2010 +0300 @@ -34,5 +34,8 @@ } grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/policies/test_operator.txt --- a/javacommons/security/tsrc/data/policies/test_operator.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_operator.txt Wed Jun 23 18:07:10 2010 +0300 @@ -34,5 +34,8 @@ } grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt --- a/javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt Wed Jun 23 18:07:10 2010 +0300 @@ -72,3 +72,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } + +grant assigned "Location" { + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; +} diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/policies/test_untrusted.txt --- a/javacommons/security/tsrc/data/policies/test_untrusted.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_untrusted.txt Wed Jun 23 18:07:10 2010 +0300 @@ -60,3 +60,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } + +grant assigned "Location" { + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; +} diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/assigned_settings_only.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/assigned_settings_only.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,4 @@ +domain operator; +grant assigned "Settings" oneshot { + permission assigned.permission.invalid.settings; +} diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/assigned_settings_orphaned.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/assigned_settings_orphaned.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,4 @@ +domain operator; +grant assigned "Settings" { + permission assigned.permission.orphaned; +} diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/assigned_and_user_settings.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_and_user_settings.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,3 @@ +domain=mydomain +user_assigned?Settings:blanket:no?assigned.user.permission +user?Settings:blanket:no?user.permission diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_only.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_only.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,2 @@ +domain=operator +user_assigned?Settings:oneshot:no?assigned.permission.invalid.settings diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_orphaned.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_orphaned.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,2 @@ +domain=operator +assigned?assigned.permission.orphaned diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,2 +1,2 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,17 +1,17 @@ domain=IdentifiedThirdParty -user,NetAccess:session:blanket:oneshot:no,javax.microedition.io.HttpProtocolPermission,http://* -user,NetAccess:session:blanket:oneshot:no,javax.microedition.io.HttpsProtocolPermission,https://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.DatagramProtocolPermission,datagram://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.DatagramProtocolPermission,datagram:// -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SocketProtocolPermission,socket://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SocketProtocolPermission,socket:// -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SSLProtocolPermission,ssl://* -user,ApplicationAutoInvocation:oneshot:blanket:session:no,javax.microedition.io.PushRegistryPermission,* -user,LocalConnectivity:session:blanket:oneshot:no,javax.microedition.io.CommProtocolPermission,comm:* -user,MultimediaRecording:session:blanket:oneshot:no,javax.microedition.media.PlayerPermission,*,record -user,MultimediaRecording:session:blanket:oneshot:no,javax.microedition.media.PlayerPermission,*,snapshot -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +user?NetAccess:session:blanket:oneshot:no?javax.microedition.io.HttpProtocolPermission,http://* +user?NetAccess:session:blanket:oneshot:no?javax.microedition.io.HttpsProtocolPermission,https://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.DatagramProtocolPermission,datagram://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.DatagramProtocolPermission,datagram:// +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SocketProtocolPermission,socket://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SocketProtocolPermission,socket:// +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SSLProtocolPermission,ssl://* +user?ApplicationAutoInvocation:oneshot:blanket:session:no?javax.microedition.io.PushRegistryPermission,* +user?LocalConnectivity:session:blanket:oneshot:no?javax.microedition.io.CommProtocolPermission,comm:* +user?MultimediaRecording:session:blanket:oneshot:no?javax.microedition.media.PlayerPermission,*,record +user?MultimediaRecording:session:blanket:oneshot:no?javax.microedition.media.PlayerPermission,*,snapshot +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,3 +1,3 @@ domain=Manufacturer -allowed,javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpProtocolPermission,http://* diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,23 +1,23 @@ domain=Manufacturer -allowed,javax.microedition.io.HttpProtocolPermission,http://* -allowed,javax.microedition.io.HttpsProtocolPermission,https://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram:// -allowed,javax.microedition.io.SocketProtocolPermission,socket://* -allowed,javax.microedition.io.SocketProtocolPermission,socket:// -allowed,javax.microedition.io.SSLProtocolPermission,ssl://* -allowed,javax.microedition.io.PushRegistryPermission,* -allowed,javax.microedition.io.CommProtocolPermission,comm:* -allowed,javax.microedition.media.PlayerPermission,*,record -allowed,javax.microedition.media.PlayerPermission,*,snapshot -allowed,java.util.PropertyPermission,*,read -allowed,javax.microedition.event.EventPermission,*,read -allowed,javax.microedition.event.EventPermission,*,register -allowed,javax.microedition.event.EventPermission,*,post -allowed,javax.microedition.midlet.ActionsDeniedPermission -allowed,javax.microedition.midlet.AutoStartPermission -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +allowed?javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpsProtocolPermission,https://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram:// +allowed?javax.microedition.io.SocketProtocolPermission,socket://* +allowed?javax.microedition.io.SocketProtocolPermission,socket:// +allowed?javax.microedition.io.SSLProtocolPermission,ssl://* +allowed?javax.microedition.io.PushRegistryPermission,* +allowed?javax.microedition.io.CommProtocolPermission,comm:* +allowed?javax.microedition.media.PlayerPermission,*,record +allowed?javax.microedition.media.PlayerPermission,*,snapshot +allowed?java.util.PropertyPermission,*,read +allowed?javax.microedition.event.EventPermission,*,read +allowed?javax.microedition.event.EventPermission,*,register +allowed?javax.microedition.event.EventPermission,*,post +allowed?javax.microedition.midlet.ActionsDeniedPermission +allowed?javax.microedition.midlet.AutoStartPermission +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,3 +1,3 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,3 +1,3 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,22 +1,22 @@ domain=Operator -allowed,javax.microedition.io.HttpProtocolPermission,http://* -allowed,javax.microedition.io.HttpsProtocolPermission,https://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram:// -allowed,javax.microedition.io.SocketProtocolPermission,socket://* -allowed,javax.microedition.io.SocketProtocolPermission,socket:// -allowed,javax.microedition.io.SSLProtocolPermission,ssl://* -allowed,javax.microedition.io.PushRegistryPermission,* -allowed,javax.microedition.io.CommProtocolPermission,comm:* -allowed,javax.microedition.media.PlayerPermission,*,record -allowed,javax.microedition.media.PlayerPermission,*,snapshot -allowed,java.util.PropertyPermission,*,read -allowed,javax.microedition.event.EventPermission,*,read -allowed,javax.microedition.event.EventPermission,*,register -allowed,javax.microedition.event.EventPermission,*,post -allowed,javax.microedition.midlet.ActionsDeniedPermission -allowed,javax.microedition.midlet.AutoStartPermission -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +allowed?javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpsProtocolPermission,https://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram:// +allowed?javax.microedition.io.SocketProtocolPermission,socket://* +allowed?javax.microedition.io.SocketProtocolPermission,socket:// +allowed?javax.microedition.io.SSLProtocolPermission,ssl://* +allowed?javax.microedition.io.PushRegistryPermission,* +allowed?javax.microedition.io.CommProtocolPermission,comm:* +allowed?javax.microedition.media.PlayerPermission,*,record +allowed?javax.microedition.media.PlayerPermission,*,snapshot +allowed?java.util.PropertyPermission,*,read +allowed?javax.microedition.event.EventPermission,*,read +allowed?javax.microedition.event.EventPermission,*,register +allowed?javax.microedition.event.EventPermission,*,post +allowed?javax.microedition.midlet.ActionsDeniedPermission +allowed?javax.microedition.midlet.AutoStartPermission +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission -allowed,javax.microedition.midlet.OtherAutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.OtherAutoStartPermission diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt Wed Jun 23 18:07:10 2010 +0300 @@ -1,16 +1,16 @@ domain=UnidentifiedThirdParty -user,NetAccess:oneshot:session:no,javax.microedition.io.HttpProtocolPermission,http://* -user,NetAccess:oneshot:session:no,javax.microedition.io.HttpsProtocolPermission,https://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.DatagramProtocolPermission,datagram://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.DatagramProtocolPermission,datagram:// -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SocketProtocolPermission,socket://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SocketProtocolPermission,socket:// -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SSLProtocolPermission,ssl://* -user,ApplicationAutoInvocation:oneshot:session:no,javax.microedition.io.PushRegistryPermission,* -user,LocalConnectivity:session:blanket:oneshot:no,javax.microedition.io.CommProtocolPermission,comm:* -user,MultimediaRecording:session:oneshot:no,javax.microedition.media.PlayerPermission,*,record -user,MultimediaRecording:session:oneshot:no,javax.microedition.media.PlayerPermission,*,snapshot -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +user?NetAccess:oneshot:session:no?javax.microedition.io.HttpProtocolPermission,http://* +user?NetAccess:oneshot:session:no?javax.microedition.io.HttpsProtocolPermission,https://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.DatagramProtocolPermission,datagram://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.DatagramProtocolPermission,datagram:// +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SocketProtocolPermission,socket://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SocketProtocolPermission,socket:// +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SSLProtocolPermission,ssl://* +user?ApplicationAutoInvocation:oneshot:session:no?javax.microedition.io.PushRegistryPermission,* +user?LocalConnectivity:session:blanket:oneshot:no?javax.microedition.io.CommProtocolPermission,comm:* +user?MultimediaRecording:session:oneshot:no?javax.microedition.media.PlayerPermission,*,record +user?MultimediaRecording:session:oneshot:no?javax.microedition.media.PlayerPermission,*,snapshot +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -740,7 +740,27 @@ UserSecuritySettings.SESSION_INTERACTION_MODE})), new PolicyBasedPermissionImpl("java.util.PropertyPermission", "microedition.*", "read", null), new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.publicinfo", "read", null), - new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.cellid", "read", null), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.cellid", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.countrycode", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.networkid", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), new PolicyBasedPermissionImpl("com.nokia.ext2.internal.Ext2Perm", "ext2.target4", "ext2.action4", null), })); // getBlanketPermissions: while installing V1 the permissions are not put to blanket, while installing V2 there are some blanket permissions returned @@ -779,6 +799,8 @@ StorageNames.VALUE, "MIICWDCCAcECBEhQwOgwDQYJKoZIhvcNAQEEBQAwczELMAkGA1UEBhMCZmkxEjAQBgNVBAgTCVBpcmthbm1hYTEQMA4GA1UEBxMHVGFtcGVyZTEOMAwGA1UEChMFTm9raWExDTALBgNVBAsTBEphdmExHzAdBgNVBAMMFkpQX1RoaXJkX1BhcnR5X1RydXN0ZWQwHhcNMDgwNjEyMDYyMzM2WhcNMTgwNjEwMDYyMzM2WjBzMQswCQYDVQQGEwJmaTESMBAGA1UECBMJUGlya2FubWFhMRAwDgYDVQQHEwdUYW1wZXJlMQ4wDAYDVQQKEwVOb2tpYTENMAsGA1UECxMESmF2YTEfMB0GA1UEAwwWSlBfVGhpcmRfUGFydHlfVHJ1c3RlZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArAesh03rswICRUjexWMoIH9ZZqUtlx+tfhZhuzuYhiL6cLdhxNlU8yuIdw4f17XP3yxVIB8rz1EEagCMd0Y5ZleNFZ992ReLcf9VH13RxaZ88PRxBLLROm1jcwTknYSS6AxGMup77DMwwFSN8XPnOHWt4aLGUrecMeUyI2c5UbsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQAylJ+3aSq6a7AAL7UM8V8JhGZlLneErF7A/BJGDi7Vmr5gmlGyf6RCJJIg4qCp+J3Tv3eCRNNuphQaSRdFpaulwCmtfCzSZNtvZg0VhMOVsZqTwQgmP6NzKoIbqqzlgm5U+yUJw8FmX17vgdeSEdJ/oL/WT4AKrWFJYl8MdQ9ZnQ==")); session.write(StorageNames.APPLICATION_PACKAGE_ATTRIBUTES_TABLE, appPackageEntry); + permissionGranter.cleanup(); + PermissionResolver.testClearCache(); allAttributes.clear(); allAttributes.put(MIDP_PROFILE_ATTRIBUTE_NAME,new Attribute("",MIDP2)); allAttributes.put(AuthenticationAttribute.MAIN_ATTRIBUTE_PREFIX + "1-1", new Attribute("", "MIICWDCCAcECBEhQwOgwDQYJKoZIhvcNAQEEBQAwczELMAkGA1UEBhMCZmkxEjAQBgNVBAgTCVBpcmthbm1hYTEQMA4GA1UEBxMHVGFtcGVyZTEOMAwGA1UEChMFTm9raWExDTALBgNVBAsTBEphdmExHzAdBgNVBAMMFkpQX1RoaXJkX1BhcnR5X1RydXN0ZWQwHhcNMDgwNjEyMDYyMzM2WhcNMTgwNjEwMDYyMzM2WjBzMQswCQYDVQQGEwJmaTESMBAGA1UECBMJUGlya2FubWFhMRAwDgYDVQQHEwdUYW1wZXJlMQ4wDAYDVQQKEwVOb2tpYTENMAsGA1UECxMESmF2YTEfMB0GA1UEAwwWSlBfVGhpcmRfUGFydHlfVHJ1c3RlZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArAesh03rswICRUjexWMoIH9ZZqUtlx+tfhZhuzuYhiL6cLdhxNlU8yuIdw4f17XP3yxVIB8rz1EEagCMd0Y5ZleNFZ992ReLcf9VH13RxaZ88PRxBLLROm1jcwTknYSS6AxGMup77DMwwFSN8XPnOHWt4aLGUrecMeUyI2c5UbsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQAylJ+3aSq6a7AAL7UM8V8JhGZlLneErF7A/BJGDi7Vmr5gmlGyf6RCJJIg4qCp+J3Tv3eCRNNuphQaSRdFpaulwCmtfCzSZNtvZg0VhMOVsZqTwQgmP6NzKoIbqqzlgm5U+yUJw8FmX17vgdeSEdJ/oL/WT4AKrWFJYl8MdQ9ZnQ==")); diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -218,6 +218,7 @@ IMPL_PERMISSION_MAPPING_TABLE = PermissionMappingTable.setMappingTable(TestPermissionMappingTable.getMappingTable()); SecurityPolicyModule.policiesDir = TEST_DATA_DIR; SecurityPolicyModule.policiesFileNamePrefix = "test_"; + String[] blanketPermissions = null; // data structures used in tests AuthenticationStorageData authData = null; AuthenticationCredentials[] authCredentials = null; @@ -823,7 +824,6 @@ }, getAssignedPermissions("IdentifiedThirdParty"))); // 19. getBlanketPermissions - null appUID - String[] blanketPermissions = null; storage.removeAuthenticationStorageData(appUID); permissionGranter.removeSecurityData(session, appUID); blanketPermissions = permissionGranter.getBlanketPermissions(null); @@ -975,7 +975,7 @@ ((PolicyBasedPermission)grantedPermissions.elementAt(i)); UserSecuritySettings settings = permission.getUserSecuritySettings(); - if (settings != null) + if (settings != null && settings.getName() == UserSecuritySettings.LOCAL_CONNECTIVITY_SETTINGS) { assertTrue(settings.getCurrentInteractionMode() == UserSecuritySettings.BLANKET_INTERACTION_MODE); } @@ -1041,7 +1041,8 @@ && findString(policyPerms[i].getName(), permissionNameFilter) != -1) || permissionNameFilter == null) && (permissionTypeFilter == null || (permissionTypeFilter.equals("assigned") - && policyPerms[i].getUserSecuritySettings() == null))) + && (policyPerms[i].getType() == PolicyBasedPermission.ASSIGNED_TYPE + || policyPerms[i].getType() == PolicyBasedPermission.USER_ASSIGNED_TYPE)))) { vPermissions.addElement(new MIDPPermission(policyPerms[i].getName(), policyPerms[i].getTarget(), policyPerms[i].getActionList())); } @@ -1087,10 +1088,12 @@ private static MIDPPermission[] getDefaultPermissions() { - MIDPPermission[] defaultPerms = new MIDPPermission[3]; + MIDPPermission[] defaultPerms = new MIDPPermission[5]; defaultPerms[0] = new MIDPPermission("java.util.PropertyPermission", "microedition.*", "read"); defaultPerms[1] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.publicinfo", "read"); defaultPerms[2] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.cellid", "read"); + defaultPerms[3] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.countrycode", "read"); + defaultPerms[4] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.networkid", "read"); return defaultPerms; } diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -39,111 +39,115 @@ static final SecurityPolicyPermission[] MANUFACTURER_PERMS = { - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", null), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,PolicyBasedPermission.ALLOWED_TYPE), }; static final SecurityPolicyPermission[] OPERATOR_PERMS = { - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", null), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,PolicyBasedPermission.ALLOWED_TYPE), }; static final SecurityPolicyPermission[] IDENTIFIED_THIRD_PARTY_PERMS = { @@ -189,18 +193,18 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", new SecurityPolicyPermissionSettings("Read User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -219,7 +223,7 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*", "staticregistration", new SecurityPolicyPermissionSettings("Application Auto Invocation",UserSecuritySettings.BLANKET_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE})), @@ -265,8 +269,16 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, new SecurityPolicyPermissionSettings("Net Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null, null, new SecurityPolicyPermissionSettings("Url start",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -315,18 +327,18 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", new SecurityPolicyPermissionSettings("Read User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -345,7 +357,7 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*", "staticregistration", new SecurityPolicyPermissionSettings("Application Auto Invocation",UserSecuritySettings.BLANKET_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE})), @@ -385,8 +397,16 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, new SecurityPolicyPermissionSettings("Net Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), }; // Begin j2meunit test framework setup diff -r 85266cc22c7f -r f40128debb5d javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -336,7 +336,7 @@ initBoolArray(permsChecked); for (int i=0; i currentToken) + if (permDetails.length > currentToken) { - target = permTokens[currentToken]; + target = permDetails[currentToken]; currentToken++; } - if (permTokens.length > currentToken) + if (permDetails.length > currentToken) { - actionList = permTokens[currentToken]; + actionList = permDetails[currentToken]; actionList = actionList.replace(':',','); } - PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, settings); + PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, type, settings); for (int j=0; j diff -r 85266cc22c7f -r f40128debb5d javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Wed Jun 23 18:07:10 2010 +0300 @@ -260,6 +260,18 @@ } return toString(); } + /** + * Applies convertion from european digits into arabic-indic digits + * based on existing language settings + * + * @param str String which might contain european digits + * @return A string identical with the provided string but with the + * european digits (if any) converted to arabic-indic digits + */ + public static String formatDigits(String str) + { + return _formatDigits(str); + } /*** ----------------------------- PRIVATE ---------------------------- */ @@ -358,4 +370,14 @@ * */ private native String _formatDate(long timeInMilliSecs); + + /** + * Applies convertion from european digits into arabic-indic digits + * based on existing language settings + * + * @param str String which might contain european digits + * @return A string identical with the provided string but with the + * european digits (if any) converted to arabic-indic digits + */ + private static native String _formatDigits(String str); } diff -r 85266cc22c7f -r f40128debb5d javacommons/utils/src.s60/formatternative.cpp --- a/javacommons/utils/src.s60/formatternative.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/utils/src.s60/formatternative.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -19,10 +19,12 @@ //#include #include #include +#include #include "com_nokia_mj_impl_utils_Formatter.h" #include "com_nokia_mj_impl_utils_ResourceLoader.h" #include "javajniutils.h" +#include "s60commonutils.h" #include "logger.h" enum EDateTimeFormat @@ -41,6 +43,7 @@ // const TInt KMaxDateTimeStringSize = 50; const TInt KMaxDateFormatSize = 30; const TInt KMaxNumberFormatSize = 40; +using namespace java::util; // _LIT( KAvkonResFile, "z:\\resource\\avkon.rsc" ); @@ -65,6 +68,7 @@ "Cannot format %d to current locale. Error: %d", aNumber, error); } + AknTextUtils::LanguageSpecificNumberConversion( numberPtr ); return aJni->NewString( (const jchar*)numberPtr.Ptr(), numberPtr.Length()); } @@ -105,3 +109,15 @@ return (jint)User::Language(); } +JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_utils_Formatter__1formatDigits + (JNIEnv * aEnv, jclass, jstring str) +{ + jstring ret = str; + std::wstring wstr = JniUtils::jstringToWstring(aEnv, str); + HBufC* buf = S60CommonUtils::wstringToDes(wstr.c_str()); + TPtr ptr(buf->Des()); + AknTextUtils::LanguageSpecificNumberConversion( ptr ); + ret = S60CommonUtils::NativeToJavaString(*aEnv, ptr); + delete buf; buf = NULL; + return ret; +} diff -r 85266cc22c7f -r f40128debb5d javacommons/utils/src/javainifileutils.cpp --- a/javacommons/utils/src/javainifileutils.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javacommons/utils/src/javainifileutils.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -157,9 +157,9 @@ } rewind(iniFile); data = new char[len+1]; - data[len] = 0; if (data != 0) { + data[len] = 0; fread(data, sizeof(char), len, iniFile); } fclose(iniFile); diff -r 85266cc22c7f -r f40128debb5d javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp --- a/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -148,7 +148,7 @@ TPtrC8 uuidDes(uuidBytes, uuidByteLength); TRAPD(err, uuid.SetL(uuidDes)); - delete uuidBytes; + delete[] uuidBytes; uuidBytes = NULL; if (KErrNone != err) @@ -205,7 +205,7 @@ char *fileName = java::util::JavaCommonUtils::wstringToUtf8( persistentFileName); persistentRecFd = open(fileName, O_RDONLY); - delete fileName; + delete[] fileName; } catch (ExceptionBase ex) { @@ -618,7 +618,7 @@ write(mSrvRecFd, (char *) &aDeviceServiceClasses, sizeof(aDeviceServiceClasses)); - delete fileName; + delete[] fileName; } catch (ExceptionBase ex) { @@ -1286,7 +1286,7 @@ char *fileName = java::util::JavaCommonUtils::wstringToUtf8(persistentFileName); persistentRecFd = open(fileName, O_RDONLY); - delete fileName; + delete[] fileName; } catch (ExceptionBase ex) { @@ -1310,7 +1310,10 @@ unsigned int devServClass = 0; ret = read(persistentRecFd, &devServClass, sizeof(devServClass)); if (ret <= 0) + { + delete srvRecPopulator; return; + } elementBuilder = srvRecPopulator->SetDeviceServiceClass(devServClass); diff -r 85266cc22c7f -r f40128debb5d javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java --- a/javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -47,7 +47,7 @@ public String toString() { - return "javax.microedition.io.CommProtocolPermission"; + return "javax.microedition.io.Connector.comm"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java --- a/javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -56,7 +56,7 @@ public String toString() { - return "javax.microedition.io.DatagramProtocolPermission"; + return "javax.microedition.io.Connector.datagram"; } public boolean implies(Permission p) diff -r 85266cc22c7f -r f40128debb5d javaextensions/midprms_db/javasrc/com/nokia/mj/impl/rms/RmsFileInfo.java --- a/javaextensions/midprms_db/javasrc/com/nokia/mj/impl/rms/RmsFileInfo.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/midprms_db/javasrc/com/nokia/mj/impl/rms/RmsFileInfo.java Wed Jun 23 18:07:10 2010 +0300 @@ -71,7 +71,7 @@ private long getSize() { - long size = 0; + long size = -1; try { size = iFile.fileSize(); @@ -82,6 +82,7 @@ } if (size < 0) { + Logger.WLOG(Logger.EMidpRms, "fileSize = " + size); size = 0; } return size; @@ -102,18 +103,19 @@ private long getFreeSpace() { - long size = 0; + long size = -1; try { size = iFile.availableSize(); } catch (Exception e) { - Logger.ELOG(Logger.EMidpRms, "availableSize()" , e); + Logger.ELOG(Logger.EMidpRms, "availableSize() failed" , e); } if (size < 0) { - size = 0; + Logger.WLOG(Logger.EMidpRms, "availableSize = " + size); + size = MAX_RMS_SIZE; } return size; } diff -r 85266cc22c7f -r f40128debb5d javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java --- a/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java Wed Jun 23 18:07:10 2010 +0300 @@ -28,6 +28,8 @@ private static final String IMSI_TARGET_NAME = "mobinfo.imsi"; private static final String MSISDN_TARGET_NAME = "mobinfo.msisdn"; private static final String CELLID_TARGET_NAME = "mobinfo.cellid"; + private static final String COUNTRYCODE_TARGET_NAME = "mobinfo.countrycode"; + private static final String NETWORKID_TARGET_NAME = "mobinfo.networkid"; private static final String PUBLIC_INFO_TARGET_NAME = "mobinfo.publicinfo"; private String iTarget = null; @@ -40,7 +42,9 @@ if (IMSI_TARGET_NAME.equals(aUri) || MSISDN_TARGET_NAME.equals(aUri) || CELLID_TARGET_NAME.equals(aUri) - || PUBLIC_INFO_TARGET_NAME.equals(aUri)) + || PUBLIC_INFO_TARGET_NAME.equals(aUri) + || COUNTRYCODE_TARGET_NAME.equals(aUri) + || NETWORKID_TARGET_NAME.equals(aUri)) { // aUri contains a known target name -> save it as such iTarget = aUri; @@ -62,6 +66,14 @@ { iTarget = CELLID_TARGET_NAME; } + else if (MobileInfoProperties.COUNTRY_CODE.equals(aUri)) + { + iTarget = COUNTRYCODE_TARGET_NAME; + } + else if (MobileInfoProperties.NETWORK_ID.equals(aUri)) + { + iTarget = NETWORKID_TARGET_NAME; + } else { iTarget = PUBLIC_INFO_TARGET_NAME; @@ -78,6 +90,14 @@ */ public String getSecurityPromptQuestion(int aInteractionMode) { + if (CELLID_TARGET_NAME.equals(iTarget) + || COUNTRYCODE_TARGET_NAME.equals(iTarget) + || NETWORKID_TARGET_NAME.equals(iTarget)) + { + return SecurityPromptMessage.getInstance().getText( + SecurityPromptMessage.QUESTION_ID_READING_LOCATION_DATA, + null); + } return null; } @@ -91,6 +111,18 @@ { return "com.nokia.mid.Mobinfo.MSISDN"; } + else if (CELLID_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.cellid"; + } + else if (COUNTRYCODE_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.countrycode"; + } + else if (NETWORKID_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.networkid"; + } return null; } diff -r 85266cc22c7f -r f40128debb5d javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java --- a/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java Wed Jun 23 18:07:10 2010 +0300 @@ -51,7 +51,7 @@ private static final String BATTERY_LEVEL = "com.nokia.mid.batterylevel"; - private static final String COUNTRY_CODE = "com.nokia.mid.countrycode"; + static final String COUNTRY_CODE = "com.nokia.mid.countrycode"; private static final String IMEI = "com.nokia.mid.imei"; @@ -59,7 +59,7 @@ private static final String NETWORK_AVAILABILITY = "com.nokia.mid.networkavailability"; - private static final String NETWORK_ID = "com.nokia.mid.networkid"; + static final String NETWORK_ID = "com.nokia.mid.networkid"; private static final String NETWORK_SIGNAL = "com.nokia.mid.networksignal"; diff -r 85266cc22c7f -r f40128debb5d javaextensions/wma/mms/src.s60/cjavammsmessagehandler.cpp --- a/javaextensions/wma/mms/src.s60/cjavammsmessagehandler.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/wma/mms/src.s60/cjavammsmessagehandler.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -790,8 +790,6 @@ { // get cc length aHeaderLengths[KCcFieldIndex] = ReadIntL(aReadStream); - if (div == 0) - break; mmsMap = div; } break; diff -r 85266cc22c7f -r f40128debb5d javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java --- a/javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -21,6 +21,7 @@ import java.security.PermissionCollection; import com.nokia.mj.impl.security.common.PermissionBase; import com.nokia.mj.impl.security.utils.SecurityPromptMessage; +import com.nokia.mj.impl.utils.Formatter; public class SMSPermissionImpl extends PermissionBase { @@ -76,15 +77,25 @@ } else if (iAction.compareTo("send") == 0) { + String prefix = ""; + String formattedDestination = iDestination; + if (formattedDestination.startsWith("+")) + { + formattedDestination = iDestination.substring(1); + prefix = "+"; + } + formattedDestination = Formatter.formatDigits(formattedDestination) + + prefix; if (iNumberOfSegments > 1) { return (SecurityPromptMessage.getInstance()).getText( SecurityPromptMessage.QUESTION_ID_SMS_SENDING, - new Object[] {new Integer(iNumberOfSegments),iDestination}); + new Object[] {new Integer(iNumberOfSegments), + formattedDestination}); } return (SecurityPromptMessage.getInstance()).getText( SecurityPromptMessage.QUESTION_ID_SMS_SINGLE_SENDING, - new Object[] {iDestination}); + new Object[] {formattedDestination}); } return null; } diff -r 85266cc22c7f -r f40128debb5d javaextensions/wma/sms_cbs/pushplugin/sms/src.s60/smsserverconnection.cpp --- a/javaextensions/wma/sms_cbs/pushplugin/sms/src.s60/smsserverconnection.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javaextensions/wma/sms_cbs/pushplugin/sms/src.s60/smsserverconnection.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -211,6 +211,7 @@ mIoctlBuf() = KSockSelectRead; mSocket.Ioctl(KIOctlSelect, iStatus, &mIoctlBuf, KSOLSocket); SetActive(); + pthread_mutex_unlock(&mMutex); return; } switch (mState) @@ -276,6 +277,7 @@ pthread_cond_signal(&mCondVar); mIsRunning = EFalse; CActiveScheduler::Stop(); + break; } default: { diff -r 85266cc22c7f -r f40128debb5d javamanager/javaappschemeplugin/build/javaappschemeplugin.mmp --- a/javamanager/javaappschemeplugin/build/javaappschemeplugin.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javaappschemeplugin/build/javaappschemeplugin.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -26,6 +26,13 @@ // Use bytepair compression to enable code paging PAGED +APP_LAYER_SYSTEMINCLUDE + +// Corrects a problem with SchemeHandler.inl in 5.0 2009w18 and 10.1 builds +#ifndef RD_JAVA_S60_RELEASE_9_2 +SYSTEMINCLUDE /epoc32/include/ecom +#endif + SOURCEPATH ../src SOURCE javaapphandler.cpp @@ -37,9 +44,6 @@ USERINCLUDE ../inc -SYSTEMINCLUDE /epoc32/include/ecom -APP_LAYER_SYSTEMINCLUDE - LIBRARY euser.lib LIBRARY ecom.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javabackup/javabackupcore/build/javabackup.mmp --- a/javamanager/javabackup/javabackupcore/build/javabackup.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javabackup/javabackupcore/build/javabackup.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -43,12 +43,14 @@ SOURCE jsbcactive.cpp SOURCE jsbcdataowner.cpp +#ifdef RD_JAVA_S60_RELEASE_5_0 +SYSTEMINCLUDE /epoc32/include/connect // Due to abclient.h in S60 5.0 +#endif + USERINCLUDE ../src.s60 USERINCLUDE ../../inc.s60 USERINCLUDE ../../../../inc -SYSTEMINCLUDE /epoc32/include/connect - LIBRARY ecom.lib LIBRARY abclient.lib LIBRARY javastorage.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javabackup/javabackupcore/src.s60/jsbcdataowner.h --- a/javamanager/javabackup/javabackupcore/src.s60/jsbcdataowner.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javabackup/javabackupcore/src.s60/jsbcdataowner.h Wed Jun 23 18:07:10 2010 +0300 @@ -19,7 +19,7 @@ #ifndef JSBCDATAOWNER_H #define JSBCDATAOWNER_H -#include +#include namespace java { diff -r 85266cc22c7f -r f40128debb5d javamanager/javabackup/midp2backup/build/midp2backupplugin.mmp --- a/javamanager/javabackup/midp2backup/build/midp2backupplugin.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javabackup/midp2backup/build/midp2backupplugin.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -49,8 +49,6 @@ USERINCLUDE ../../inc.s60 USERINCLUDE ../../../../inc -SYSTEMINCLUDE /epoc32/include/connect - start resource ../data/10282474.rss TARGET midp2backupplugin.rsc end diff -r 85266cc22c7f -r f40128debb5d javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp --- a/javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -881,6 +881,9 @@ attribute.setEntry(ON_SCREEN_KEYPAD, iStringVector[count++]); insertEntry.insert(attribute); + + attribute.setEntry(SECURITY_WARNINGS, iStringVector[count++]); + insertEntry.insert(attribute); try { @@ -1620,6 +1623,16 @@ str = (*findIterator).entryValue(); } iStringVector.push_back(str); + + attribute.setEntry(SECURITY_WARNINGS, L""); + str = emptyString; + findIterator = (*applications).find(attribute); + + if (findIterator != (*applications).end()) + { + str = (*findIterator).entryValue(); + } + iStringVector.push_back(str); rowsCount++; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javabackup/midp2backup/src.s60/midp2backupplugin.cpp --- a/javamanager/javabackup/midp2backup/src.s60/midp2backupplugin.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javabackup/midp2backup/src.s60/midp2backupplugin.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -29,7 +29,7 @@ #include "javacommonutils.h" #include "logger.h" -#include +#include #include #include #include diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/build/testsmartcardtokenplugin.mmp --- a/javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/build/testsmartcardtokenplugin.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/build/testsmartcardtokenplugin.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -29,9 +29,6 @@ CAPABILITY CAP_ECOM_PLUGIN VENDORID VID_DEFAULT -systeminclude /epoc32/include -systeminclude /epoc32/include/ecom - sourcepath ../src source testsmartcardtokenplugin.cpp diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/src/101F5B72.rss --- a/javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/src/101F5B72.rss Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/javacertstore/tsrc.s60/src/101F5B72.rss Wed Jun 23 18:07:10 2010 +0300 @@ -14,7 +14,7 @@ * Description: * */ -#include +#include #include // True diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/inc/scrupdater.h --- a/javamanager/javacaptain/extensionplugins/scrupdater/inc/scrupdater.h Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* Copyright (c) 2010 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: ScrUpdater is Java Captain Symbian plugin that updates -* presence information of Java Applications in USIF SCR -* when removable drive is added or removed to the device. -* -*/ - -#ifndef SCRUPDATER_H -#define SCRUPDATER_H - -#include -#include - -#include "javaosheaders.h" - -#include "eventconsumerinterface.h" -#include "extensionplugininterface.h" - -namespace java -{ - -namespace captain -{ - -class CoreInterface; - -OS_NONSHARABLE_CLASS(ScrUpdater) : public EventConsumerInterface, - public ExtensionPluginInterface -{ -public: - ScrUpdater(); - virtual ~ScrUpdater(); - - // PluginInterface - virtual void startPlugin(CoreInterface* aCore); - virtual void stopPlugin(); - - // EventConsumerInterface - virtual void event(const std::string& eventProvider, - java::comms::CommsMessage& aMsg); - - // ExtensionPluginInterface methods - virtual EventConsumerInterface* getEventConsumer(); - -private: - void removeScrPresencesL(driveInfo *aInfo); - void addScrPresencesL(driveInfo *aInfo); - void initializeScrPresenceInfoL(); - - Usif::RSoftwareComponentRegistry *createScrL(); - - - CoreInterface* mCore; -}; - -} // namespace captain -} // namespace java - -#endif // SCRUPDATER_H diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/src.s60/lookup.cpp --- a/javamanager/javacaptain/extensionplugins/scrupdater/src.s60/lookup.cpp Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* Copyright (c) 2010 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: lookup -* -*/ - -#include //For strcmp - -#include "javasymbianoslayer.h" -#include "logger.h" - -#include "extensionplugininterface.h" - -using namespace java::captain; - -ExtensionPluginInterface* getExtensionPlugin(); - -EXPORT_C FuncPtr findDllMethod(const char* funcName) -{ - JELOG2(EJavaCaptain); - FuncPtr ptr = 0; - if (funcName) - { - if (strcmp(funcName, "getExtensionPlugin") == 0) - { - ptr = (FuncPtr)getExtensionPlugin; - } - } - else - { - ELOG(EJavaCaptain, - "scrupdater extensionplugin findDllMethod() funcName == null"); - } - return ptr; -} diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/src.s60/scrupdater.cpp --- a/javamanager/javacaptain/extensionplugins/scrupdater/src.s60/scrupdater.cpp Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,705 +0,0 @@ -/* -* Copyright (c) 2010 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: ScrUpdater is Java Captain Symbian plugin that updates -* presence information of Java Applications in USIF SCR -* when removable drive is added or removed to the device. -* -*/ - -#include -#include -#include - -#include "javaprocessconstants.h" -#include "javasymbianoslayer.h" -#include "javauids.h" -#include "logger.h" -#include "coreinterface.h" -#include "booteventprovidermessages.h" -#include "mmceventprovidermessages.h" - -#include "scrupdater.h" - -// Enable notifying AppArc for USIF Phase 2. -//#define RD_JAVA_USIF_NOTIFY_APP_ARC - - -using namespace Usif; - -/** - * Return pointer to ExtensionPluginInterface implementation for this - * extension dll - */ -java::captain::ExtensionPluginInterface* getExtensionPlugin() -{ - return new java::captain::ScrUpdater(); -} - -namespace java -{ -namespace captain -{ - -using java::fileutils::driveInfo; -using java::fileutils::DriveListenerInterface; - -/** - * Empty contructor - */ -ScrUpdater::ScrUpdater() : mCore(0) -{ -} - -/** - * Empty destructor - */ -ScrUpdater::~ScrUpdater() -{ -} - -/** - * Implement PluginInterface method - */ -void ScrUpdater::startPlugin(CoreInterface* core) -{ - LOG(EJavaCaptain, EInfo, "ScrUpdater plugin started"); - - mCore = core; -} - -/** - * Implement PluginInterface method - */ -void ScrUpdater::stopPlugin() -{ - mCore = 0; -} - -/** - * Implement ExtensionPluginInterface method - */ -EventConsumerInterface* ScrUpdater::getEventConsumer() -{ - return this; -} - -/** - * Handle Java Captain events sent by Boot event provider or - * MMC event provider. - * - * Implement EventConsumerInterface method - */ -void ScrUpdater::event(const std::string& eventProvider, - java::comms::CommsMessage& aMsg) -{ - if (eventProvider == BOOT_EVENT_PROVIDER) - { - int bootType = NORMAL_BOOT_C; - getBootMessageParams(aMsg, bootType); - LOG1( - EJavaCaptain, - EInfo, - "ScrUpdater::event() boot event received (type=%d)", - bootType); - switch (bootType) - { - case IAD_BOOT_C: - case FIRST_DEVICE_BOOT_C: - case NORMAL_BOOT_C: - { - // Update presence information - TRAPD(err, initializeScrPresenceInfoL()) - if (KErrNone != err) - { - ELOG1(EJavaCaptain, "initializeScrPresenceInfoL: leaved (%d)", err); - } - } - break; - - default: - { - WLOG1(EJavaCaptain, - "DriveListenerInterface: event() unknown boot event (type=%d)", bootType); - } - break; - } - } - else if (eventProvider == MMC_EVENT_PROVIDER) - { - int operation = 0; - driveInfo di; - getMmcChangedMessageParams(aMsg, operation, di); - LOG1( - EJavaCaptain, - EInfo, - "ScrUpdater::event() mmc event received (operation=%d)", - operation); - - switch (operation) - { - case DriveListenerInterface::REMOVABLE_MEDIA_REMOVED_C: - { - // All Java applications in the removed drive are set - // to 'not present' state - TRAPD(err, removeScrPresencesL(&di)); - if (KErrNone != err) - { - ELOG1(EJavaCaptain, "removeScrPresencesL leaved (%d)", err); - } - } - break; - - case DriveListenerInterface::REMOVABLE_MEDIA_INSERTED_C: - { - // Those Java applications in the drive to where the media - // (e.g. memory card) was added are set to 'present' state - // IF the media id is correct (in other words if the same - // memory card that they have been installed to is added - // to the drive). - TRAPD(err, addScrPresencesL(&di)); - if (KErrNone != err) - { - ELOG1(EJavaCaptain, "addScrPresencesL leaved (%d)", err); - } - } - break; - } - } -} - -/** - * Set the presence state of all Java applications installed - * to the removable drive specified in aInfo to not present - */ -void ScrUpdater::removeScrPresencesL(driveInfo *aInfo) -{ - __UHEAP_MARK; - LOG1WSTR(EJavaCaptain, EInfo, - "removeScrPresencesL: driveInfo root path is %s", aInfo->iRootPath); - - RSoftwareComponentRegistry *pScr = createScrL(); - CleanupStack::PushL(pScr); - - // Get ids of all Java components in scr - RArray componentIdList; - CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); - pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); - - pScr->GetComponentIdsL(componentIdList); - CleanupStack::PopAndDestroy(pJavaSwTypeFilter); - CleanupClosePushL(componentIdList); - - // For each component check whether it has been installed - // to the removed drive - TInt nComponents = componentIdList.Count(); - TUint removedDrive = (TUint)(aInfo->iRootPath[0]); - // Now removedDrive contains the drive letter, convert it to drive number 0-25 - if ((removedDrive > 64) && (removedDrive < 91)) - { - // 'A' - 'Z' - removedDrive -= 65; - } - else if ((removedDrive > 96) && (removedDrive < 123)) - { - // 'a' - 'z' - removedDrive -= 97; - } - else - { - ELOG1WSTR(EJavaCaptain, - "removeScrPresencesL: Unexpected root path in remove drive info %s", - aInfo->iRootPath); - CleanupStack::PopAndDestroy(pScr); - return; - } - - LOG2(EJavaCaptain, EInfo, "Number of Java components is %d, removed drive is %d", - nComponents, removedDrive); - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - // TEMP TEST - TBool fPresenceChange = EFalse; - RArray removedApps; - CleanupClosePushL(removedApps); -#endif - - for (TInt nInd = 0; nInd < nComponents; nInd++) - { - CComponentEntry *pEntry = CComponentEntry::NewLC(); - if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) - { - ELOG1(EJavaCaptain, - "removeScrPresencesL: SCR GetComponentIdsL returned id %d " - "but GetComponentL does not find it", componentIdList[nInd]); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - TInt nInstalledDrives = pEntry->InstalledDrives().Length(); - if (nInstalledDrives <= removedDrive) - { - // SCR InstalledDrives should be array of 26 elements (value 0 or 1) - ELOG2(EJavaCaptain, - "removeScrPresencesL: The length of InstalledDrives array (%d) " - "is smaller than removedDrive (%d)", nInstalledDrives, removedDrive); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - LOG1(EJavaCaptain, EInfo, "Java component id %d", componentIdList[nInd]); - - if (pEntry->InstalledDrives()[removedDrive]) - { - // This component has been installed to the drive - // that has just been removed - pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); - - LOG1(EJavaCaptain, EInfo, - "removeScrPresencesL: set component %d to not present", - componentIdList[nInd]); - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - fPresenceChange = ETrue; - - // Gather the Uids of all applications that are no longer present - RArray appsInComponent; - CleanupClosePushL(appsInComponent); - pScr->GetAppUidsForComponentL( - componentIdList[nInd], appsInComponent); - for (TInt nInd2 = 0; nInd2 < appsInComponent.Count(); nInd2++) - { - TApaAppUpdateInfo appInfo; - appInfo.iAppUid = appsInComponent[nInd2]; - appInfo.iAction = TApaAppUpdateInfo::EAppNotPresent; - (void)removedApps.Append(appInfo); - } - CleanupStack::PopAndDestroy(&appsInComponent); -#endif - } - - CleanupStack::PopAndDestroy(pEntry); - } - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - // Tell AppArc which applications are no longer present - while (fPresenceChange) - { - if (removedApps.Count() == 0) - { - ELOG(EJavaCaptain, "removeScrPresencesL: Uids of the removed apps are not known"); - break; - } - - RApaLsSession apaSession; - TInt err = apaSession.Connect(); - if (KErrNone != err) - { - ELOG1(EJavaCaptain, "removeScrPresencesL: Error %d when connecting AppArc", err); - break; - } - else - { - CleanupClosePushL(apaSession); - apaSession.UpdateAppListL(removedApps); - CleanupStack::PopAndDestroy(); // closes apaSession - fPresenceChange = EFalse; - } - } - - CleanupStack::PopAndDestroy(); // Close removedApps -#endif - CleanupStack::PopAndDestroy(); // Close componentIdList - CleanupStack::PopAndDestroy(pScr); - __UHEAP_MARKEND; -} - - -/** - * Set the presence state of all Java applications installed - * to the removable drive specified in aInfo to present - */ -void ScrUpdater::addScrPresencesL(driveInfo *aInfo) -{ - __UHEAP_MARK; - LOG1WSTR(EJavaCaptain, EInfo, - "addScrPresencesL: driveInfo root path is %s", aInfo->iRootPath); - - RSoftwareComponentRegistry *pScr = createScrL(); - CleanupStack::PushL(pScr); - - // Get ids of all Java components in scr - RArray componentIdList; - CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); - pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); - - pScr->GetComponentIdsL(componentIdList, pJavaSwTypeFilter); - CleanupStack::PopAndDestroy(pJavaSwTypeFilter); - CleanupClosePushL(componentIdList); - - - // For each component check whether it has been installed - // to the added drive AND whether the media id is correct - // (in other words if the actual memory card where the component - // has been installed to is added to the drive). - TInt nComponents = componentIdList.Count(); - TUint addedMediaId = (TUint)(aInfo->iId); - TUint addedDrive = (TUint)(aInfo->iRootPath[0]); - // Now addedDrive contains the drive letter, convert it to drive number 0-25 - if ((addedDrive > 64) && (addedDrive < 91)) - { - // 'A' - 'Z' - addedDrive -= 65; - } - else if ((addedDrive > 96) && (addedDrive < 123)) - { - // 'a' - 'z' - addedDrive -= 97; - } - else - { - ELOG1WSTR(EJavaCaptain, - "addScrPresencesL: Unexpected root path in add drive info %s", - aInfo->iRootPath); - CleanupStack::PopAndDestroy(pScr); - return; - } - - LOG2(EJavaCaptain, EInfo, "Number of Java components is %d, added drive is %d", - nComponents, addedDrive); - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - TBool fPresenceChange = EFalse; - RArray addedApps; - CleanupClosePushL(addedApps); -#endif - - for (TInt nInd = 0; nInd < nComponents; nInd++) - { - CComponentEntry *pEntry = CComponentEntry::NewLC(); - if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) - { - ELOG1(EJavaCaptain, - "addScrPresencesL: SCR GetComponentIdsL returned id %d " - "but GetComponentL does not find it", componentIdList[nInd]); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - // When Java Installer registers Java app to SCR it stores also - // the media id using SetComponentPropertyL(TComponentId aComponentId, - // _L("Media-Id")), TInt64 aValue); (aValue is actually 32 bit int) - CIntPropertyEntry* pMediaIdProperty = (CIntPropertyEntry *) - pScr->GetComponentPropertyL(componentIdList[nInd],_L("Media-Id")); - if (NULL == pMediaIdProperty) - { - ELOG1(EJavaCaptain, - "addScrPresencesL: media_id property not found for component %d", - componentIdList[nInd]); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - CleanupStack::PushL(pMediaIdProperty); - - TInt nInstalledDrives = pEntry->InstalledDrives().Length(); - if (nInstalledDrives <= addedDrive) - { - // SCR InstalledDrives should be array of 26 elements (value 0 or 1) - ELOG2(EJavaCaptain, - "addScrPresencesL: The length of InstalledDrives array (%d) " - "is smaller than addedDrive (%d)", nInstalledDrives, addedDrive); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - LOG1(EJavaCaptain, EInfo, "Java component id %d", componentIdList[nInd]); - - if (pEntry->InstalledDrives()[addedDrive]) - { - // This component has been installed to the drive - // that has just been added. - // Now check whether the media id of the added media - // is OK for this component. - if (addedMediaId == pMediaIdProperty->IntValue()) - { - pScr->SetIsComponentPresentL(componentIdList[nInd], ETrue); - - LOG1(EJavaCaptain, EInfo, - "addScrPresencesL: set component %d to present", - componentIdList[nInd]); - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - fPresenceChange = ETrue; - - // Gather the Uids of all 'new' applications that are now present - RArray appsInComponent; - CleanupClosePushL(appsInComponent); - pScr->GetAppUidsForComponentL( - componentIdList[nInd], appsInComponent); - for (TInt nInd2 = 0; nInd2 < appsInComponent.Count(); nInd2++) - { - TApaAppUpdateInfo appInfo; - appInfo.iAppUid = appsInComponent[nInd2]; - appInfo.iAction = TApaAppUpdateInfo::EAppPresent; - (void)addedApps.Append(appInfo); - } - CleanupStack::PopAndDestroy(&appsInComponent); -#endif - } - } - - CleanupStack::PopAndDestroy(pMediaIdProperty); - CleanupStack::PopAndDestroy(pEntry); - } - -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC - // Tell AppArc which 'new' applications are now present - while (fPresenceChange) - { - if (addedApps.Count() == 0) - { - ELOG(EJavaCaptain, "addScrPresencesL: Uids of the 'new' apps are not known"); - break; - } - - RApaLsSession apaSession; - TInt err = apaSession.Connect(); - if (KErrNone != err) - { - ELOG1(EJavaCaptain, "addScrPresencesL: Error %d when connecting AppArc", err); - break; - } - else - { - CleanupClosePushL(apaSession); - apaSession.UpdateAppListL(addedApps); - CleanupStack::PopAndDestroy(); // closes apaSession - fPresenceChange = EFalse; - } - } - - CleanupStack::PopAndDestroy(); // Close addedApps -#endif - CleanupStack::PopAndDestroy(); // Close componentIdList - CleanupStack::PopAndDestroy(pScr); - __UHEAP_MARKEND; -} - - -/** - * Loop through all removable drives and get the media id of - * the memory card or other removable media in the drive and update - * presence information of all Java applications installed - * to removable drives accordingly. - */ -void ScrUpdater::initializeScrPresenceInfoL() -{ - __UHEAP_MARK; - RFs fs; - User::LeaveIfError(fs.Connect()); - CleanupClosePushL(fs); - - // Which drives are present and what is the media id of - // each removable volume - TInt err = KErrNone; - TInt err2 = KErrNone; - TBool drivePresent[EDriveZ + 1]; - TUint driveMediaId[EDriveZ + 1]; - TVolumeInfo volumeInfo; - TDriveInfo driveInfo; - - for (TInt nInd = EDriveA; nInd < EDriveZ; nInd++) - { - err = fs.Volume(volumeInfo, nInd); - if (KErrNone == err) - { - drivePresent[nInd] = ETrue; - driveMediaId[nInd] = volumeInfo.iUniqueID; - // If the media is not removable, media id is not checked - err2 = fs.Drive(driveInfo, nInd); - if (KErrNone != err2) - { - ELOG1(EJavaCaptain, - "initializeScrPresenceInfoL: error (%d) when trying to get drive info", - err2); - User::Leave(err2); - } - else - { - if (!(driveInfo.iDriveAtt & KDriveAttRemovable)) - { - driveMediaId[nInd] = 0; - } - } - } - else if (KErrNotReady == err) - { - // no volume in this drive - drivePresent[nInd] = EFalse; - driveMediaId[nInd] = 0; - } - else - { - ELOG1(EJavaCaptain, - "initializeScrPresenceInfoL: error (%d) when trying to get volume info", - err); - User::Leave(err); - } - } - CleanupStack::PopAndDestroy(); // close RFs - - - RSoftwareComponentRegistry *pScr = createScrL(); - CleanupStack::PushL(pScr); - - // Get ids of all Java components in scr - RArray componentIdList; - CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); - pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); - - pScr->GetComponentIdsL(componentIdList, pJavaSwTypeFilter); - CleanupStack::PopAndDestroy(pJavaSwTypeFilter); - CleanupClosePushL(componentIdList); - - // For each component check whether the drive it has been installed - // to is present AND whether the media id is correct - TInt nComponents = componentIdList.Count(); - - LOG1(EJavaCaptain, EInfo, "initializeScrPresenceInfoL: Number of Java components is %d", - nComponents); - - for (TInt nInd = 0; nInd < nComponents; nInd++) - { - CComponentEntry *pEntry = CComponentEntry::NewLC(); - if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) - { - ELOG1(EJavaCaptain, - "initializeScrPresenceInfoL: SCR GetComponentIdsL returned id %d " - "but GetComponentL does not find it", componentIdList[nInd]); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - CIntPropertyEntry* pMediaIdProperty = (CIntPropertyEntry *) - pScr->GetComponentPropertyL(componentIdList[nInd],_L("Media-Id")); - if (NULL == pMediaIdProperty) - { - ELOG1(EJavaCaptain, - "initializeScrPresenceInfoL: media_id property not found for component %d", - componentIdList[nInd]); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - CleanupStack::PushL(pMediaIdProperty); - - TInt nInstalledDrives = pEntry->InstalledDrives().Length(); - if (nInstalledDrives > (EDriveZ + 1)) - { - WLOG2(EJavaCaptain, - "initializeScrPresenceInfoL: too big (%d) installed drives array for " - "component %d", nInstalledDrives, componentIdList[nInd]); - nInstalledDrives = EDriveZ; - } - // When Java components are installed, only one installed drive - // and corresponding media id are registered. - TInt installationDrive = -1; - - for (TInt driveNumber = EDriveA; driveNumber < nInstalledDrives; driveNumber++) - { - if (pEntry->InstalledDrives()[driveNumber]) - { - installationDrive = driveNumber; - break; - } - } - - if (installationDrive == -1) - { - ELOG1(EJavaCaptain, - "initializeScrPresenceInfoL: component (id %d) did not have installed drive info", - componentIdList[nInd]); - CleanupStack::PopAndDestroy(pMediaIdProperty); - CleanupStack::PopAndDestroy(pEntry); - continue; - } - - if (drivePresent[installationDrive]) - { - // Check also the media id - if (driveMediaId[installationDrive] == pMediaIdProperty->IntValue()) - { - LOG1(EJavaCaptain, EInfo, - "initializeScrPresenceInfoL: set component %d to present", - componentIdList[nInd]); - - pScr->SetIsComponentPresentL(componentIdList[nInd], ETrue); - } - else - { - LOG1(EJavaCaptain, EInfo, - "initializeScrPresenceInfoL: set component %d to NOT present", - componentIdList[nInd]); - - pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); - } - } - else - { - LOG1(EJavaCaptain, EInfo, - "initializeScrPresenceInfoL: set component %d to NOT present", - componentIdList[nInd]); - - // drive is not present -> Java component installed to that - // drive is not present - pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); - } - - CleanupStack::PopAndDestroy(pMediaIdProperty); - CleanupStack::PopAndDestroy(pEntry); - } - - CleanupStack::PopAndDestroy(); // Close componentIdList - CleanupStack::PopAndDestroy(pScr); // Also closes RSoftwareComponentRegistry - - __UHEAP_MARKEND; -} - - -/** - * Creates an instance of RSoftwareComponentRegistry and connects to it. - */ -RSoftwareComponentRegistry *ScrUpdater::createScrL() -{ - RSoftwareComponentRegistry *pScr = new RSoftwareComponentRegistry; - if (NULL == pScr) - { - ELOG(EJavaInstaller, - "CreateScrL: Creating RSoftwareComponentRegistry failed"); - User::Leave(KErrGeneral); - } - TInt err = pScr->Connect(); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "CreateScrL: Connecting to RSoftwareComponentRegistry failed, error %d", - err); - delete pScr; - User::Leave(err); - } - - return pScr; -} - - -} // namespace captain -} // namespace java diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/src/lookup.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javacaptain/extensionplugins/scrupdater/src/lookup.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2010 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: lookup +* +*/ + +#include //For strcmp + +#include "javasymbianoslayer.h" +#include "logger.h" + +#include "extensionplugininterface.h" + +using namespace java::captain; + +ExtensionPluginInterface* getExtensionPlugin(); + +EXPORT_C FuncPtr findDllMethod(const char* funcName) +{ + JELOG2(EJavaCaptain); + FuncPtr ptr = 0; + if (funcName) + { + if (strcmp(funcName, "getExtensionPlugin") == 0) + { + ptr = (FuncPtr)getExtensionPlugin; + } + } + else + { + ELOG(EJavaCaptain, + "scrupdater extensionplugin findDllMethod() funcName == null"); + } + return ptr; +} diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/src/scrupdater.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javacaptain/extensionplugins/scrupdater/src/scrupdater.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,687 @@ +/* +* Copyright (c) 2010 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: ScrUpdater is Java Captain Symbian plugin that updates +* presence information of Java Applications in USIF SCR +* when removable drive is added or removed to the device. +* +*/ + +#include +#include +#include + +#include "javaprocessconstants.h" +#include "javasymbianoslayer.h" +#include "javauids.h" +#include "logger.h" +#include "coreinterface.h" +#include "booteventprovidermessages.h" +#include "mmceventprovidermessages.h" + +#include "scrupdater.h" + +using namespace Usif; + +/** + * Return pointer to ExtensionPluginInterface implementation for this + * extension dll + */ +java::captain::ExtensionPluginInterface* getExtensionPlugin() +{ + return new java::captain::ScrUpdater(); +} + +namespace java +{ +namespace captain +{ + +using java::fileutils::driveInfo; +using java::fileutils::DriveListenerInterface; + +/** + * Empty contructor + */ +ScrUpdater::ScrUpdater() : mCore(0) +{ +} + +/** + * Empty destructor + */ +ScrUpdater::~ScrUpdater() +{ +} + +/** + * Implement PluginInterface method + */ +void ScrUpdater::startPlugin(CoreInterface* core) +{ + LOG(EJavaCaptain, EInfo, "ScrUpdater plugin started"); + + mCore = core; +} + +/** + * Implement PluginInterface method + */ +void ScrUpdater::stopPlugin() +{ + mCore = 0; +} + +/** + * Implement ExtensionPluginInterface method + */ +EventConsumerInterface* ScrUpdater::getEventConsumer() +{ + return this; +} + +/** + * Handle Java Captain events sent by Boot event provider or + * MMC event provider. + * + * Implement EventConsumerInterface method + */ +void ScrUpdater::event(const std::string& eventProvider, + java::comms::CommsMessage& aMsg) +{ + if (eventProvider == BOOT_EVENT_PROVIDER) + { + int bootType = NORMAL_BOOT_C; + getBootMessageParams(aMsg, bootType); + LOG1( + EJavaCaptain, + EInfo, + "ScrUpdater::event() boot event received (type=%d)", + bootType); + switch (bootType) + { + case IAD_BOOT_C: + case FIRST_DEVICE_BOOT_C: + case NORMAL_BOOT_C: + { + // Update presence information + TRAPD(err, initializeScrPresenceInfoL()) + if (KErrNone != err) + { + ELOG1(EJavaCaptain, "initializeScrPresenceInfoL: leaved (%d)", err); + } + } + break; + + default: + { + WLOG1(EJavaCaptain, + "DriveListenerInterface: event() unknown boot event (type=%d)", bootType); + } + break; + } + } + else if (eventProvider == MMC_EVENT_PROVIDER) + { + int operation = 0; + driveInfo di; + getMmcChangedMessageParams(aMsg, operation, di); + LOG1( + EJavaCaptain, + EInfo, + "ScrUpdater::event() mmc event received (operation=%d)", + operation); + + switch (operation) + { + case DriveListenerInterface::REMOVABLE_MEDIA_REMOVED_C: + { + // All Java applications in the removed drive are set + // to 'not present' state + TRAPD(err, removeScrPresencesL(&di)); + if (KErrNone != err) + { + ELOG1(EJavaCaptain, "removeScrPresencesL leaved (%d)", err); + } + } + break; + + case DriveListenerInterface::REMOVABLE_MEDIA_INSERTED_C: + { + // Those Java applications in the drive to where the media + // (e.g. memory card) was added are set to 'present' state + // IF the media id is correct (in other words if the same + // memory card that they have been installed to is added + // to the drive). + TRAPD(err, addScrPresencesL(&di)); + if (KErrNone != err) + { + ELOG1(EJavaCaptain, "addScrPresencesL leaved (%d)", err); + } + } + break; + } + } +} + +/** + * Set the presence state of all Java applications installed + * to the removable drive specified in aInfo to not present + */ +void ScrUpdater::removeScrPresencesL(driveInfo *aInfo) +{ + __UHEAP_MARK; + LOG1WSTR(EJavaCaptain, EInfo, + "removeScrPresencesL: driveInfo root path is %s", aInfo->iRootPath); + + RSoftwareComponentRegistry *pScr = createScrL(); + CleanupStack::PushL(pScr); + + // Get ids of all Java components in scr + RArray componentIdList; + CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); + pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); + + pScr->GetComponentIdsL(componentIdList, pJavaSwTypeFilter); + CleanupStack::PopAndDestroy(pJavaSwTypeFilter); + CleanupClosePushL(componentIdList); + + // For each component check whether it has been installed + // to the removed drive + TInt nComponents = componentIdList.Count(); + TUint removedDrive = (TUint)(aInfo->iRootPath[0]); + // Now removedDrive contains the drive letter, convert it to drive number 0-25 + if ((removedDrive > 64) && (removedDrive < 91)) + { + // 'A' - 'Z' + removedDrive -= 65; + } + else if ((removedDrive > 96) && (removedDrive < 123)) + { + // 'a' - 'z' + removedDrive -= 97; + } + else + { + ELOG1WSTR(EJavaCaptain, + "removeScrPresencesL: Unexpected root path in remove drive info %s", + aInfo->iRootPath); + CleanupStack::PopAndDestroy(pScr); + return; + } + + LOG2(EJavaCaptain, EInfo, "Number of Java components is %d, removed drive is %d", + nComponents, removedDrive); + + TBool fPresenceChange = EFalse; + RArray removedApps; + CleanupClosePushL(removedApps); + + for (TInt nInd = 0; nInd < nComponents; nInd++) + { + CComponentEntry *pEntry = CComponentEntry::NewLC(); + if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) + { + ELOG1(EJavaCaptain, + "removeScrPresencesL: SCR GetComponentIdsL returned id %d " + "but GetComponentL does not find it", componentIdList[nInd]); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + TInt nInstalledDrives = pEntry->InstalledDrives().Length(); + if (nInstalledDrives <= removedDrive) + { + // SCR InstalledDrives should be array of 26 elements (value 0 or 1) + ELOG2(EJavaCaptain, + "removeScrPresencesL: The length of InstalledDrives array (%d) " + "is smaller than removedDrive (%d)", nInstalledDrives, removedDrive); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + LOG1(EJavaCaptain, EInfo, "Java component id %d", componentIdList[nInd]); + + if (pEntry->InstalledDrives()[removedDrive]) + { + // This component has been installed to the drive + // that has just been removed + pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); + + LOG1(EJavaCaptain, EInfo, + "removeScrPresencesL: set component %d to not present", + componentIdList[nInd]); + + fPresenceChange = ETrue; + + // Gather the Uids of all applications that are no longer present + RArray appsInComponent; + CleanupClosePushL(appsInComponent); + pScr->GetAppUidsForComponentL( + componentIdList[nInd], appsInComponent); + for (TInt nInd2 = 0; nInd2 < appsInComponent.Count(); nInd2++) + { + TApaAppUpdateInfo appInfo; + appInfo.iAppUid = appsInComponent[nInd2]; + appInfo.iAction = TApaAppUpdateInfo::EAppNotPresent; + (void)removedApps.Append(appInfo); + } + CleanupStack::PopAndDestroy(&appsInComponent); + } + + CleanupStack::PopAndDestroy(pEntry); + } + + // Tell AppArc which applications are no longer present + while (fPresenceChange) + { + if (removedApps.Count() == 0) + { + ELOG(EJavaCaptain, "removeScrPresencesL: Uids of the removed apps are not known"); + break; + } + + RApaLsSession apaSession; + TInt err = apaSession.Connect(); + if (KErrNone != err) + { + ELOG1(EJavaCaptain, "removeScrPresencesL: Error %d when connecting AppArc", err); + break; + } + else + { + CleanupClosePushL(apaSession); + apaSession.UpdateAppListL(removedApps); + CleanupStack::PopAndDestroy(); // closes apaSession + fPresenceChange = EFalse; + } + } + + CleanupStack::PopAndDestroy(); // Close removedApps + CleanupStack::PopAndDestroy(); // Close componentIdList + CleanupStack::PopAndDestroy(pScr); + __UHEAP_MARKEND; +} + + +/** + * Set the presence state of all Java applications installed + * to the removable drive specified in aInfo to present + */ +void ScrUpdater::addScrPresencesL(driveInfo *aInfo) +{ + __UHEAP_MARK; + LOG1WSTR(EJavaCaptain, EInfo, + "addScrPresencesL: driveInfo root path is %s", aInfo->iRootPath); + + RSoftwareComponentRegistry *pScr = createScrL(); + CleanupStack::PushL(pScr); + + // Get ids of all Java components in scr + RArray componentIdList; + CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); + pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); + + pScr->GetComponentIdsL(componentIdList, pJavaSwTypeFilter); + CleanupStack::PopAndDestroy(pJavaSwTypeFilter); + CleanupClosePushL(componentIdList); + + // For each component check whether it has been installed + // to the added drive AND whether the media id is correct + // (in other words if the actual memory card where the component + // has been installed to is added to the drive). + TInt nComponents = componentIdList.Count(); + TUint addedMediaId = (TUint)(aInfo->iId); + TUint addedDrive = (TUint)(aInfo->iRootPath[0]); + // Now addedDrive contains the drive letter, convert it to drive number 0-25 + if ((addedDrive > 64) && (addedDrive < 91)) + { + // 'A' - 'Z' + addedDrive -= 65; + } + else if ((addedDrive > 96) && (addedDrive < 123)) + { + // 'a' - 'z' + addedDrive -= 97; + } + else + { + ELOG1WSTR(EJavaCaptain, + "addScrPresencesL: Unexpected root path in add drive info %s", + aInfo->iRootPath); + CleanupStack::PopAndDestroy(pScr); + return; + } + + LOG2(EJavaCaptain, EInfo, "Number of Java components is %d, added drive is %d", + nComponents, addedDrive); + + TBool fPresenceChange = EFalse; + RArray addedApps; + CleanupClosePushL(addedApps); + + for (TInt nInd = 0; nInd < nComponents; nInd++) + { + CComponentEntry *pEntry = CComponentEntry::NewLC(); + if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) + { + ELOG1(EJavaCaptain, + "addScrPresencesL: SCR GetComponentIdsL returned id %d " + "but GetComponentL does not find it", componentIdList[nInd]); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + // When Java Installer registers Java app to SCR it stores also + // the media id using SetComponentPropertyL(TComponentId aComponentId, + // _L("Media-Id")), TInt64 aValue); (aValue is actually 32 bit int) + CIntPropertyEntry* pMediaIdProperty = (CIntPropertyEntry *) + pScr->GetComponentPropertyL(componentIdList[nInd],_L("Media-Id")); + if (NULL == pMediaIdProperty) + { + ELOG1(EJavaCaptain, + "addScrPresencesL: media_id property not found for component %d", + componentIdList[nInd]); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + CleanupStack::PushL(pMediaIdProperty); + + TInt nInstalledDrives = pEntry->InstalledDrives().Length(); + if (nInstalledDrives <= addedDrive) + { + // SCR InstalledDrives should be array of 26 elements (value 0 or 1) + ELOG2(EJavaCaptain, + "addScrPresencesL: The length of InstalledDrives array (%d) " + "is smaller than addedDrive (%d)", nInstalledDrives, addedDrive); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + LOG1(EJavaCaptain, EInfo, "Java component id %d", componentIdList[nInd]); + + if (pEntry->InstalledDrives()[addedDrive]) + { + // This component has been installed to the drive + // that has just been added. + // Now check whether the media id of the added media + // is OK for this component. + if (addedMediaId == pMediaIdProperty->IntValue()) + { + pScr->SetIsComponentPresentL(componentIdList[nInd], ETrue); + + LOG1(EJavaCaptain, EInfo, + "addScrPresencesL: set component %d to present", + componentIdList[nInd]); + + fPresenceChange = ETrue; + + // Gather the Uids of all 'new' applications that are now present + RArray appsInComponent; + CleanupClosePushL(appsInComponent); + pScr->GetAppUidsForComponentL( + componentIdList[nInd], appsInComponent); + for (TInt nInd2 = 0; nInd2 < appsInComponent.Count(); nInd2++) + { + TApaAppUpdateInfo appInfo; + appInfo.iAppUid = appsInComponent[nInd2]; + appInfo.iAction = TApaAppUpdateInfo::EAppPresent; + (void)addedApps.Append(appInfo); + } + CleanupStack::PopAndDestroy(&appsInComponent); + } + } + + CleanupStack::PopAndDestroy(pMediaIdProperty); + CleanupStack::PopAndDestroy(pEntry); + } + + // Tell AppArc which 'new' applications are now present + while (fPresenceChange) + { + if (addedApps.Count() == 0) + { + ELOG(EJavaCaptain, "addScrPresencesL: Uids of the 'new' apps are not known"); + break; + } + + RApaLsSession apaSession; + TInt err = apaSession.Connect(); + if (KErrNone != err) + { + ELOG1(EJavaCaptain, "addScrPresencesL: Error %d when connecting AppArc", err); + break; + } + else + { + CleanupClosePushL(apaSession); + apaSession.UpdateAppListL(addedApps); + CleanupStack::PopAndDestroy(); // closes apaSession + fPresenceChange = EFalse; + } + } + + CleanupStack::PopAndDestroy(); // Close addedApps + CleanupStack::PopAndDestroy(); // Close componentIdList + CleanupStack::PopAndDestroy(pScr); + __UHEAP_MARKEND; +} + + +/** + * Loop through all removable drives and get the media id of + * the memory card or other removable media in the drive and update + * presence information of all Java applications installed + * to removable drives accordingly. + */ +void ScrUpdater::initializeScrPresenceInfoL() +{ + __UHEAP_MARK; + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + + // Which drives are present and what is the media id of + // each removable volume + TInt err = KErrNone; + TInt err2 = KErrNone; + TBool drivePresent[EDriveZ + 1]; + TUint driveMediaId[EDriveZ + 1]; + TVolumeInfo volumeInfo; + TDriveInfo driveInfo; + + for (TInt nInd = EDriveA; nInd < EDriveZ; nInd++) + { + err = fs.Volume(volumeInfo, nInd); + if (KErrNone == err) + { + drivePresent[nInd] = ETrue; + driveMediaId[nInd] = volumeInfo.iUniqueID; + // If the media is not removable, media id is not checked + err2 = fs.Drive(driveInfo, nInd); + if (KErrNone != err2) + { + ELOG1(EJavaCaptain, + "initializeScrPresenceInfoL: error (%d) when trying to get drive info", + err2); + User::Leave(err2); + } + else + { + if (!(driveInfo.iDriveAtt & KDriveAttRemovable)) + { + driveMediaId[nInd] = 0; + } + } + } + else if (KErrNotReady == err) + { + // no volume in this drive + drivePresent[nInd] = EFalse; + driveMediaId[nInd] = 0; + } + else + { + ELOG1(EJavaCaptain, + "initializeScrPresenceInfoL: error (%d) when trying to get volume info", + err); + User::Leave(err); + } + } + CleanupStack::PopAndDestroy(); // close RFs + + + RSoftwareComponentRegistry *pScr = createScrL(); + CleanupStack::PushL(pScr); + + // Get ids of all Java components in scr + RArray componentIdList; + CComponentFilter *pJavaSwTypeFilter = CComponentFilter::NewLC(); + pJavaSwTypeFilter->SetSoftwareTypeL(Usif::KSoftwareTypeJava); + + pScr->GetComponentIdsL(componentIdList, pJavaSwTypeFilter); + CleanupStack::PopAndDestroy(pJavaSwTypeFilter); + CleanupClosePushL(componentIdList); + + // For each component check whether the drive it has been installed + // to is present AND whether the media id is correct + TInt nComponents = componentIdList.Count(); + + LOG1(EJavaCaptain, EInfo, "initializeScrPresenceInfoL: Number of Java components is %d", + nComponents); + + for (TInt nInd = 0; nInd < nComponents; nInd++) + { + CComponentEntry *pEntry = CComponentEntry::NewLC(); + if (!(pScr->GetComponentL(componentIdList[nInd], *pEntry))) + { + ELOG1(EJavaCaptain, + "initializeScrPresenceInfoL: SCR GetComponentIdsL returned id %d " + "but GetComponentL does not find it", componentIdList[nInd]); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + CIntPropertyEntry* pMediaIdProperty = (CIntPropertyEntry *) + pScr->GetComponentPropertyL(componentIdList[nInd],_L("Media-Id")); + if (NULL == pMediaIdProperty) + { + ELOG1(EJavaCaptain, + "initializeScrPresenceInfoL: media_id property not found for component %d", + componentIdList[nInd]); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + CleanupStack::PushL(pMediaIdProperty); + + TInt nInstalledDrives = pEntry->InstalledDrives().Length(); + if (nInstalledDrives > (EDriveZ + 1)) + { + WLOG2(EJavaCaptain, + "initializeScrPresenceInfoL: too big (%d) installed drives array for " + "component %d", nInstalledDrives, componentIdList[nInd]); + nInstalledDrives = EDriveZ; + } + // When Java components are installed, only one installed drive + // and corresponding media id are registered. + TInt installationDrive = -1; + + for (TInt driveNumber = EDriveA; driveNumber < nInstalledDrives; driveNumber++) + { + if (pEntry->InstalledDrives()[driveNumber]) + { + installationDrive = driveNumber; + break; + } + } + + if (installationDrive == -1) + { + ELOG1(EJavaCaptain, + "initializeScrPresenceInfoL: component (id %d) did not have installed drive info", + componentIdList[nInd]); + CleanupStack::PopAndDestroy(pMediaIdProperty); + CleanupStack::PopAndDestroy(pEntry); + continue; + } + + if (drivePresent[installationDrive]) + { + // Check also the media id + if (driveMediaId[installationDrive] == pMediaIdProperty->IntValue()) + { + LOG1(EJavaCaptain, EInfo, + "initializeScrPresenceInfoL: set component %d to present", + componentIdList[nInd]); + + pScr->SetIsComponentPresentL(componentIdList[nInd], ETrue); + } + else + { + LOG1(EJavaCaptain, EInfo, + "initializeScrPresenceInfoL: set component %d to NOT present", + componentIdList[nInd]); + + pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); + } + } + else + { + LOG1(EJavaCaptain, EInfo, + "initializeScrPresenceInfoL: set component %d to NOT present", + componentIdList[nInd]); + + // drive is not present -> Java component installed to that + // drive is not present + pScr->SetIsComponentPresentL(componentIdList[nInd], EFalse); + } + + CleanupStack::PopAndDestroy(pMediaIdProperty); + CleanupStack::PopAndDestroy(pEntry); + } + + CleanupStack::PopAndDestroy(); // Close componentIdList + CleanupStack::PopAndDestroy(pScr); // Also closes RSoftwareComponentRegistry + + __UHEAP_MARKEND; +} + + +/** + * Creates an instance of RSoftwareComponentRegistry and connects to it. + */ +RSoftwareComponentRegistry *ScrUpdater::createScrL() +{ + RSoftwareComponentRegistry *pScr = new RSoftwareComponentRegistry; + if (NULL == pScr) + { + ELOG(EJavaInstaller, + "CreateScrL: Creating RSoftwareComponentRegistry failed"); + User::Leave(KErrGeneral); + } + TInt err = pScr->Connect(); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "CreateScrL: Connecting to RSoftwareComponentRegistry failed, error %d", + err); + delete pScr; + User::Leave(err); + } + + return pScr; +} + + +} // namespace captain +} // namespace java diff -r 85266cc22c7f -r f40128debb5d javamanager/javacaptain/extensionplugins/scrupdater/src/scrupdater.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javacaptain/extensionplugins/scrupdater/src/scrupdater.h Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,71 @@ +/* +* Copyright (c) 2010 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: ScrUpdater is Java Captain Symbian plugin that updates +* presence information of Java Applications in USIF SCR +* when removable drive is added or removed to the device. +* +*/ + +#ifndef SCRUPDATER_H +#define SCRUPDATER_H + +#include +#include + +#include "javaosheaders.h" + +#include "eventconsumerinterface.h" +#include "extensionplugininterface.h" + +namespace java +{ + +namespace captain +{ + +class CoreInterface; + +OS_NONSHARABLE_CLASS(ScrUpdater) : public EventConsumerInterface, + public ExtensionPluginInterface +{ +public: + ScrUpdater(); + virtual ~ScrUpdater(); + + // PluginInterface + virtual void startPlugin(CoreInterface* aCore); + virtual void stopPlugin(); + + // EventConsumerInterface + virtual void event(const std::string& eventProvider, + java::comms::CommsMessage& aMsg); + + // ExtensionPluginInterface methods + virtual EventConsumerInterface* getEventConsumer(); + +private: + void removeScrPresencesL(driveInfo *aInfo); + void addScrPresencesL(driveInfo *aInfo); + void initializeScrPresenceInfoL(); + + Usif::RSoftwareComponentRegistry *createScrL(); + + + CoreInterface* mCore; +}; + +} // namespace captain +} // namespace java + +#endif // SCRUPDATER_H diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/appinstuiplugin/build/javainstalllauncher.mmp --- a/javamanager/javainstaller/appinstuiplugin/build/javainstalllauncher.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/appinstuiplugin/build/javainstalllauncher.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -52,8 +52,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../inc -SYSTEMINCLUDE ../../../../inc - // Libraries LIBRARY charconv.lib LIBRARY cone.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/build/javainstaller.pro --- a/javamanager/javainstaller/installer/build/javainstaller.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/build/javainstaller.pro Wed Jun 23 18:07:10 2010 +0300 @@ -61,11 +61,7 @@ contains(PROJECT_DEFINES,RD_JAVA_S60_RELEASE_10_1_ONWARDS) { CONFIG += hb - LIBS += -lxqservice - } - - contains(PROJECT_DEFINES,RD_JAVA_USIF_NOTIFY_PROGRESS) { - LIBS += -lsifnotification + LIBS += -lsifnotification -lxqservice } MMP_RULES += \ diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifNotifier.java --- a/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifNotifier.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifNotifier.java Wed Jun 23 18:07:10 2010 +0300 @@ -107,19 +107,15 @@ iIconDir = aIconDir; iComponentIcon = aComponentIcon; - if (iHandle == 0) - { - InstallerException.internalError( - "SifNotifier.notifyStart: notifier has not been initialized"); - } + checkHandle(); int ret = _notifyStart( iHandle, aGlobalComponentId, aComponentName, aApplicationNames, aApplicationIcons, aComponentSize, aIconDir, aComponentIcon); if (ret < 0) { - Log.logError("Notifying SIF start failed with code " + ret + - ", " + getInfoString()); + Log.log("Notifying SIF start failed with code " + ret + + ", " + getInfoString()); InstallerException.internalError( "Notifying SIF start failed with code " + ret); } @@ -138,11 +134,7 @@ public void notifyEnd( int aErrCategory, int aErrCode, String aErrMsg, String aErrMsgDetails) { - if (iHandle == 0) - { - InstallerException.internalError( - "SifNotifier.notifyEnd: notifier has not been initialized"); - } + checkHandle(); if (aErrCategory == 0 && iLastProgressSent < MAX_PROGRESS) { // Before sending end notification, update progress to max if @@ -162,8 +154,8 @@ ", ErrMsgDetails: " + aErrMsgDetails; if (ret < 0) { - Log.logError("Notifying SIF end failed with code " + ret + - ", " + getInfoString() + ", " + logMsg); + Log.log("Notifying SIF end failed with code " + ret + + ", " + getInfoString() + ", " + logMsg); InstallerException.internalError( "Notifying SIF end failed with code " + ret); } @@ -184,11 +176,7 @@ { return; } - if (iHandle == 0) - { - InstallerException.internalError( - "SifNotifier.notifyProgress: notifier has not been initialized"); - } + checkHandle(); if (aSubOperation == SUB_OP_NO) { iLastProgressSent = aCurrent; @@ -202,8 +190,8 @@ ", Total: " + aTotal; if (ret < 0) { - Log.logError("Notifying SIF progress failed with code " + ret + - ", " + getInfoString() + ", " + logMsg); + Log.log("Notifying SIF progress failed with code " + ret + + ", " + getInfoString() + ", " + logMsg); InstallerException.internalError( "Notifying SIF progress failed with code " + ret); } @@ -221,11 +209,7 @@ */ public void destroy() { - if (iHandle == 0) - { - InstallerException.internalError( - "SifNotifier.destroy: notifier has not been initialized"); - } + checkHandle(); int ret = _destroy(iHandle); if (ret < 0) { @@ -265,6 +249,19 @@ /*** ----------------------------- PRIVATE ---------------------------- */ /** + * Checks if notifier instance has been initialized. + * @throws InstallerException if notifier has not been initialized + */ + private void checkHandle() + { + if (iHandle == 0) + { + InstallerException.internalError( + "SifNotifier.destroy: notifier has not been initialized"); + } + } + + /** * Returns notification info string used in logging. */ private String getInfoString() diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifRegistrator.java --- a/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifRegistrator.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/applicationregistrator/SifRegistrator.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -60,6 +60,14 @@ } /** + * Returns SIF specific error category from given error id. + */ + public static int getErrorCategory(int aErrorId) + { + return _getErrorCategory(aErrorId); + } + + /** * Launches the application view. If launching application view * fails this method does not throw exception but produces an * error log entry. @@ -157,7 +165,7 @@ if (ret < 0) { InstallerException.internalError( - "Creating session failed with code " + ret); + "Creating SIF session failed with code " + ret); } //Log.log("SifRegistrator session started"); iSessionHandle = ret; @@ -176,36 +184,18 @@ */ public void registerSuite(SuiteInfo aSuiteInfo, boolean aIsUpdate) { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } + checkSession(); Log.log("SifRegistrator registering application suite " + aSuiteInfo.getGlobalId()); - if (_getUsifMode() > 0) + // Register suite as a component. + registerComponent(aSuiteInfo, aIsUpdate); + registerLocalizedComponentName(aSuiteInfo, -1); + // Register applications within the component. + Vector apps = aSuiteInfo.getApplications(); + for (int i = 0; i < apps.size(); i++) { - // USIF Phase 2 registration. - // Register suite as a component. - registerComponent(aSuiteInfo, aIsUpdate); - registerLocalizedComponentName(aSuiteInfo, -1); - // Register applications within the component. - Vector apps = aSuiteInfo.getApplications(); - for (int i = 0; i < apps.size(); i++) - { - registerApplication(aSuiteInfo, i); - } - } - else - { - // USIF Phase 1 registration. - // Register each application in the suite. - Vector apps = aSuiteInfo.getApplications(); - for (int i = 0; i < apps.size(); i++) - { - registerComponent(aSuiteInfo, i, aIsUpdate); - registerLocalizedComponentName(aSuiteInfo, i); - } + registerApplication(aSuiteInfo, i); } registerLocalizedProperties(aSuiteInfo); } @@ -221,29 +211,12 @@ */ public void unregisterSuite(SuiteInfo aSuiteInfo) { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } + checkSession(); Log.log("SifRegistrator unregistering application suite " + aSuiteInfo.getGlobalId()); - if (_getUsifMode() > 0) - { - // USIF Phase 2 unregistration. - // Unregister suite as a component. - unregisterComponent(aSuiteInfo); - } - else - { - // USIF Phase 1 unregistration. - // Unregister each application in the suite. - Vector apps = aSuiteInfo.getApplications(); - for (int i = 0; i < apps.size(); i++) - { - unregisterComponent(aSuiteInfo, i); - } - } + // Unregister suite as a component. + unregisterComponent(aSuiteInfo); } /** @@ -256,15 +229,11 @@ */ public void commitSession() { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } - + checkSession(); int err = _commitSession(iSessionHandle); if (err < 0) { - InstallerException.internalError("Commiting session failed with code " + err); + InstallerException.internalError("Commiting SIF session failed with code " + err); } // Current session has been closed iSessionHandle = 0; @@ -279,17 +248,13 @@ */ public void rollbackSession() { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } - + checkSession(); int err = _rollbackSession(iSessionHandle); // Session is closed always when rollback is called iSessionHandle = 0; if (err < 0) { - InstallerException.internalError("Rolling back the session failed with code " + err); + InstallerException.internalError("Rolling back SIF session failed with code " + err); } //Log.log("SifRegistrator session rolled back"); } @@ -305,7 +270,6 @@ { return; } - _closeSession(iSessionHandle); // Current session has been closed iSessionHandle = 0; @@ -322,11 +286,7 @@ */ public ComponentId getComponentId(String aGlobalId) { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } - + checkSession(); ComponentId result = new ComponentId(); int ret = _getComponentId(iSessionHandle, aGlobalId, result); if (-1 == ret) @@ -354,11 +314,7 @@ */ public ComponentId getComponentId(Uid aAppUid) { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } - + checkSession(); ComponentId result = new ComponentId(); int ret = _getComponentIdForApp( iSessionHandle, ((PlatformUid)aAppUid).getIntValue(), result); @@ -384,15 +340,12 @@ */ public void logComponent(String aGlobalId) { - if (0 == iSessionHandle) - { - InstallerException.internalError("No valid SIF session."); - } - + checkSession(); int ret = _logComponent(iSessionHandle, aGlobalId); if (ret < -1) { - Log.logError("SifRegistrator logComponent failed with code " + ret); + Log.logError("SifRegistrator logComponent for " + aGlobalId + + " failed with code " + ret); } } @@ -400,120 +353,19 @@ /*** ----------------------------- PRIVATE ---------------------------- */ /** - * Registers one Java application to S60 USIF as a component. - * Used with USIF Phase 1. - * - * @param aSuiteInfo Information needed to register the application - * @param aIndex index of the application in the suite - * @param aIsUpdate true in case of an update, false in case of a new - * installation - * @throws InstallerException if registration cannot done or - * startSession has not been called successfully - * @see startSession - * @see SuiteInfo + * Checks if SifRegistrator session has been started. + * @throws InstallerException if SifRegistrator session has not been started */ - private void registerComponent( - SuiteInfo aSuiteInfo, int aIndex, boolean aIsUpdate) + private void checkSession() { - String globalId = aSuiteInfo.getGlobalId(aIndex); - if (globalId == null) - { - Log.logWarning("SifRegistrator: Application with index " + aIndex + - " not found from " + aSuiteInfo.getGlobalId()); - return; - } - ApplicationInfo appInfo = - (ApplicationInfo)aSuiteInfo.getApplications().elementAt(aIndex); - String suiteName = aSuiteInfo.getName(); - String vendor = aSuiteInfo.getVendor(); - String version = aSuiteInfo.getVersion().toString(); - String name = appInfo.getName(); - int uid = ((PlatformUid)appInfo.getUid()).getIntValue(); - String[] componentFiles = getComponentFiles(aSuiteInfo); - long componentSize = aSuiteInfo.getInitialSize(); - String attrValue = aSuiteInfo.getAttributeValue("Nokia-MIDlet-Block-Uninstall"); - boolean isRemovable = !(attrValue != null && attrValue.equalsIgnoreCase("true")); - boolean isDrmProtected = (aSuiteInfo.getContentInfo() == aSuiteInfo.CONTENT_INFO_DRM); - boolean isOriginVerified = aSuiteInfo.isTrusted(); - String midletInfoUrl = aSuiteInfo.getAttributeValue("MIDlet-Info-URL"); - String midletDescription = aSuiteInfo.getAttributeValue("MIDlet-Description"); - String downloadUrl = aSuiteInfo.getAttributeValue("Nokia-MIDlet-Download-URL"); - ComponentId componentId = new ComponentId(); - int err = _registerComponent( - iSessionHandle, uid, - getScrString(suiteName), getScrString(vendor), - getScrString(version), getScrString(name), - getScrString(globalId), componentFiles, - componentSize, isRemovable, isDrmProtected, - isOriginVerified, aIsUpdate, aSuiteInfo.getMediaId(), - getScrString(midletInfoUrl), - getScrString(midletDescription), - getScrString(downloadUrl), - componentId); - if (err < 0) + if (iSessionHandle == 0) { - InstallerException.internalError( - "Registering component " + globalId + - " failed with code " + err); - } - else - { - appInfo.setComponentId(componentId); - Log.log("SifRegistrator registered component " + globalId + - " with id " + componentId.getId()); - } - } - - /** - * Unregisters one Java application from being S60 USIF component. - * Used with USIF Phase 1. - * - * @param aSuiteInfo Information needed to unregister the application, - * @param aIndex index of the application in the suite - * @throws InstallerException if unregistration cannot done or - * startSession has not been called successfully - * @see startSession - * @see SuiteInfo - */ - private void unregisterComponent(SuiteInfo aSuiteInfo, int aIndex) - { - String globalId = aSuiteInfo.getGlobalId(aIndex); - if (globalId == null) - { - Log.logWarning("SifRegistrator: Application with index " + aIndex + - " not found from " + aSuiteInfo.getGlobalId()); - return; - } - ComponentId componentId = getComponentId(globalId); - if (componentId == null) - { - Log.logWarning( - "SifRegistrator unregistration failed, application " + - globalId + " does not exist"); - return; - } - // Save component id to ApplicationInfo. - ApplicationInfo appInfo = - (ApplicationInfo)aSuiteInfo.getApplications().elementAt(aIndex); - appInfo.setComponentId(componentId); - // Unregister application. - int err = _unregisterComponent(iSessionHandle, componentId.getId()); - if (err < 0) - { - InstallerException.internalError( - "Unregistering component " + globalId + - " failed with code " + err); - } - else - { - Log.log("SifRegistrator unregistered component " + globalId + - " with id " + componentId.getId()); + InstallerException.internalError("No valid SIF session."); } } /** * Registers Java application suite to S60 USIF as a component. - * Used with USIF Phase 2. * * @param aSuiteInfo Suite information * @param aIsUpdate true in case of an update, false in case of a new @@ -529,7 +381,6 @@ String suiteName = aSuiteInfo.getName(); String vendor = aSuiteInfo.getVendor(); String version = aSuiteInfo.getVersion().toString(); - String name = null; // Set name to null so that suite name will be used. int uid = ((PlatformUid)aSuiteInfo.getUid()).getIntValue(); String[] componentFiles = getComponentFiles(aSuiteInfo); long componentSize = aSuiteInfo.getInitialSize(); @@ -540,17 +391,20 @@ String midletInfoUrl = aSuiteInfo.getAttributeValue("MIDlet-Info-URL"); String midletDescription = aSuiteInfo.getAttributeValue("MIDlet-Description"); String downloadUrl = aSuiteInfo.getAttributeValue("Nokia-MIDlet-Download-URL"); + String updateUrl = aSuiteInfo.getAttributeValue("Nokia-Update"); ComponentId componentId = new ComponentId(); int err = _registerComponent( iSessionHandle, uid, getScrString(suiteName), getScrString(vendor), - getScrString(version), getScrString(name), - getScrString(globalId), componentFiles, - componentSize, isRemovable, isDrmProtected, - isOriginVerified, aIsUpdate, aSuiteInfo.getMediaId(), + getScrString(version), getScrString(globalId), + componentFiles, componentSize, + isRemovable, isDrmProtected, + isOriginVerified, aIsUpdate, + aSuiteInfo.getMediaId(), getScrString(midletInfoUrl), getScrString(midletDescription), getScrString(downloadUrl), + getScrString(updateUrl), componentId); if (err < 0) { @@ -568,7 +422,6 @@ /** * Unregisters Java application suite from being S60 USIF component. - * Used with USIF Phase 2. * * @param aSuiteInfo suite information * @throws InstallerException if unregistration cannot done or @@ -610,7 +463,6 @@ * from given SuiteInfo object. The SuiteInfo must already have * been registered to USIF as a component with registerComponent() * method before this method is called. - * Used with USIF Phase 2. * * @param aSuiteInfo information needed to register the application * @param aIndex index of the application in the suite @@ -816,51 +668,41 @@ // Register Domain-Category property. String protectionDomainProperty = "Domain-Category"; String protectionDomainName = aSuite.getProtectionDomainName(); - if (protectionDomainName != null) + err = _setLocalizedComponentProperty( + iSessionHandle, cid, protectionDomainProperty, + getProtectionDomainPropertyValue(protectionDomainName), + UNSPECIFIED_LOCALE); + if (err < 0) { - err = _setLocalizedComponentProperty( - iSessionHandle, cid, protectionDomainProperty, - getProtectionDomainPropertyValue(protectionDomainName), - UNSPECIFIED_LOCALE); - if (err < 0) - { - InstallerException.internalError( - "Adding property " + protectionDomainProperty + - " value " + protectionDomainName + " for component " + - cid + " failed with code " + err); - } - } - else - { - Log.logWarning( - "SifRegistrator.registerLocalizedProperties: " + - protectionDomainProperty + " not set"); + InstallerException.internalError( + "Adding property " + protectionDomainProperty + + " value " + protectionDomainName + " for component " + + cid + " failed with code " + err); } } /** * Returns the "Domain-Category" property value which contains * the text id and text file name for the localized domain category - * text. + * text. This method must never return null. */ private String getProtectionDomainPropertyValue(String aProtectionDomain) { - String textId = null; - if (aProtectionDomain.equals("Manufacturer")) - { - textId = "txt_java_inst_setlabel_cert_domain_val_manufacturer"; - } - else if (aProtectionDomain.equals("Operator")) + String textId = "txt_java_inst_setlabel_cert_domain_val_untrusted_third_party"; + if (aProtectionDomain != null) { - textId = "txt_java_inst_setlabel_cert_domain_val_operator"; - } - else if (aProtectionDomain.equals("IdentifiedThirdParty")) - { - textId = "txt_java_inst_setlabel_cert_domain_val_trusted_third_party"; - } - else if (aProtectionDomain.equals("UnidentifiedThirdParty")) - { - textId = "txt_java_inst_setlabel_cert_domain_val_untrusted_third_party"; + if (aProtectionDomain.equals("Manufacturer")) + { + textId = "txt_java_inst_setlabel_cert_domain_val_manufacturer"; + } + else if (aProtectionDomain.equals("Operator")) + { + textId = "txt_java_inst_setlabel_cert_domain_val_operator"; + } + else if (aProtectionDomain.equals("IdentifiedThirdParty")) + { + textId = "txt_java_inst_setlabel_cert_domain_val_trusted_third_party"; + } } return textId + ",javaapplicationinstaller"; } @@ -894,6 +736,13 @@ "SifRegistrator ignored unknown locale: " + name + ": " + localizedName); } + else if (localizedName.getName() == null || + localizedName.getName().length() == 0) + { + Log.logWarning( + "SifRegistrator ignored empty localized text: " + + name + ": " + localizedName); + } else { Log.log("SifRegistrator found localized text " + @@ -1015,7 +864,6 @@ * @param aSuiteName * @param aVendor * @param aVersion - * @param aName * @param aGlobalId * @param aComponentFiles * @param aComponentSize @@ -1027,17 +875,19 @@ * @param aMidletInfoUrl * @param aMidletDescription * @param aDownloadUrl + * @param aUpdateUrl * @param aComponentId upon successful execution contains the * component id for the registered component * @return 0 if registration succeeded or Symbian error code */ private static native int _registerComponent( int aSessionHandle, int aUid, String aSuiteName, String aVendor, - String aVersion, String aName, String aGlobalId, + String aVersion, String aGlobalId, String[] aComponentFiles, long aComponentSize, boolean aIsRemovable, boolean aIsDrmProtected, boolean aIsOriginVerified, boolean aIsUpdate, int aMediaId, - String aMidletInfoUrl, String aMidletDescription, String aDownloadUrl, + String aMidletInfoUrl, String aMidletDescription, + String aDownloadUrl, String aUpdateUrl, ComponentId aComponentId); /** @@ -1145,4 +995,9 @@ * @return 1 if application data should be registered to USIF, 0 otherwise */ private static native int _getUsifMode(); + + /** + * Returns SIF specific error category from given error id. + */ + private static native int _getErrorCategory(int aErrorId); } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/utils/SysUtil.java --- a/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/utils/SysUtil.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc.s60/com/nokia/mj/impl/installer/utils/SysUtil.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -359,11 +359,12 @@ " drives failed with code " + ret); } // Save the drives so that next time they are not fetched again. - iUserVisibleDrives = new Vector(); + Vector drivesVector = new Vector(); for (int i = 0; i < aVisibleDrives.size(); i++) { - iUserVisibleDrives.addElement(aVisibleDrives.elementAt(i)); + drivesVector.addElement(aVisibleDrives.elementAt(i)); } + iUserVisibleDrives = drivesVector; } /** diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/GetComponentInfo.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/GetComponentInfo.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/GetComponentInfo.java Wed Jun 23 18:07:10 2010 +0300 @@ -480,6 +480,15 @@ suiteUid, null, iSecurityAttributes.getAuthenticationAttributes()); + if (authenticationCredentials != null) + { + for (int i = 0; i < authenticationCredentials.length; i++) + { + String domain = authenticationCredentials[i] + .getProtectionDomainCategory(); + Log.log("Protection domain: " + domain); + } + } if (iJarFilename != null) { // Authenticate jar. diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallationNotifier.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallationNotifier.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallationNotifier.java Wed Jun 23 18:07:10 2010 +0300 @@ -241,10 +241,8 @@ Log.log("InstallationNotifier.set: progress " + currentPercentage); defineProperties(); - if (aCurrentValue == 0 || - aCurrentValue == iMaxValue || - aCurrentValue >= iLastPropertyUpdate + iPropertyProgressStep || - aCurrentValue <= iLastPropertyUpdate - iPropertyProgressStep) + if (isUpdateNeeded(aCurrentValue, iMaxValue, + iLastPropertyUpdate, iPropertyProgressStep)) { iLastPropertyUpdate = aCurrentValue; Log.log("InstallationNotifier.set: update property to " + @@ -256,10 +254,8 @@ currentPercentage); } - if (aCurrentValue == 0 || - aCurrentValue == iMaxValue || - aCurrentValue >= iLastUiUpdate + iUiProgressStep || - aCurrentValue <= iLastUiUpdate - iUiProgressStep) + if (isUpdateNeeded(aCurrentValue, iMaxValue, + iLastUiUpdate, iUiProgressStep)) { iLastUiUpdate = aCurrentValue; if (iInstallerUi != null) @@ -380,4 +376,24 @@ "InstallationNotifier: Deleting property failed", ex); } } + + /** + * Returns true if progress update is needed, false otherwise. + * + * @param aCurrent current progress value + * @param aMax maximum progress value + * @param aPrevious previously updated progress value + * @param aStep step between progress updates + */ + private static boolean isUpdateNeeded( + int aCurrent, int aMax, int aPrevious, int aStep) + { + if (aCurrent == 0 || aCurrent == aMax || + aCurrent >= aPrevious + aStep || + aCurrent <= aPrevious - aStep) + { + return true; + } + return false; + } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/Installer.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/Installer.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/Installer.java Wed Jun 23 18:07:10 2010 +0300 @@ -99,6 +99,11 @@ */ static final int RET_NO_SYSTEM_EXIT = 100; + /** Id for installer cancel Comms message. */ + private static final int INSTALLER_CANCEL_MESSAGE_ID = 603; + /** Id for installer cancel Comms response message. */ + private static final int INSTALLER_CANCEL_RESPONSE_MESSAGE_ID = 604; + // ThreadDumper instance. private static ThreadDumper iThreadDumper = null; @@ -1235,6 +1240,8 @@ " -commsresult=endpoint In the end of operation, send\n"+ " InstallerResultMessage to specified comms\n"+ " endpoint.\n"+ + " -base64=base64options Comma separated list of base64 encoded\n"+ + " options.\n"+ "\n"+ "Either -jad or -jar must be specified, other options are optional.\n"; @@ -1264,10 +1271,13 @@ " -captainmsgs=yes|no If set to no, JavaInstaller will not send\n"+ " any messages to JavaCaptain during\n"+ " uninstallation. Default is yes.\n"+ + " -resetpreinstall Reset preinstall state.\n"+ " -skipotastatus Skip OTA status handling.\n"+ " -commsresult=endpoint In the end of operation, send\n"+ " InstallerResultMessage to specified comms\n"+ " endpoint.\n"+ + " -base64=base64options Comma separated list of base64 encoded\n"+ + " options.\n"+ "\n"+ "The -uid option must be specified, other options are optional.\n"; @@ -1466,7 +1476,7 @@ if (aMessage.hasPermission(CommsPermission.INSTALL_APPLICATION)) { int msgId = aMessage.getMessageId(); - if (msgId == 603) + if (msgId == INSTALLER_CANCEL_MESSAGE_ID) { Installer.cancel(); result = ERR_NONE; @@ -1479,7 +1489,7 @@ } CommsMessage response = new CommsMessage(); response.replyTo(aMessage); - response.setMessageId(604); + response.setMessageId(INSTALLER_CANCEL_RESPONSE_MESSAGE_ID); response.write(result); iInstallerServer.send(response); Log.log("InstallerListener sent " + response); diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallerResultMessage.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallerResultMessage.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/InstallerResultMessage.java Wed Jun 23 18:07:10 2010 +0300 @@ -21,6 +21,7 @@ import com.nokia.mj.impl.comms.CommsEndpoint; import com.nokia.mj.impl.comms.CommsMessage; import com.nokia.mj.impl.installer.applicationregistrator.SifNotifier; +import com.nokia.mj.impl.installer.applicationregistrator.SifRegistrator; import com.nokia.mj.impl.installer.storagehandler.ApplicationInfo; import com.nokia.mj.impl.installer.storagehandler.SuiteInfo; import com.nokia.mj.impl.installer.utils.InstallerException; @@ -37,30 +38,77 @@ /** * InstallerResultMessage contains information about install, uninstall - * and componentinfo operations. It is sent to Comms endpoint specified - * at JavaInstaller startup. + * and componentinfo operation results. JavaInstaller sends it at the end + * of operation to Comms endpoint specified at JavaInstaller startup with + * -commsresult option. + *

+ * InstallerResultMessage contains name-value pairs: name is a string, + * value can be either a string or an int. Message syntax: + *

+ *

+ * message := length named_int_value* length named_string_value*
+ * named_int_value := name int_value
+ * named_string_value := name string_value
+ * name := <string>
+ * int_value := <int>
+ * string_value := <string>
+ * length := <int telling the length of the table that follows>
+ * 
+ *

*/ public class InstallerResultMessage { + /** Operation type. Value type: int. + Possible values: 0: install, 1: uninstall, 2: componentinfo. */ public static final String NAME_OPERATION = "operation"; + /** Status code indicating operation result. Value type: int. */ public static final String NAME_RESULT = "result"; + /** SIF error category. Value type: int. */ public static final String NAME_ERROR_CATEGORY = "error-category"; + /** Java runtime specific error code. Value type: int. */ + public static final String NAME_ERROR_CODE = "error-code"; + /** Localized error message. Value type: string. */ public static final String NAME_ERROR_MSG = "error-message"; + /** Localized message with more details of the error reason. Value type: string. */ public static final String NAME_ERROR_DETAILS = "error-details"; + /** Suite UID. Value type: int. */ public static final String NAME_SUITE_UID = "suite-uid"; + /** Midlet-n UID. Value type: int. */ public static final String NAME_MIDLET_UID = "midlet-uid-"; + /** Suite component id. Value type: int. */ public static final String NAME_SUITE_CID = "suite-cid"; + /** Midlet-n component id. Value type: int. */ public static final String NAME_MIDLET_CID = "midlet-cid-"; + /** Suite global id. Value type: string. */ public static final String NAME_SUITE_GID = "suite-gid"; + /** Midlet-n global id. Value type: string. */ public static final String NAME_MIDLET_GID = "midlet-gid-"; + /** Suite name. Value type: string. */ public static final String NAME_SUITE_NAME = "suite-name"; + /** Midlet-n name. Value type: string. */ public static final String NAME_MIDLET_NAME= "midlet-name-"; + /** Suite vendor. Value type: string. */ public static final String NAME_VENDOR = "vendor"; + /** Suite version. Value type: string. */ public static final String NAME_VERSION = "version"; + /** Component installation status. Value type: int. Possible values: + 0: new component, + 1: upgrade, + 2: already installed, + 3: newer version already installed, + 4: invalid package, cannot be installed. */ public static final String NAME_INSTALL_STATUS = "install-status"; + /** Component authenticity. Value type: int. Possible values: + 0: component is not authenticated, 1: component is authenticated. */ public static final String NAME_AUTHENTICITY = "authenticity"; + /** Size of the files owned by the component at the time of the + installation. Calculated from MIDlet-Data-Size and + MIDlet-Jar-Size attributes. Value type: int. */ public static final String NAME_COMPONENT_SIZE = "component-size"; + /** Id for installer result Comms message. */ + private static final int INSTALLER_RESULT_MESSAGE_ID = 601; + private Hashtable iNamedIntValues = null; private Hashtable iNamedStringValues = null; @@ -165,7 +213,7 @@ { addValue(NAME_ERROR_DETAILS, msg); } - addErrorCategory(eb); + addErrorCodes(eb); } if (aException instanceof InstallerException) { @@ -193,25 +241,24 @@ } /** - * Get a string value from this message. - * @throws IllegalArgumentException if value with given name is not found + * Returns a string value from this message, or null + * if string value is not present. */ - public String getStringValue(String aName) + String getStringValue(String aName) { Object value = iNamedStringValues.get(aName); if (value instanceof String) { return (String)value; } - throw new IllegalArgumentException( - "InstallerResultMessage: string value " + aName + " not found"); + return null; } /** * Get an int value from this message. * @throws IllegalArgumentException if value with given name is not found */ - public int getIntValue(String aName) + int getIntValue(String aName) { Object value = iNamedIntValues.get(aName); if (value instanceof Integer) @@ -225,7 +272,7 @@ /** * Removes a value from this message. */ - public void removeValue(String aName) + void removeValue(String aName) { iNamedStringValues.remove(aName); iNamedIntValues.remove(aName); @@ -255,19 +302,20 @@ } if (iSifNotifier != null) { - int errCategory = 0; - int errCode = 0; - String errMsg = null; - String errDetails = null; - if (getIntValue(NAME_RESULT) != Installer.ERR_NONE) - { - errCategory = getIntValue(NAME_ERROR_CATEGORY); - errCode = Installer.ERR_GENERAL; - errMsg = getStringValue(NAME_ERROR_MSG); - errDetails = getStringValue(NAME_ERROR_DETAILS); - } try { + int result = getIntValue(NAME_RESULT); + int errCategory = 0; + int errCode = 0; + String errMsg = null; + String errDetails = null; + if (result != Installer.ERR_NONE) + { + errCategory = getIntValue(NAME_ERROR_CATEGORY); + errCode = getIntValue(NAME_ERROR_CODE); + errMsg = getStringValue(NAME_ERROR_MSG); + errDetails = getStringValue(NAME_ERROR_DETAILS); + } iSifNotifier.notifyEnd(errCategory, errCode, errMsg, errDetails); } catch (Throwable t) @@ -298,7 +346,7 @@ { comms.connect(aEndpoint); CommsMessage msg = new CommsMessage(); - msg.setMessageId(601); + msg.setMessageId(INSTALLER_RESULT_MESSAGE_ID); // Initialise the message data. msg.write(iNamedIntValues.size()); Enumeration e = iNamedIntValues.keys(); @@ -318,7 +366,7 @@ } // Send the message. Log.log("Sending InstallerResultMessage to " + aEndpoint); - CommsMessage installerResultResponse = comms.sendReceive(msg, 5); + comms.sendReceive(msg, 5); comms.disconnect(); Log.log("Received InstallerResultResponse from " + aEndpoint); } @@ -385,48 +433,13 @@ } /** - * Adds error category to the result message. + * Adds error codes to the result message. */ - private void addErrorCategory(ExceptionBase aEb) + private void addErrorCodes(ExceptionBase aEb) { - switch (aEb.getShortMessageId()) - { - case InstallerErrorMessage.INST_NO_MEM: - addValue(NAME_ERROR_CATEGORY, 2); // ELowDiskSpace - break; - case InstallerErrorMessage.INST_NO_NET: - addValue(NAME_ERROR_CATEGORY, 3); // ENetworkUnavailable - break; - case InstallerErrorMessage.INST_CORRUPT_PKG: - addValue(NAME_ERROR_CATEGORY, 5); // ECorruptedPackage - break; - case InstallerErrorMessage.INST_COMPAT_ERR: - addValue(NAME_ERROR_CATEGORY, 6); // EApplicationNotCompatible - break; - case InstallerErrorMessage.INST_AUTHORIZATION_ERR: - // fall through - case InstallerErrorMessage.INST_AUTHENTICATION_ERR: - addValue(NAME_ERROR_CATEGORY, 7); // ESecurityError - break; - case InstallerErrorMessage.INST_PUSH_REG_ERR: - // fall through - case InstallerErrorMessage.INST_UNEXPECTED_ERR: - // fall through - case InstallerErrorMessage.UNINST_UNEXPECTED_ERR: - // fall through - case InstallerErrorMessage.OTHER_UNEXPECTED_ERR: - addValue(NAME_ERROR_CATEGORY, 8); // EUnexpectedError - break; - case InstallerErrorMessage.INST_CANCEL: - // fall through - case InstallerErrorMessage.UNINST_CANCEL: - addValue(NAME_ERROR_CATEGORY, 9); // EUserCancelled - break; - case InstallerErrorMessage.UNINST_NOT_ALLOWED: - addValue(NAME_ERROR_CATEGORY, 10); // EUninstallationBlocked - break; - default: - addValue(NAME_ERROR_CATEGORY, 8); // EUnexpectedError - } + addValue(NAME_ERROR_CATEGORY, + SifRegistrator.getErrorCategory(aEb.getShortMessageId())); + addValue(NAME_ERROR_CODE, + aEb.getShortMessageId()*1000 + aEb.getDetailedMessageId()); } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/CheckJarPackages.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/CheckJarPackages.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/CheckJarPackages.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -73,7 +73,7 @@ // Application touch support detection is not needed // if Nokia-MIDlet-On-Screen-Keypad has been defined. boolean touchDetection = true; - if (ball.getAttributeValue("Nokia-MIDlet-On-Screen-Keypad") != null) + if (ball.iSuite.getOnScreenKeypad() != SuiteInfo.OSK_UNDEFINED) { touchDetection = false; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/FinalizeInstallation.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/FinalizeInstallation.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/FinalizeInstallation.java Wed Jun 23 18:07:10 2010 +0300 @@ -304,7 +304,14 @@ if (ball.iSifRegistrator.getSifMode() > 0 && launchApp) { - ball.iSifRegistrator.launchAppView(); + ball.getInstallerUi().syncExec(new Runnable() + { + // launchAppView() must be called in the UI thread. + public void run() + { + ball.iSifRegistrator.launchAppView(); + } + }); } else if (ball.iCaptainMsgs && launchApp && diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/HandleCustomAttributes.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/HandleCustomAttributes.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/HandleCustomAttributes.java Wed Jun 23 18:07:10 2010 +0300 @@ -56,7 +56,7 @@ { if (aBall.iApplicationRegistrator.isOnDeviceKeypadNeeded()) { - // default value when on-screen-keypad is needed + // Default value when on-screen-keypad is needed. aBall.iSuite.setOnScreenKeypad(SuiteInfo.OSK_GAMEACTIONS); String attrName = "Nokia-MIDlet-On-Screen-Keypad"; @@ -77,13 +77,16 @@ } else { - Log.logWarning("Invalid " + attrName + " value " + attrValue); + // Ignore on-screen-keypad attribute with invalid value. + aBall.iSuite.setOnScreenKeypad(SuiteInfo.OSK_UNDEFINED); + Log.logWarning("Ignoring invalid " + attrName + + " value " + attrValue); } } } else { - // If the device does not need on-screen-keypad, the value is not set at all + // If the device does not need on-screen-keypad, the value is not set at all. aBall.iSuite.setOnScreenKeypad(SuiteInfo.OSK_UNDEFINED); } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/StartProgressNotifications.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/StartProgressNotifications.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/install/steps/StartProgressNotifications.java Wed Jun 23 18:07:10 2010 +0300 @@ -99,7 +99,7 @@ } catch (Throwable t) { - Log.logError("StartProgressNotifications: SifNotifier.notifyStart failed", t); + Log.log("StartProgressNotifications: SifNotifier.notifyStart failed", t); try { ball.iSifNotifier.destroy(); diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/uninstall/steps/GetFromStorage.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/uninstall/steps/GetFromStorage.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/midp2/uninstall/steps/GetFromStorage.java Wed Jun 23 18:07:10 2010 +0300 @@ -54,6 +54,15 @@ // Check if debug attribute has been defined for this suite. ball.setDebug(ball.iSuite.getAttributeValue("Nokia-MIDlet-Install-Debug")); + // Check from arguments if preinstall state should be reset. + String arg = ball.iArgs.get("resetpreinstall"); + if (arg != null) + { + ball.iSuite.setResetPreinstall(true); + ball.log("ResetPreinstall set"); + } + + // Log all suite info. //ball.log(ball.iSuite.toString()); } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/StorageHandler.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/StorageHandler.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/StorageHandler.java Wed Jun 23 18:07:10 2010 +0300 @@ -925,13 +925,23 @@ } else { - // Not an update ==> user is making uninstallation. + // Not an update ==> suite is being uninstalled. int oldPreinstallState = readPreinstallState(aSuiteInfo); if (oldPreinstallState == aSuiteInfo.STATE_PREINSTALLED) { - // User is uninstalling a preinstalled application, - // set preinstall state to STATE_NO_PREINSTALL. - setNoPreinstallState(aSuiteInfo); + if (aSuiteInfo.getResetPreinstall()) + { + // Preinstallation state should be reset, + // remove existing data from + // StorageNames.PREINSTALL_TABLE table. + removePreinstallState(aSuiteInfo); + } + else + { + // User is uninstalling a preinstalled application, + // set preinstall state to STATE_NO_PREINSTALL. + setNoPreinstallState(aSuiteInfo); + } } else if (oldPreinstallState == aSuiteInfo.STATE_INSTALLED) { diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/SuiteInfo.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/SuiteInfo.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/storagehandler/SuiteInfo.java Wed Jun 23 18:07:10 2010 +0300 @@ -73,6 +73,9 @@ private String iAccessPoint = null; // Flag telling if application suite is trusted private boolean iTrusted = false; + // Flag telling if preinstallation state should be + // reseted in uninstallation. + private boolean iResetPreinstall = false; /** Flag telling if default icon should be used. */ private boolean iUseDefaultIcon = false; @@ -783,6 +786,24 @@ } /** + * Get the flag telling if preinstallation state should be reset. + * Used only in uninstallation. + */ + public boolean getResetPreinstall() + { + return iResetPreinstall; + } + + /** + * Set the flag telling if preinstallation state should be reset. + * Used only in uninstallation. + */ + public void setResetPreinstall(boolean aResetPreinstall) + { + iResetPreinstall = aResetPreinstall; + } + + /** * Calculates initial size from MIDlet-Data-Size and * MIDlet-Jar-Size attributes, or if they are not present * from jar file size. @@ -865,6 +886,7 @@ buf.append(" MediaId: ").append(getMediaId()).append("\n"); buf.append(" InitialSize: ").append(getInitialSize()).append("\n"); buf.append(" PreinstallState: ").append(iPreinstallState).append("\n"); + buf.append(" ResetPreinstall: ").append(getResetPreinstall()).append("\n"); buf.append(" OnScreenKeypad: ").append(getOnScreenKeypad()).append("\n"); buf.append(" ConvertedIcon: ").append(getConvertedIconPath()).append("\n"); buf.append(" Group: ").append(getInstallationGroup()).append("\n"); diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/Args.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/Args.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/Args.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -20,6 +20,7 @@ import com.nokia.mj.impl.installer.utils.InstallerException; import com.nokia.mj.impl.installer.utils.Log; +import com.nokia.mj.impl.utils.Base64; import com.nokia.mj.impl.utils.Tokenizer; import java.util.Hashtable; @@ -59,6 +60,7 @@ //Log.log("Args: " + arg + "=" + value); } } + decodeBase64Args(); } /** @@ -203,7 +205,55 @@ } drive = aDrive.toLowerCase().charAt(0) - 'a'; } - Log.log("Parsed drive " + aDrive + " --> " + drive); + Log.log("Args: Parsed drive " + aDrive + " --> " + drive); return drive; } + + /** + * Decodes base64 encoded arguments. + */ + private void decodeBase64Args() + { + String base64Value = get("base64"); + if (base64Value == null || base64Value.length() == 0) + { + return; + } + String[] tokens = Tokenizer.split(base64Value, ","); + String name = null; + String value = null; + for (int i = 0; i < tokens.length; i++) + { + name = tokens[i]; + value = null; + if (name != null && name.length() > 0) + { + value = get(name); + } + if (value != null && value.length() > 0) + { + try + { + byte[] valueBytes = Base64.decode(value); + if (valueBytes != null && valueBytes.length > 0) + { + value = new String(valueBytes, "UTF-16"); + Log.log("Args: Base64 decoded option " + + name + "=" + value); + iArgs.put(name, value); + } + else + { + Log.logError("Args: Base64 decoding failed for " + + name + "=" + value); + } + } + catch (Throwable t) + { + Log.logError("Args: Base64 decoding failed for " + + name + "=" + value, t); + } + } + } + } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java Wed Jun 23 18:07:10 2010 +0300 @@ -67,7 +67,7 @@ */ public String toString() { - return "javax.microedition.midlet.AutoStartPermission"; + return "AutoStartPermission"; } /** diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java Wed Jun 23 18:07:10 2010 +0300 @@ -112,7 +112,7 @@ boolean userPromptAllowed = false; if (aPermission.toString().equals( - "javax.microedition.io.PushRegistryPermission")) + "javax.microedition.io.PushRegistry")) { // PushRegistryPermission is the only permission which // must be prompted from the user during installation. diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/src.s60/applicationregistrator/applicationregistrator.cpp --- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/applicationregistrator.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/applicationregistrator.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -51,6 +51,7 @@ // NAMESPACE DECLARATION using namespace java; +#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK /** * MIDP Stub SIS file UID. The application type Uid for MIDlets in S60 */ @@ -80,14 +81,6 @@ jboolean aBackground); /** - * Internal helper method for checking whether Application Shell is already running - * Used JNI method ...1startAppShellUi - * - * @return ETrue if AppShell is running - */ -TBool isAppShellUiRunning(); - -/** * Internal helper method for checking whether this code is executing in * a device that has correctly working version of * RApaLsSession::ForceCommitNonNativeApplicationsUpdatesL() @@ -95,6 +88,15 @@ * @return ETrue if force commit works well */ TBool isForceCommitSupported(); +#endif // !SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK + +/** + * Internal helper method for checking whether Application Shell is already running + * Used JNI method ...1startAppShellUi + * + * @return ETrue if AppShell is running + */ +TBool isAppShellUiRunning(); /** * Internal helper method for starting menu application @@ -129,7 +131,7 @@ return err; } -#ifndef RD_JAVA_USIF_APP_REG +#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK // Delete any pending (un)registrations (possible if // e.g. device rebooted before commit). // This call does nothing if there is no pending registrations. @@ -144,7 +146,7 @@ pApaSession->Close(); return err; } -#endif // RD_JAVA_USIF_APP_REG +#endif // !SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK // Return handle to session. Utilize the fact that in Symbian // all pointer addresses are MOD 4 so the last 2 bits are 0 @@ -168,7 +170,7 @@ * @param[in] aBackground * @return 0 if registration succeeded or Symbian error code */ -#ifdef RD_JAVA_USIF_APP_REG +#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_ApplicationRegistrator__1registerApplication (JNIEnv */*aEnv*/, jclass /*aClass*/, jint /*aSessionHandle*/, jint /*aUid*/, jstring /*aGroupName*/, jstring /*aMIDletName*/, jstring /*aTargetDrive*/, jstring /*aIconFileName*/, @@ -176,7 +178,7 @@ { return KErrNone; } -#else +#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_ApplicationRegistrator__1registerApplication (JNIEnv *aEnv, jclass aClass, jint aSessionHandle, jint aUid, jstring aGroupName, jstring aMIDletName, jstring aTargetDrive, jstring aIconFileName, @@ -343,7 +345,6 @@ return err; } -#endif // RD_JAVA_USIF_APP_REG /** @@ -475,6 +476,7 @@ return err; } +#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK /** @@ -484,13 +486,13 @@ * @param[in] aUid The Uid of the application to be unregistered.. * @return 0 if unregistration succeeded or Symbian error code */ -#ifdef RD_JAVA_USIF_APP_REG +#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_ApplicationRegistrator__1unregisterApplication (JNIEnv *, jclass, jint /*aSessionHandle*/, jint /*aUid*/) { return KErrNone; } -#else +#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_ApplicationRegistrator__1unregisterApplication (JNIEnv *, jclass, jint aSessionHandle, jint aUid) { @@ -503,7 +505,7 @@ TRAPD(err, pApaSession->DeregisterNonNativeApplicationL(appUid)); return err; } -#endif // RD_JAVA_USIF_APP_REG +#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK /** @@ -524,7 +526,7 @@ TInt err = KErrNone; -#ifndef RD_JAVA_USIF_APP_REG +#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK if (aSynchronous) { // Make synchronous commit @@ -552,12 +554,12 @@ // Use always this synchronous commit when running in emulator // to make writing autotest cases easier. TRAP(err, pApaSession->CommitNonNativeApplicationsUpdatesL()); -#else +#else // __WINS__ // asynchronous commit TRAP(err, pApaSession->ForceCommitNonNativeApplicationsUpdatesL()); #endif // __WINS__ } -#endif // RD_JAVA_USIF_APP_REG +#endif // !SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK if (KErrNone == err) { @@ -582,9 +584,9 @@ reinterpret_cast(aSessionHandle<<2); TInt err = KErrNone; -#ifndef RD_JAVA_USIF_APP_REG +#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK err = pApaSession->RollbackNonNativeApplicationsUpdates(); -#endif // RD_JAVA_USIF_APP_REG +#endif // !SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK pApaSession->Close(); delete pApaSession; @@ -925,6 +927,7 @@ } +#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK /** * Internal helper method for checking whether this code is executing in * a device that has correctly working version of @@ -969,3 +972,4 @@ return EFalse; } } +#endif // !SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/src.s60/applicationregistrator/sifnotifier.cpp --- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifnotifier.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifnotifier.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -21,21 +21,11 @@ #include "javasymbianoslayer.h" // for CleanupResetAndDestroyPushL #include "logger.h" -#if defined(SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK) && defined(RD_JAVA_USIF_NOTIFY_PROGRESS) +#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK #include #include -// Helper macro for logging a TDesC. -#define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \ - { \ - HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1); \ - TPtr8 tdescPtr(tdescBuf->Des()); \ - tdescPtr.Append(tdescParam); \ - LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\ - CleanupStack::PopAndDestroy(tdescBuf); \ - } - // NAMESPACE DECLARATION using namespace java; using namespace Usif; @@ -306,7 +296,7 @@ return KErrNone; } -#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK && RD_JAVA_USIF_NOTIFY_PROGRESS +#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK /* * Class: com_nokia_mj_impl_installer_applicationregistrator_SifNotifier @@ -390,4 +380,4 @@ return KErrNone; } -#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK && RD_JAVA_USIF_NOTIFY_PROGRESS +#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp --- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -24,6 +24,7 @@ #include #include "com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator.h" +#include "com_nokia_mj_impl_utils_InstallerErrorMessage.h" #include "javacommonutils.h" #include "javasymbianoslayer.h" // for CleanupResetAndDestroyPushL #include "logger.h" @@ -33,19 +34,15 @@ #include #include -#ifdef RD_JAVA_USIF_APP_REG #include -#endif // RD_JAVA_USIF_APP_REG +#include #include // Helper macro for logging a TDesC. #define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \ - { \ - HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1); \ - TPtr8 tdescPtr(tdescBuf->Des()); \ - tdescPtr.Append(tdescParam); \ - LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\ - CleanupStack::PopAndDestroy(tdescBuf); \ + { \ + std::wstring ws((wchar_t*)tdescParam.Ptr(), tdescParam.Length()); \ + LOG1(compIdParam, logLevelParam, msgParam, ws.c_str()); \ } // NAMESPACE DECLARATION @@ -55,21 +52,19 @@ IMPORT_C HBufC* CreateHBufCFromJavaStringLC(JNIEnv* aEnv, jstring aString); // Properties registered to SCR. -_LIT(KMIDletName, "MIDlet-Name"); _LIT(KUid, "Uid"); _LIT(KMediaId, "Media-Id"); _LIT(KMIDletInfoURL, "MIDlet-Info-URL"); _LIT(KMIDletDescription, "MIDlet-Description"); _LIT(KDownloadURL, "Download-URL"); +_LIT(KUpdateURL, "Update-URL"); _LIT(KSettingsPlugin, "SettingsName"); _LIT(KSettingsPluginValue, "javaapplicationsettingsview"); -#ifdef RD_JAVA_USIF_APP_REG // Symbian file path separator. _LIT(KPathSeperator, "\\"); // Postfix for the fake application name generated for AppArc. _LIT(KAppPostfix, ".fakeapp"); -#endif // RD_JAVA_USIF_APP_REG /** * Internal helper method for checking if specified application @@ -179,7 +174,6 @@ * See JNI method __1notifyAppChange. * This method makes calls that may leave (the actual registering). */ -#ifdef RD_JAVA_USIF_NOTIFY_APP_ARC void NotifyAppChangeL(JNIEnv *aEnv, jintArray aAppUids, jint aAppChange) { RApaLsSession apaSession; @@ -212,11 +206,6 @@ CleanupStack::PopAndDestroy(&apaSession); LOG(EJavaInstaller, EInfo, "NotifyAppChangeL completed"); } -#else -void NotifyAppChangeL(JNIEnv *, jintArray, jint) -{ -} -#endif // RD_JAVA_USIF_NOTIFY_APP_ARC /* * Class: com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator @@ -227,12 +216,6 @@ (JNIEnv *aEnv, jclass, jintArray aAppUids, jint aAppChange) { TRAPD(err, NotifyAppChangeL(aEnv, aAppUids, aAppChange)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "notifyAppChange: notifying AppArc failed, error %d", - err); - } return err; } @@ -257,14 +240,21 @@ QUrl openRecentView("appto://20022F35?activityname=AppLibRecentView"); XQApplicationManager applicationManager; XQAiwRequest *request = applicationManager.create(openRecentView); - if (request) { + if (request) + { + LOG(EJavaInstaller, EInfo, "launchAppView: launching AppLib"); bool result = request->send(); - if (!result) { + if (!result) + { int error = request->lastError(); ELOG1(EJavaInstaller, "launchAppView: launching AppLib failed, error %d", error); err = KErrGeneral; } + else + { + LOG(EJavaInstaller, EInfo, "launchAppView: launching AppLib succeeded"); + } delete request; } @@ -354,12 +344,6 @@ TRAPD(err, pScr->RollbackTransactionL()); pScr->Close(); delete pScr; - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "rollbackSession: Rolling back transaction failed, error %d", - err); - } return err; } @@ -389,9 +373,9 @@ HBufC *valueBuf = CreateHBufCFromJavaStringLC(aEnv, aValue); aScr->SetComponentPropertyL(aComponentId, aName, *valueBuf); //LOG_TDESC_L(EJavaInstaller, EInfo, - // "SetComponentPropertyL: name %s", aName); + // "SetComponentPropertyL: name %S", aName); //LOG_TDESC_L(EJavaInstaller, EInfo, - // "SetComponentPropertyL: value %s", valueBuf->Des()); + // "SetComponentPropertyL: value %S", valueBuf->Des()); CleanupStack::PopAndDestroy(valueBuf); } } @@ -402,23 +386,14 @@ */ TComponentId RegisterComponentL( JNIEnv *aEnv, RSoftwareComponentRegistry *aScr, jint aUid, - jstring aSuiteName, jstring aVendor, jstring aVersion, - jstring aName, jstring aGlobalId, + jstring aSuiteName, jstring aVendor, jstring aVersion, jstring aGlobalId, jobjectArray aComponentFiles, TInt64 aComponentSize, TBool aIsRemovable, TBool aIsDrmProtected, TBool aIsOriginVerified, TBool aIsUpdate, jint aMediaId, - jstring aMidletInfoUrl, jstring aMidletDescription, jstring aDownloadUrl) + jstring aMidletInfoUrl, jstring aMidletDescription, + jstring aDownloadUrl, jstring aUpdateUrl) { - HBufC *name = NULL; - if (NULL == aName) - { - // If name is not specified, use suite name. - name = CreateHBufCFromJavaStringLC(aEnv, aSuiteName); - } - else - { - name = CreateHBufCFromJavaStringLC(aEnv, aName); - } + HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aSuiteName); HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor); HBufC *version = CreateHBufCFromJavaStringLC(aEnv, aVersion); HBufC *globalId = CreateHBufCFromJavaStringLC(aEnv, aGlobalId); @@ -445,14 +420,10 @@ aScr->SetComponentPropertyL(componentId, KSettingsPlugin(), KSettingsPluginValue()); //LOG(EJavaInstaller, EInfo, "RegisterComponentL: Settings plugin property set"); - if (NULL != aName) - { - // If name is specified, store suite name as property. - SetComponentPropertyL(aEnv, aScr, componentId, KMIDletName(), aSuiteName); - } SetComponentPropertyL(aEnv, aScr, componentId, KMIDletInfoURL(), aMidletInfoUrl); SetComponentPropertyL(aEnv, aScr, componentId, KMIDletDescription(), aMidletDescription); SetComponentPropertyL(aEnv, aScr, componentId, KDownloadURL(), aDownloadUrl); + SetComponentPropertyL(aEnv, aScr, componentId, KUpdateURL(), aUpdateUrl); CleanupStack::PopAndDestroy(globalId); CleanupStack::PopAndDestroy(version); @@ -478,21 +449,22 @@ */ JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerComponent (JNIEnv *aEnv, jclass, jint aSessionHandle, jint aUid, jstring aSuiteName, - jstring aVendor, jstring aVersion, jstring aName, jstring aGlobalId, + jstring aVendor, jstring aVersion, jstring aGlobalId, jobjectArray aComponentFiles, jlong aComponentSize, jboolean aIsRemovable, jboolean aIsDrmProtected, jboolean aIsOriginVerified, jboolean aIsUpdate, jint aMediaId, jstring aMidletInfoUrl, jstring aMidletDescription, - jstring aDownloadUrl, jobject aComponentId) + jstring aDownloadUrl, jstring aUpdateUrl, jobject aComponentId) { __UHEAP_MARK; RSoftwareComponentRegistry *pScr = reinterpret_cast(aSessionHandle<<2); TComponentId componentId = -1; TRAPD(err, componentId = RegisterComponentL( - aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aName, aGlobalId, + aEnv, pScr, aUid, aSuiteName, aVendor, aVersion, aGlobalId, aComponentFiles, aComponentSize, aIsRemovable, aIsDrmProtected, aIsOriginVerified, aIsUpdate, aMediaId, - aMidletInfoUrl, aMidletDescription, aDownloadUrl)); + aMidletInfoUrl, aMidletDescription, + aDownloadUrl, aUpdateUrl)); __UHEAP_MARKEND; if (KErrNone == err) { @@ -515,9 +487,7 @@ RSoftwareComponentRegistry *pScr = reinterpret_cast(aSessionHandle<<2); TInt err = KErrNone; -#ifdef RD_JAVA_USIF_APP_REG TRAP(err, pScr->DeleteApplicationEntriesL(aComponentId)); -#endif // RD_JAVA_USIF_APP_REG if (KErrNone == err) { TRAP(err, pScr->DeleteComponentL(aComponentId)); @@ -530,7 +500,6 @@ * See JNI method __1registerApplication. * This method makes calls that may leave. */ -#ifdef RD_JAVA_USIF_APP_REG void RegisterApplicationL( JNIEnv *aEnv, RSoftwareComponentRegistry *aScr, jint aComponentId, jint aAppUid, @@ -598,47 +567,36 @@ RPointerArray captionsArray; CleanupResetAndDestroyPushL(captionsArray); TInt langCount = aEnv->GetArrayLength(aLanguages); - TInt captionCount = aEnv->GetArrayLength(aAppNames); - if (langCount == captionCount) + jint* languages = aEnv->GetIntArrayElements(aLanguages, NULL); + for (TInt i = 0; i < langCount; i++) { - jint* languages = aEnv->GetIntArrayElements(aLanguages, NULL); - for (TInt i = 0; i < langCount; i++) - { - TLanguage tmpLanguage = (TLanguage)languages[i]; - HBufC *tmpCaption = - CreateHBufCFromJavaStringLC( - aEnv, (jstring)aEnv->GetObjectArrayElement(aAppNames, i)); - captionsArray.AppendL(tmpCaption); - CleanupStack::Pop(tmpCaption); - //LOG1(EJavaInstaller, EInfo, - // "RegisterApplicationL: language %d", tmpLanguage); - //LOG_TDESC_L(EJavaInstaller, EInfo, - // "RegisterApplicationL: caption %s", tmpCaption->Des()); - CCaptionAndIconInfo *tmpCaptionAndIconInfo = - CCaptionAndIconInfo::NewLC( - /*aCaption=*/ *tmpCaption, - /*aIconFileName=*/ KNullDesC, - /*aNumOfAppIcons=*/ 0); - CLocalizableAppInfo *tmpLocAppInfo = - CLocalizableAppInfo::NewLC( - /*aShortCaption=*/ KNullDesC, - /*aApplicationLanguage=*/ tmpLanguage, - /*aGroupName=*/ KNullDesC, - /*aCaptionAndIconInfo=*/ tmpCaptionAndIconInfo, - /*aViewDataList=*/ viewDataList); - localizableAppInfoList.AppendL(tmpLocAppInfo); - CleanupStack::Pop(tmpLocAppInfo); - CleanupStack::Pop(tmpCaptionAndIconInfo); - } - aEnv->ReleaseIntArrayElements(aLanguages, languages, 0); + TLanguage tmpLanguage = (TLanguage)languages[i]; + HBufC *tmpCaption = + CreateHBufCFromJavaStringLC( + aEnv, (jstring)aEnv->GetObjectArrayElement(aAppNames, i)); + captionsArray.AppendL(tmpCaption); + CleanupStack::Pop(tmpCaption); + //LOG1(EJavaInstaller, EInfo, + // "RegisterApplicationL: language %d", tmpLanguage); + //LOG_TDESC_L(EJavaInstaller, EInfo, + // "RegisterApplicationL: caption %S", tmpCaption->Des()); + CCaptionAndIconInfo *tmpCaptionAndIconInfo = + CCaptionAndIconInfo::NewLC( + /*aCaption=*/ *tmpCaption, + /*aIconFileName=*/ KNullDesC, + /*aNumOfAppIcons=*/ 0); + CLocalizableAppInfo *tmpLocAppInfo = + CLocalizableAppInfo::NewLC( + /*aShortCaption=*/ KNullDesC, + /*aApplicationLanguage=*/ tmpLanguage, + /*aGroupName=*/ KNullDesC, + /*aCaptionAndIconInfo=*/ tmpCaptionAndIconInfo, + /*aViewDataList=*/ viewDataList); + localizableAppInfoList.AppendL(tmpLocAppInfo); + CleanupStack::Pop(tmpLocAppInfo); + CleanupStack::Pop(tmpCaptionAndIconInfo); } - else - { - WLOG2(EJavaInstaller, - "RegisterApplicationL: localisation not made because language " \ - "count does not match to caption count (%d != %d)", - langCount, captionCount); - } + aEnv->ReleaseIntArrayElements(aLanguages, languages, 0); // Create application registration data objects. TApplicationCharacteristics appCharacteristics; @@ -674,13 +632,6 @@ CleanupStack::PopAndDestroy(caption); __UHEAP_MARKEND; } -#else -void RegisterApplicationL( - JNIEnv *, RSoftwareComponentRegistry *, jint, jint, jstring, - jstring, jstring, jstring, jint, jintArray, jobjectArray) -{ -} -#endif // RD_JAVA_USIF_APP_REG /* * Class: com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator @@ -710,19 +661,13 @@ JNIEnv *aEnv, RSoftwareComponentRegistry *aScr, jint aComponentId, jstring aName, jstring aVendor, jint aLanguage) { - if (NULL != aName) - { - HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aName); - aScr->SetComponentNameL(aComponentId, *name, (TLanguage)aLanguage); - CleanupStack::PopAndDestroy(name); - } + HBufC *name = CreateHBufCFromJavaStringLC(aEnv, aName); + aScr->SetComponentNameL(aComponentId, *name, (TLanguage)aLanguage); + CleanupStack::PopAndDestroy(name); - if (NULL != aVendor) - { - HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor); - aScr->SetVendorNameL(aComponentId, *vendor, (TLanguage)aLanguage); - CleanupStack::PopAndDestroy(vendor); - } + HBufC *vendor = CreateHBufCFromJavaStringLC(aEnv, aVendor); + aScr->SetVendorNameL(aComponentId, *vendor, (TLanguage)aLanguage); + CleanupStack::PopAndDestroy(vendor); } /* @@ -827,7 +772,6 @@ * Method: _getComponentIdForApp * Signature: (IILcom/nokia/mj/impl/installer/applicationregistrator/ComponentId;)I */ -#ifdef RD_JAVA_USIF_APP_REG JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getComponentIdForApp (JNIEnv *aEnv, jclass, jint aSessionHandle, jint aAppUid, jobject aComponentId) { @@ -847,13 +791,6 @@ } return err; } -#else -JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getComponentIdForApp -(JNIEnv *, jclass, jint, jint, jobject) -{ - return KErrNone; -} -#endif // RD_JAVA_USIF_APP_REG /** * See JNI method __1getuid. @@ -866,20 +803,8 @@ CleanupClosePushL(*pScr); TInt uid = 0; CPropertyEntry *property = pScr->GetComponentPropertyL(aCid, KUid()); - if (NULL != property) - { - if (property->PropertyType() == CPropertyEntry::EIntProperty) - { - uid = ((CIntPropertyEntry*)property)->IntValue(); - } - else - { - ELOG2(EJavaInstaller, - "GetUidL: Incorrect property type %d for cid %d", - property->PropertyType(), aCid); - } - delete property; - } + uid = ((CIntPropertyEntry*)property)->IntValue(); + delete property; // Close and delete the temporary RSoftwareComponentRegistry. CleanupStack::PopAndDestroy(pScr); delete pScr; // For some reason PopAndDestroy does not delete this. @@ -916,23 +841,16 @@ HBufC *globalId = CreateHBufCFromJavaStringLC(aEnv, aGlobalId); CComponentEntry *componentEntry = aScr->GetComponentL(*globalId, Usif::KSoftwareTypeJava, aLanguage); - if (NULL == componentEntry) - { - //LOG_TDESC_L(EJavaInstaller, EInfo, - // "Component not found for GlobalId %s", globalId->Des()); - CleanupStack::PopAndDestroy(globalId); - return; - } CleanupStack::PopAndDestroy(globalId); // Log component entry. TComponentId componentId = componentEntry->ComponentId(); - LOG_TDESC_L(EJavaInstaller, EInfo, "GlobalId: %s", componentEntry->GlobalId()); + LOG_TDESC_L(EJavaInstaller, EInfo, "GlobalId: %S", componentEntry->GlobalId()); LOG1(EJavaInstaller, EInfo, "ComponentId: %d", componentId); - LOG_TDESC_L(EJavaInstaller, EInfo, "SoftwareType: %s", componentEntry->SoftwareType()); - LOG_TDESC_L(EJavaInstaller, EInfo, "Name: %s", componentEntry->Name()); - LOG_TDESC_L(EJavaInstaller, EInfo, "Vendor: %s", componentEntry->Vendor()); - LOG_TDESC_L(EJavaInstaller, EInfo, "Version: %s", componentEntry->Version()); + LOG_TDESC_L(EJavaInstaller, EInfo, "SoftwareType: %S", componentEntry->SoftwareType()); + LOG_TDESC_L(EJavaInstaller, EInfo, "Name: %S", componentEntry->Name()); + LOG_TDESC_L(EJavaInstaller, EInfo, "Vendor: %S", componentEntry->Vendor()); + LOG_TDESC_L(EJavaInstaller, EInfo, "Version: %S", componentEntry->Version()); LOG1(EJavaInstaller, EInfo, "ComponentSize: %d", componentEntry->ComponentSize()); LOG1(EJavaInstaller, EInfo, "ScomoState: %d", componentEntry->ScomoState()); LOG1(EJavaInstaller, EInfo, "IsDrmProtected: %d", componentEntry->IsDrmProtected()); @@ -960,42 +878,37 @@ switch (propertyEntry->PropertyType()) { case CPropertyEntry::EBinaryProperty: - LOG_TDESC_L(EJavaInstaller, EInfo, "BinaryProperty: %s", + LOG_TDESC_L(EJavaInstaller, EInfo, "BinaryProperty: %S", propertyEntry->PropertyName()); break; case CPropertyEntry::EIntProperty: - LOG_TDESC_L(EJavaInstaller, EInfo, "IntProperty: %s", + LOG_TDESC_L(EJavaInstaller, EInfo, "IntProperty: %S", propertyEntry->PropertyName()); LOG2(EJavaInstaller, EInfo, " = 0x%x (%d)", ((CIntPropertyEntry*)propertyEntry)->IntValue(), ((CIntPropertyEntry*)propertyEntry)->IntValue()); break; case CPropertyEntry::ELocalizedProperty: - LOG_TDESC_L(EJavaInstaller, EInfo, "LocalizedProperty: %s", + LOG_TDESC_L(EJavaInstaller, EInfo, "LocalizedProperty: %S", propertyEntry->PropertyName()); - LOG_TDESC_L(EJavaInstaller, EInfo, " = %s", + LOG_TDESC_L(EJavaInstaller, EInfo, " = %S", ((CLocalizablePropertyEntry*)propertyEntry)->StrValue()); break; } } CleanupStack::PopAndDestroy(&properties); -#ifdef RD_JAVA_USIF_APP_REG // Log uids of applications associated to component. RArray appUids; CleanupClosePushL(appUids); aScr->GetAppUidsForComponentL(componentId, appUids); - if (appUids.Count() == 0) - { - LOG(EJavaInstaller, EInfo, "No component appUids found from SCR"); - } + LOG1(EJavaInstaller, EInfo, "Number of AppUids found: %d", appUids.Count()); for (TInt i = 0; i < appUids.Count(); i++) { LOG2(EJavaInstaller, EInfo, "AppUid [%x] (%d)", appUids[i].iUid, appUids[i].iUid); } CleanupStack::PopAndDestroy(&appUids); -#endif // RD_JAVA_USIF_APP_REG } /** @@ -1047,11 +960,51 @@ JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getUsifMode (JNIEnv *, jclass) { -#ifdef RD_JAVA_USIF_APP_REG return 1; -#else - return 0; -#endif // RD_JAVA_USIF_APP_REG +} + +/* + * Class: com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator + * Method: _getErrorCategory + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getErrorCategory +(JNIEnv *, jclass, jint aErrorId) +{ + int errorCategory = Usif::EUnexpectedError; + switch (aErrorId) + { + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_NO_MEM: + errorCategory = Usif::ELowDiskSpace; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_NO_NET: + errorCategory = Usif::ENetworkUnavailable; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_CORRUPT_PKG: + errorCategory = Usif::ECorruptedPackage; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_COMPAT_ERR: + errorCategory = Usif::EApplicationNotCompatible; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_AUTHORIZATION_ERR: + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_AUTHENTICATION_ERR: + errorCategory = Usif::ESecurityError; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_PUSH_REG_ERR: + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_UNEXPECTED_ERR: + case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_UNEXPECTED_ERR: + case com_nokia_mj_impl_utils_InstallerErrorMessage_OTHER_UNEXPECTED_ERR: + errorCategory = Usif::EUnexpectedError; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_INST_CANCEL: + case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_CANCEL: + errorCategory = Usif::EUserCancelled; + break; + case com_nokia_mj_impl_utils_InstallerErrorMessage_UNINST_NOT_ALLOWED: + errorCategory = Usif::EUninstallationBlocked; + break; + } + return errorCategory; } #else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK @@ -1127,9 +1080,9 @@ * Signature: (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;JZZZZLcom/nokia/mj/impl/installer/applicationregistrator/ComponentId;)I */ JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1registerComponent -(JNIEnv *, jclass, jint, jint, jstring, jstring, jstring, jstring, jstring, - jobjectArray, jlong, jboolean, jboolean, jboolean, jboolean, jint, jstring, - jstring, jstring, jobject) +(JNIEnv *, jclass, jint, jint, jstring, jstring, jstring, jstring, + jobjectArray, jlong, jboolean, jboolean, jboolean, jboolean, jint, + jstring, jstring, jstring, jstring, jobject) { return KErrNone; } @@ -1233,4 +1186,15 @@ return 0; } +/* + * Class: com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator + * Method: _getErrorCategory + * Signature: (I)I + */ +JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_installer_applicationregistrator_SifRegistrator__1getErrorCategory +(JNIEnv *, jclass, jint) +{ + return 0; +} + #endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/build/jiut.bat --- a/javamanager/javainstaller/installer/tsrc/build/jiut.bat Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/build/jiut.bat Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ @rem -@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +@rem Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). @rem All rights reserved. @rem This component and the accompanying materials are made available @rem under the terms of "Eclipse Public License v1.0" @@ -16,8 +16,8 @@ rem Script for running JavaInstaller unit tests from S60 eshell rem Start SifServer before running any tests sifserver -rem javainstaller test -mainclass=com.nokia.mj.impl.installer.downloader.NotificationPosterTest -rem javainstaller test -mainclass=com.nokia.mj.impl.installer.downloader.DownloaderTest +javainstaller test -mainclass=com.nokia.mj.impl.installer.downloader.NotificationPosterTest +javainstaller test -mainclass=com.nokia.mj.impl.installer.downloader.DownloaderTest javainstaller test -mainclass=com.nokia.mj.impl.installer.storagehandler.OtaStatusHandlerTest javainstaller test -mainclass=com.nokia.mj.impl.installer.integrityservice.IntegrityServiceTest javainstaller test -mainclass=com.nokia.mj.impl.installer.jadjarmatcher.JadJarMatcherTest @@ -34,4 +34,7 @@ javainstaller test -mainclass=com.nokia.mj.impl.installer.utils.AttributeReaderTest javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerResultMessageTest javainstaller test -mainclass=com.nokia.mj.impl.installer.GetComponentInfoTest -rem javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerEngineTest +javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerEngineTest -param1=run1 +javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerEngineTest -param1=run2 +javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerEngineTest -param1=run3 +javainstaller test -mainclass=com.nokia.mj.impl.installer.InstallerEngineTest -param1=run4 diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/GetComponentInfoTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/GetComponentInfoTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/GetComponentInfoTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -856,15 +856,11 @@ try { String value = aMsg.getStringValue(aName); - assertTrue("Unexpected value " + aName + "=" + value, false); - } - catch (IllegalArgumentException iae) - { - // Expected exception. + assertTrue("Unexpected value " + aName + "=" + value, value == null); } catch (Throwable t) { - assertTrue("Incorrect exception for string value " + aName + + assertTrue("Unexpected exception for string value " + aName + ": " + t, false); } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/InstallerEngineTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/InstallerEngineTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/InstallerEngineTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -52,6 +52,8 @@ { TestSuite suite = new TestSuite(this.getClass().getName()); + String runIndex = System.getProperty("com.nokia.mj.impl.installer.test.param1"); + if (Platform.isLinux()) { // In S60 this would be interactive test, so disable it there. @@ -64,6 +66,8 @@ })); } + if (runIndex == null || runIndex.equalsIgnoreCase("run1")) + { // Run 1 suite.addTest(new InstallerEngineTest("testMidletMessageOk", new TestMethod() { @@ -104,7 +108,11 @@ ((InstallerEngineTest)tc).test3AppsOk(); } })); + } + if (runIndex == null || runIndex.equalsIgnoreCase("run2")) + { + // Run 2 suite.addTest(new InstallerEngineTest("testDownloadJadOk", new TestMethod() { public void run(TestCase tc) @@ -113,7 +121,6 @@ } })); - // Run 2 suite.addTest(new InstallerEngineTest("testDownloadJarOk", new TestMethod() { public void run(TestCase tc) @@ -217,7 +224,11 @@ ((InstallerEngineTest)tc).testNoJavaBinRoot(); } })); + } + if (runIndex == null || runIndex.equalsIgnoreCase("run3")) + { + // Run 3 suite.addTest(new InstallerEngineTest("testBlockUninstall", new TestMethod() { public void run(TestCase tc) @@ -241,8 +252,11 @@ ((InstallerEngineTest)tc).testApplicationInfo(); } })); + } - // Run 3 + if (runIndex == null || runIndex.equalsIgnoreCase("run4")) + { + // Run 4 suite.addTest(new InstallerEngineTest("testInstallOptions", new TestMethod() { public void run(TestCase tc) @@ -258,6 +272,7 @@ ((InstallerEngineTest)tc).testInstallAuthAndBig(); } })); + } com.nokia.mj.impl.utils.OmjTestRunner.run(suite); } @@ -313,6 +328,15 @@ } /** + */ + public String getTestServer() + { + String server = System.getProperty("com.nokia.mj.impl.installer.test.server"); + assertNotNull("-server=

: argument required.", server); + return server; + } + + /** * Makes installation, update and uninstallation for given application. * Does the following steps: * install with cancellation and check that app is not installed, @@ -413,12 +437,12 @@ assertNoIsDir(); // List. - Log.logOut("InstallerEngineTest.doInstallUninstall: list -v"); - result = Installer.mainWithResult(new String[] { "list", "-v" }); - assertResult(result, Installer.ERR_NONE); - Log.logOut("InstallerEngineTest.doInstallUninstall: list -otastatus"); - result = Installer.mainWithResult(new String[] { "list", "-otastatus" }); - assertResult(result, Installer.ERR_NONE); + //Log.logOut("InstallerEngineTest.doInstallUninstall: list -v"); + //result = Installer.mainWithResult(new String[] { "list", "-v" }); + //assertResult(result, Installer.ERR_NONE); + //Log.logOut("InstallerEngineTest.doInstallUninstall: list -otastatus"); + //result = Installer.mainWithResult(new String[] { "list", "-otastatus" }); + //assertResult(result, Installer.ERR_NONE); // Update with cancellation. Log.logOut("InstallerEngineTest.doInstallUninstall: update with cancellation " + aFilename); @@ -573,38 +597,38 @@ public void testDownloadJadOk() { Log.logOut("InstallerEngineTest.testDownloadJadOk begins"); - SuiteInfo suite = new SuiteInfo("JBenchmark2", "Kishonti LP"); - doInstallUninstall(suite, "http://195.134.231.83:7070/omjserver/resources/omj/T00000900_JBenchmark2_gcf.jsp", true, iDefaultOptions); + SuiteInfo suite = new SuiteInfo("HelloWorld", "Nokia"); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/HelloWorld_ota.jad", true, iDefaultOptions); } public void testDownloadJarOk() { Log.logOut("InstallerEngineTest.testDownloadJarOk begins"); - SuiteInfo suite = new SuiteInfo("JBenchmark2", "Kishonti LP"); - doInstallUninstall(suite, "http://195.134.231.83:7070/omjserver/resources/omj/JBenchmark2.jar", false, iDefaultOptions); + SuiteInfo suite = new SuiteInfo("HelloWorld", "Nokia"); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/HelloWorld.jar", false, iDefaultOptions); } public void testDownloadJadHttpRedirectOk() { Log.logOut("InstallerEngineTest.testDownloadJadHttpRedirectOk begins"); - SuiteInfo suite = new SuiteInfo("JBenchmark2", "Kishonti LP"); - doInstallUninstall(suite, "http://195.134.231.83:7070/RedirectServlet/redirect?name=JBenchmark2.jad&count=5", true, iDefaultOptions); + SuiteInfo suite = new SuiteInfo("HelloWorld_redirect", "Nokia"); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/redirect?name=HelloWorld_redirect.jad&count=5", true, iDefaultOptions); } public void testDownloadJarHttpRedirectOk() { Log.logOut("InstallerEngineTest.testDownloadJarHttpRedirectOk begins"); - SuiteInfo suite = new SuiteInfo("JBenchmark2", "Kishonti LP"); - doInstallUninstall(suite, "http://195.134.231.83:7070/RedirectServlet/redirect?name=JBenchmark2.jar", false, iDefaultOptions); + SuiteInfo suite = new SuiteInfo("HelloWorld_redirect", "Nokia"); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/redirect?name=HelloWorld_redirect.jar", false, iDefaultOptions); } public void testDownloadJadHttpAuthOk() { Log.logOut("InstallerEngineTest.testDownloadJadHttpAuthOk begins"); - SuiteInfo suite = new SuiteInfo("DS_Snow_http_auth", "DS_Effects"); + SuiteInfo suite = new SuiteInfo("HelloWorld_http_auth", "Nokia"); iDefaultOptions.addElement("-username=guest"); iDefaultOptions.addElement("-password=guest"); - doInstallUninstall(suite, "http://195.134.231.83:7070/httpauth/DS_Snow_http_auth.jad", true, iDefaultOptions); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/httpauth/HelloWorld_http_auth.jad", true, iDefaultOptions); } public void testDownloadJadHttpAuthNok() @@ -614,7 +638,7 @@ { "install", "-silent", - "-jad=http://195.134.231.83:7070/httpauth/DS_Snow_http_auth.jad", + "-jad=http://" + getTestServer() + "/installertest/httpauth/HelloWorld_http_auth.jad", }; int result = Installer.mainWithResult(args); // Check result code. @@ -637,7 +661,7 @@ { "install", "-silent", - "-jad=http://195.134.231.83:7070/RedirectServlet/redirect?name=JBenchmark2.jad&count=6", + "-jad=http://" + getTestServer() + "/installertest/redirect?name=HelloWorld_redirect.jad&count=6", }; int result = Installer.mainWithResult(args); // Check result code. @@ -680,7 +704,7 @@ { "install", "-silent", - "-jad=http://195.134.231.83:7070/omjserver/resources/omj/T00000900_JBenchmark2_8mb_gcf.jsp", + "-jad=http://" + getTestServer() + "/installertest/HelloWorld_8mb.jad", }; Log.log("InstallerEngineTest.testDownloadJadCancel: installation starts"); int result = Installer.mainWithResult(args); @@ -1109,10 +1133,10 @@ { Log.logOut("InstallerEngineTest.testInstallAuthAndBig begins"); // Do first installation with doInstallUninstall helper - SuiteInfo suite = new SuiteInfo("DS_Snow_http_auth", "DS_Effects"); + SuiteInfo suite = new SuiteInfo("HelloWorld_http_auth", "Nokia"); iDefaultOptions.addElement("-username=guest"); iDefaultOptions.addElement("-password=guest"); - doInstallUninstall(suite, "http://195.134.231.83:7070/httpauth/DS_Snow_http_auth.jad", true, iDefaultOptions); + doInstallUninstall(suite, "http://" + getTestServer() + "/installertest/httpauth/HelloWorld_http_auth.jad", true, iDefaultOptions); // Then start installation which downloads a large file. Log.log("InstallerEngineTest.testInstallAuthAndBig begin to install big app"); @@ -1120,7 +1144,7 @@ { "install", "-silent", - "-jad=http://195.134.231.83:7070/omjserver/resources/omj/T00000900_JBenchmark2_8mb_gcf.jsp", + "-jad=http://" + getTestServer() + "/installertest/HelloWorld_8mb.jad", }; int result = Installer.mainWithResult(args); // Check result code. diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/applicationregistrator/SifRegistratorTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/applicationregistrator/SifRegistratorTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/applicationregistrator/SifRegistratorTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -203,11 +203,23 @@ { SuiteInfo si = getTestSuite(); ComponentId cid = getComponentId(si.getGlobalId()); + // Check for USIF Phase 2 registration. Uid uid = sifReg.getUid(cid.getId()); assertTrue("Suite uid " + si.getUid() + " does not match" + " to uid " + uid + " from SCR", si.getUid().equals(uid)); + + Uid appUid = PlatformUid.createUid("[e0001001]"); + sifReg.startSession(false); + ComponentId cidForApp = sifReg.getComponentId(appUid); + sifReg.closeSession(); + assertTrue("Null component id from SCR for application uid " + + appUid, cidForApp != null); + assertTrue("Component id " + cid + " does not match" + + " to uid " + cidForApp + " from SCR", + cid.getId() == cidForApp.getId()); + // Check for USIF Phase 1 registration. //Vector apps = si.getApplications(); //for (int i = 0; i < apps.size(); i++) diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/customisationproperties/CustomisationPropertiesTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/customisationproperties/CustomisationPropertiesTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/customisationproperties/CustomisationPropertiesTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -212,18 +212,18 @@ String drive = (String)value.firstElement(); assertTrue("PossibleInstallationDrives is null", (drive != null)); - assertTrue("First PossibleInstallationDrive is not C:", drive.equals("C:")); + assertTrue("First PossibleInstallationDrive is not C:, it is " + drive, drive.equals("C:")); // second possible drive drive = (String)value.get(1); assertTrue("PossibleInstallationDrives is null", (drive != null)); - assertTrue("Second PossibleInstallationDrive is not E:", drive.equals("E:")); + assertTrue("Second PossibleInstallationDrive is not E:, it is " + drive, drive.equals("E:")); value = cust.getIntegerProperty(CustomisationProperties.PossibleInstallationDrives); assertTrue("PossibleInstallationDrives value is null", (value != null)); assertTrue("PossibleInstallationDrives value does not contain any integers", (value.size() > 0)); Integer idrive = (Integer)value.get(1); - assertTrue("Second PossibleInstallationDrive is E:", idrive.intValue() == 4); + assertTrue("Second PossibleInstallationDrive is not E:, it is " + idrive, idrive.intValue() == 4); } public void testTypesOfPossibleInstallationDrives() diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/DownloaderTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/DownloaderTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/DownloaderTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -37,8 +37,8 @@ */ public class DownloaderTest extends TestCase implements InstallerMain { - private static final String TEST_URL = "http://195.134.231.83:7070/java-server/resources/DS_Snow.jar"; - private static final int TEST_URL_SIZE = 10241; // test data file size + private static final String TEST_URL = "/installertest/HelloWorld.jar"; + private static final int TEST_URL_SIZE = 1511; // test data file size // Begin j2meunit test framework setup @@ -172,10 +172,15 @@ public void testBasicDownload(Downloader downloader, TestDlListener listener) { + String server = System.getProperty( + "com.nokia.mj.impl.installer.test.server"); + assertNotNull("-server=
: argument required.", server); + try { String filename = "test.dat"; - DownloadInfo dlInfo = new DownloadInfo(TEST_URL, filename); + DownloadInfo dlInfo = new DownloadInfo("http://" + server + + TEST_URL, filename); downloader.start(dlInfo); downloader.waitForCompletion(); assertTrue("Result DlInfo is null", diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/NotificationPosterTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/NotificationPosterTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/downloader/NotificationPosterTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -36,7 +36,7 @@ */ public class NotificationPosterTest extends TestCase implements InstallerMain { - private static final String TEST_URL = "http://195.134.231.83:7070/java-server/getresult.jsp?phone=CE0CBA106ADB77A9298A143E5136CD2B&tID=900_success"; + private static final String TEST_URL = "/installertest/notify?tID=900_success"; // Begin j2meunit test framework setup @@ -361,13 +361,18 @@ testNotifyPendingFailureLimit(poster); } - private static OtaStatusNotification createNotification(int aIndex) + private OtaStatusNotification createNotification(int aIndex) { + String server = System.getProperty( + "com.nokia.mj.impl.installer.test.server"); + assertNotNull("-server=
: argument required.", server); + OtaStatusNotification notification = new OtaStatusNotification (PlatformUid.createUid(Integer.toString(aIndex)), System.currentTimeMillis(), OtaStatusNotification.TYPE_INSTALL, OtaStatusCode.SUCCESS, - TEST_URL + aIndex, System.currentTimeMillis(), 0); + "http://" + server + TEST_URL + aIndex, System.currentTimeMillis(), + 0); return notification; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/utils/SysUtilTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/utils/SysUtilTest.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/utils/SysUtilTest.java Wed Jun 23 18:07:10 2010 +0300 @@ -167,6 +167,41 @@ } })); + if (Platform.isS60()) + { + suite.addTest(new SysUtilTest("testGetProcessState", new TestMethod() + { + public void run(TestCase tc) + { + ((SysUtilTest)tc).testGetProcessState(); + } + })); + + suite.addTest(new SysUtilTest("testDriveGetters", new TestMethod() + { + public void run(TestCase tc) + { + ((SysUtilTest)tc).testDriveGetters(); + } + })); + + suite.addTest(new SysUtilTest("testGetScreenSize", new TestMethod() + { + public void run(TestCase tc) + { + ((SysUtilTest)tc).testGetScreenSize(); + } + })); + + suite.addTest(new SysUtilTest("testIsoToLang", new TestMethod() + { + public void run(TestCase tc) + { + ((SysUtilTest)tc).testIsoToLang(); + } + })); + } + com.nokia.mj.impl.utils.OmjTestRunner.run(suite); } @@ -198,11 +233,11 @@ { try { - // Test PS keys defined in ScreensaverInternalPSKeys.h - Uid uid = PlatformUid.createUid("0x101F8771"); // KPSUidScreenSaver - int key = 0x00000001; // KScreenSaverPreviewMode + // Test PS keys defined in hwrmpowerstatesdkpskey.h + Uid uid = PlatformUid.createUid("0x10205041"); // KPSUidHWRMPowerState + int key = 0x00000003; // KHWRMChargingStatus int value = SysUtil.getPropertyValue(uid, key); - assertTrue("KScreenSaverPreviewMode(!=0): " + value, value == 0); + assertTrue("KHWRMChargingStatus(!=0): " + value, value == 0); } catch (InstallerException ie) { @@ -215,8 +250,8 @@ { try { - // Test PS keys defined in ScreensaverInternalPSKeys.h - Uid uid = PlatformUid.createUid("0x101F8771"); // KPSUidScreenSaver + // Test PS keys defined in hwrmpowerstatesdkpskey.h + Uid uid = PlatformUid.createUid("0x10205041"); // KPSUidHWRMPowerState int key = 0x00000010; // Undefined key int value = SysUtil.getPropertyValue(uid, key); assertTrue("Getting undefined property value did not fail", false); @@ -573,4 +608,51 @@ // OK, expected exception. } } + + public void testGetProcessState() + { + int state = SysUtil.getProcessState(PlatformUid.createUid("[102033e6]")); + assertTrue("installer process state is " + state + + ", not " + SysUtil.PROC_STATE_ALIVE, + SysUtil.PROC_STATE_ALIVE == state); + state = SysUtil.getProcessState(PlatformUid.createUid("[e0001001]")); + assertTrue("nonexisting process state is " + state + ", not 0", + 0 == state); + } + + public void testDriveGetters() + { + int defMem = SysUtil.getDefaultPhoneMemory(); + int defMassStorage = SysUtil.getDefaultMassStorage(); + Log.log("testDriveGetter: defaultPhoneMemory = " + defMem); + Log.log("testDriveGetter: defaultMassStorage = " + defMassStorage); + } + + public void testGetScreenSize() + { + int screenWidth = SysUtil.getScreenWidth(); + int screenHeight = SysUtil.getScreenHeight(); + Log.log("testGetScreenSize: screenWidth = " + screenWidth); + Log.log("testGetScreenSize: screenHeight = " + screenHeight); + assertTrue("screenWidth <= 0", screenWidth > 0); + assertTrue("screenHeight <= 0", screenHeight > 0); + } + + public void testIsoToLang() + { + testIsoToLang("unknown", -1); // unknown locale is indicated with -1 + testIsoToLang("fi", 9); // ELangFinnish, Finnish + testIsoToLang("fi_FI", 9); // ELangFinnish, Finnish + testIsoToLang("sv", 6); // ELangSwedish, Swedish + testIsoToLang("sv_FI", 85); // ELangFinlandSwedish, Finland Swedish + testIsoToLang("en", 1); // ELangEnglish, UK English + testIsoToLang("en_US", 10); // ELangAmerican, American + testIsoToLang("en_AU", 20); // ELangAustralian, Australian English + } + + private void testIsoToLang(String aLocale, int aLang) + { + assertTrue("SysUtil.isoToLang " + aLocale + " != " + aLang, + SysUtil.isoToLang(aLocale) == aLang); + } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000019.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000019.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000046.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000046.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000058.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000058.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000070.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000070.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000090.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000090.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000150.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000150.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000172.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000172.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000175.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000175.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000182.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000182.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000189.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000189.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000250.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000250.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000305.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000305.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000390.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000390.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000500.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000500.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000582.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000582.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000618.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000618.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/00000703.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000703.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/3DSpaceShooter.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/3DSpaceShooter.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,18 @@ + +MIDlet-1: 3DSpaceShooter, /icon.png, Sapce3D + + +MIDlet-Jar-Size: 240229 + + +MIDlet-Jar-URL: 3DSpaceShooter.jar +MIDlet-Name: 3DSpaceShooter +MIDlet-Vendor: Innovative Ideas From Outer Space Ltd. + + + + +  +MIDlet-Version: 1.0.4 +Nokia-MIDlet-Original-Display-Size: 176,208 +Nokia-MIDlet-On-Screen-Keypad: navigationkeys \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/800_x_N97_64GB_fr_speed_v5_32_01.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/800_x_N97_64GB_fr_speed_v5_32_01.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,99 @@ +RepositoryContentType: text/plain +UserAgent: NokiaN95/J2ME-IMPS +ShowStatusTextInCL: 0 +SpaceBetweenFriendsNameAndHisIcon: 3 +ShowDomain: 0 +MIDlet-Icon: /img/App.png +NormalPollRate: 12000 +TCPCIREnabled: 1 +Images: http://download.ko.mysite.fr/koi/j2me/enc/1111/ +SpecialKeys: -12 +Host: koi.ko.mysite.fr +TCPPingRate: 1560000 +EnableCommunitySelector: 1 +BackgoundImgPos: 0 +ScrollBarWidth: 5 +MIDlet-Vendor: Vodafone +BillingURL: http://koi.ko.mysite.fr/koi/sq.dll/awo_buy +UseTemplate: 1 +MaxFriendsNumber: 150 +StopTCPCIR: 1 +MIDlet-Version: 4.5.27 +SelectCommand: 1 +KeepAlive: 1500000 +SMSCIREnabled: 1 +MultiTrans: 5 +DefaultDomain: gmaeam1.com +EnableBackgroundImage: 0 +MicroEdition-Profile: MIDP-2.0 +TermsAndConditions: 1 +SeamlessLogin: 0 +GlobalMsgLength: 600 +MIDlet-Push-1: sms://:3716, ui.Main, * +RegisterConnection: 1 +ViewType: 0 +HTTPCIREnabled: 1 +IsTabFontBold: 1 +AboutNaming: PrerryLake_h_N97_fr_speed_v4_5_27 +InitMessage: 1 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-Jar-URL: 800€_x_N97_64GB_fr_speed_v5_32_01.jar +AnimationRate: 300 +Multitask: 0 +EnableSemitransparentHighlight: 0 +CheckContentType: 1 +MaxMsgNumber: 30 +Port: 80 +LoginURL: http:/koi.ko.mysite.fr/koi/sq.dll/dsw_daas +UseKeepAlive: 0 +MIDlet-Install-Notify: http://download.ko.mysite.fr/InstallNotify?c= +SelfUpgrade: 1 +MIDlet-Data-Size: 500 +AnimationEnabled: 1 +TitleUpdateRate: 7000 +EnableRenameFriend: 0 +SystemMessageUserTimeout: 25000 +Help: http://download.ko.mysite.fr/koi/j2me/enc/help/fr/ +UseDeviceTimeForIncomingMsg: 1 +TCPCIRReconnectCount: 3 +DefaultLanguage: de +MIDlet-1: Messenger,/img/App.png,ui.Main +MsgListHeightTuner: 8 +MIDlet-Name: Messenger +FontSize: 0 +WVExtension: /web/wv.dll/msn_imgw +RefreshChoiceOnStateChange: 0 +MIDlet-Permissions: javax.microedition.io.Connector.http,javax.microedition.io.Connector.https,javax.microedition.io.Connector.socket,javax.microedition.io.Connector.sms,javax.wireless.messaging.sms.receive,javax.microedition.io.PushRegistry,javax.microedition.media.control.VideoControl.getSnapshot,javax.microedition.io.Connector.file.read,javax.microedition.io.Connector.file.write +MaxConversations: 20 +SubscribePresence: 1 +PersistencyEnabled: 1 +RepositoryAlertMessage: Error loading application data. Please try again later. +GlobalMaxCharCount: 5000 +EnableEmoticonsSelector: 1 +IdleMode: 1 +SpacerHeight: 5 +TCPCIRReconnectRate: 3000 +MIDlet-Jar-Size: 502719 +BackgroundEnabled: 1 +IsCaseInsensitive: 1 +AlertToneMsg: http://download.ko.mysite.fr/koi/j2me/enc/dingdong.mp3 +NormalNoPollTransition: 1800000 +AlertToneContact: http://download.ko.mysite.fr/koi/j2me/enc/alalal.mp3 +NoPollStateEnabled: 0 +Device: 3 +SupportCustomUTF8: 0 +MIDlet-Info-URL: www.koikoikoi.com +MsgListWidthTuner: 15 +CommandsType: 1;4;2;4;3;8;5;4;6;2;8;2;9;7;10;4;11;8;23;4;24;3;37;2;68;2;69;7;76;4;80;2;86;6;87;1 +IdleModeTimeOut: 900000 +ShowAboutLogo: 1 +TopMarginFriendName: 2 +ContentLanguage: fr +FastPollRate: 7000 +NokiaTimeOut: 100 +FastNormalTransition: 20000 +EnableShortProfile: 1 +RepositoryVersion: 1 +MIDlet-Jar-RSA-SHA1: QhSjP7F1q3TGmmNC45cUGclVWB537GtcMLpplIJGe+TyDwJ1Mx5VssNHpp3Qs3C1WHLycvcfOkDT0CscStI0lV/5Xy33z192qEHIT5lkGVz1Rd1nfBHqrIBqv77H7dHW1tdU6RiVajx8jrYYXz+Yh/7U2kskmGXd0bLSYq2cuZZgkiT9YDOLa8OJ1Xn2U4/AYzonM1tjGQvkOniCvwqv0DXDW3GAial5w7hzB4txSopBgWiCO7sEPgkssJIvWQ2dsuLnwb3nU8gsUYWuRqidSI5Dm8mSOEA0zjRoREjTJjkqRZXX3r27rtp+omYh+VNCkXDneiNcaihWpkW5TgMhVg== +MIDlet-Certificate-1-1: MIIEOTCCAyGgAwIBAgILAQAAAAABFIeLkAEwCQYJKoZIhvcNAQEFBQAwUDELNAkGA1UEBhMCVVsxFzAVBgNVBAoIDlZvZGFmb25lIEdyb3VwMSgwJgYDVQQDEx9Wb2RhZm9uZSAoVHJ1c3RlZCBBcHBsaWNhdGlvbnMpMB4XDTA3MDgyMTA4MzA0NFoXDTEyMDgyMTA4MzA0NFowTzELMAkGA1UEBhMCU0cxFDASBgNVBAoTC05ldXN0YXIgTkdNMSowKAYDVQQDEyFNb2JpbGUgSW5zdGFudCBNZXNzYWdpbmcgMjEuMDguMDcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCFfdEngntebK38dtsdODIkNzMiYsngpTwgnDPqV23m/OtsCX1+1E3+ns9v7EPQVqeTuPYUbUiQRXAYE2NpnUjzNd4bKIXBlk18YpXftMxKv4XRvtVa273O/nbKigtR9IuJx2Pz/x/zWbDpc4ZitRQaRTHy0oA1W+htVI1BBzO8cFC3kf4DTNEXjeYHGF5U7deGp/KuN8qfN7QPJ5gtYyUcwYtrV9imc7P2idLFfYGejm7/s/R3qh9o3bIvqLSHUQbwTQNz7bA7QzpBYkSgaQqzif8+ZYRZuLApjbhpoM5XRFUwQCu6KXx7ZPMKoCKVjof20LWlilUiBrVIXMIwHq0tAgMBAAGjggETMIIBDzAOBgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwUgYDVR0fBEswSTBHoEWgQ4ZBaHR0cDovL2NybC52b2RhZm9uZS1wa2kuY29tL2NybC52L1ZvZGFmb25lVHJ1c3RlZEFwcGxpY2F0aW9ucy5jcmwwOAYIKwYBBQUHAQEELDAqMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC52b2RhZm9uZS1wa2kuY29tMBoGA1UdIAQTMBEwDwYNKoY6AAHv9U8BAQMBAzAfBgNVHSMEGDAWgBQ7En6Wl4emCf8AlmWvsw/TeSSR9DAdBgNVHQ4EFgQUadzkP7g69+F/NQGoOfvOG1PC6YowDQYJKoZIhvcNAQEFBQADggEBAK2Z4qE4EFlXYL3ELnsbV/Ri6igPgdXgSZalaw8IKorw19TX7ERpL2tCiyDqisEJygNLW2iok9Nn3DUsmJTr0CoSZFGZc88hkJ9mlDTCQnNa9Hx9XQhp3Ig0uo1Eoei+12kF9j1kVlQJl6QkOPrbdmBbGpv7NFTM29zkPN/4wt3uUvoLZ/ZlbB4NjufZ6gVL77Bt2+UNwKLM4wF39Dy3zTD6qcJPuitGGSss0X4SYX6AzTtNRM+CtTPkFby10pHmmr4ClSfGtOZnXmbGizOIUh/lgOgv/nG9Q+dRDUGDTkhnDwMs1b0reQ0rGE1jFayCJ6Rmn/03FIN5N1SKfgkSeBE= +MIDlet-Certificate-1-2: MIIECjCCAvKgAwIBAgIFAwEAAzANBgkqhkiG9w0BAQUF8DBLMQswCQYDVQQGEwJVSzEXNBUGA1UEChMOVm9kYWXvbmUgR3JvdXAxIzAhBgNVBAMTGlZvZGFmb25lIChPcGVyYXRvciBEb21haW4pMB4XDTA1MDYxMzExMDAwMFoXDTIxMTIzMTEyMDAwMFowUDELMAkGA1UEBhMCVUsxFzAVBgNVBAoTDlZvZGFmb25lIEdyb3VwMSgwJgYDVQQDEx9Wb2RhZm9uZSAoVHJ1c3RlZCBBcHBsaWNhdGlvbnMpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvfev7oXJy+WKdRjmc2i+Y8vMI3ey/LggGtOhGhY7w1oH1puYttgAjwPP7Ff2qObaJyfFnX81aCopQWeymGzpJtcIv/Z5sZRayBw9ceNIqI7WrwS3Ht//4uqUIH0p6VtPuRukNAnJewbFGgImowwZI4sizQ5Idqxx14lUoOTw8EaE0ygwXSJefS1w/5vuShyujd22F3wHpQnjo/lf05y14x43Uf+PpfFoVzvKm8q/n4VMtzMwi04vkgPjkflT2yay8WWtEpxU6rw8j32EWM/A2+kd4YbTE50I9/XFmIitHajaPVB3piwsChSt4d89UyIP/a+xGkPMultznEdH23SptQIDAQABo4HwMIHtMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQ7En6Wl4emCf8AlmWvsw/TeSSR9DAZBgNVHSAEEjAQMA4GDCqGOgAB7/VPAQEDATBNBgNVHR8ERjBEMEKgQKA+hjxodHRwOi8vY3JsLnZvZGFmb25lLXBraS5jb20vY3JsLnYvVm9kYWZvbmVPcGVyYXRvckRvbWFpbi5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwMGCCsGAQUFBwMJMB8GA1UdIwQYMBaAFEjdPe/gPJzfErEw/ZHhwen7l9wIMA0GCSqGSIb3DQEBBQUAA4IBAQCaehJEHzna6onjE8bCCsi7A5NxcQ2Cx85PYs67yxQZ0wMQq1khzxsOJPB7H4SoXlceNMvIxpgPFm/ZcLNdeyjoYOQccH+aS6GRSerYX3COdbtWA4Gjq/sB6ghoUZ74+VbXD3t9Rhrnt7fOMe1llWOcf/eoMmvOrJOrBPrC3ZxZEwyHAgyqEJDn2Z8KXTMUr41jge3KyhxRehflRcYhdXzwmE+8LOHaN7xLEZauOuafyBEVpjVN5UaaOm/v8mTn0TymV2j9R7D8Nycbz1gVeMrOhNW2GODxjvu5IoEHQh/myul28EecKGx05Xprcodr0a8Q6LKJg+ihJMxMrS3YEylp diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,10 @@ +MIDlet-Jar-URL: https://uljava.gjmptw.de/midlets/harmonized/Local%20Connectivity%20(BT%20and%20IrDa)/BCExchanger/BCExchanger.jar +MIDlet-Install-Notify: https://uljava.gjmptw.de/Index/Index.php/BCExchanger.jad?installed=BCExchanger_harmony +MIDlet-1: BCExchangerMIDlet, /icon.png, bcexchanger.BCExchangerMIDlet +MIDlet-Description: Demonstrates the usage of the JSR-82 Bluetooth OBEX API by exchanging business cards between devices. +MIDlet-Jar-Size: 29967 +MIDlet-Name: BCExchanger +MIDlet-Vendor: Forum Nokia +MIDlet-Version: 1.0.0 +MicroEdition-Configuration: CLDC-1.1 +MicroEdition-Profile: MIDP-2.0 diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.zip Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.zip has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/DevCertTestMIDlet.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/DevCertTestMIDlet.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,14 @@ +MIDlet-1: DevCertTestMIDlet, , com.nokia.midp.test.devcerttests.DevCertTestMIDlet +MIDlet-Jar-Size: 3152 +MIDlet-Jar-URL: DevCertTestMIDlet.jar +MIDlet-Name: DevCertTestMIDlet +MIDlet-Permissions: javax.microedition.pim.ContactList.read,javax.microedition.pim.ContactList.write,javax.microedition.io.Connector.http +MIDlet-Permissions-Opt: javax.microedition.io.Connector.https +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +httpUrl: http://www.google.com +httpsUrl: https://www.google.com +MIDlet-Certificate-1-1: MIJs7jCCbFegAwIBAgIJAPNUaScSr5cxMA0GCSqGSIb3DQEBBQUAMHMxCzAJBgNVBAYTAmZpMRIwEAYDVQQIEwlQaXJrYW5tYWExEDAOBgNVBAcTB1RhbXBlcmUxDjAMBgNVBAoTBU5va2lhMQ0wCwYDVQQLEwRKYXZhMR8wHQYDVQQDDBZKUF9EZXZpY2VfTWFudWZhY3R1cmVyMB4XDTA5MDkxNjExNDk1M1oXDTEwMDkxNjExNDk1M1owNTELMAkGA1UEBhMCRkkxEDAOBgNVBAcTB1RhbXBlcmUxFDASBgNVBAMTC0phdmFEZXZDZXJ0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXZ/GCV/N8foAkCQJfoiwGlwHO+f1lV9zloo0r0zosGtVqItLXKrvXEKylpOVWBygRVVrkl30Y1Cxess4aS1UmZ1rcvwL0jcvwlkZGacJazjtHE4UQuYJz9WRbYOaQxR2SVS/wU2Ptu/mr0ZgqFhgaJ1FzCuBdNaWzx2mGV9az/QIDAQABo4JqxjCCasIwKQYDVR0gBCIwIDAOBgwrBgEEAV4BMQEBAwQwDgYMKwYBBAEqAm4CAgICMA4GA1UdDwEB/wQEAwIHgDAXBgNVHSUEEDAOBgwrBgEEAV4BMQECAgMwgmpqBgwrBgEEAV4BMQECAgcBAf8EgmpVMIJqUQwPMDA0NDAxMDE1MDc2OTU5DA8xNDM3MjU3ODc0MDc3MzAMDzAwNDQwMTEwNDIzNjk4NQwPODUxODA4MzAxNzgwMzcwDA84MzYwMTU2MDMxNDY4MjgMDzM2ODYxNzM4NzAzNzM4MAwPNzY2NjI2NTYyMDM3MzI4DA84NjgwMjIwNjUxODczMTgMDzQ3NTEzNTQ0MzEwMzQwNAwPNDY0NTI4NzEzODY1MDY1DA84NjEyMTU3NzIwMDczODUMDzQwNzQ3NTAzMTI1NjYxOAwPNzQxMDY1MDUxNDE1ODI2DA81MzI1MTM4NTc4MzM1NTMMDzA4ODQ1NDM0Mjg4ODg2NQwPMTY1MTEwMDA3ODE1NTE2DA83NzYwMTU4NDUzNDgyODgMDzIyNTUzNTY4NjA4ODYwNQwPNDUzNTUyMTc2Mzc2MjcyDA8zNTAwNTM1MjQxMzMyMDYMDzg4NzU3ODg4NzM2MTM0NwwPNzgxODA1MjY0ODE0MzQyDA8yNTM4ODg2NzUzNzUxMjgMDzMyODczMzE2Nzc1MDg1OAwPMjA2Mzg1NDYyMTM4MjUyDA82NTA1NTIwNDcyMjIzNDMMDzA2MjQ4NzM2NTAxMzMyNgwPMzM4NjAxODY2NTcwMzcwDA8yNzcwMTgyMTEyODYzMzYMDzA3MDE2MzQ1MzQ3MzExMwwPMDM3MDI1ODcxMzE3ODc3DA81MjMyNDMzODgyMDA0NDIMDzg1NTcwODIzMzAyNjQzMQwPNTQzNDU4MzEzMzc1ODI1DA80MDgwMzUwNTQxODIxNzcMDzcxNjYyMjEzMzMzMjEzNAwPMTAzNzY1NTEwNDcwODQ3DA80NjAxNzgwODEwMTQ0NjYMDzMxMDYxMTQzNzY2NDUyMAwPMDQwMjM1MTMxMDE3NjI0DA8xNTIyMzUzNjA1MDg1NDQMDzc1NjU3Mjc2NDI1ODE3NQwPNjcwNjcyMTIyMzAzMjU3DA83NzUyNjU0NzQ3MjgwMjMMDzQyMTgwMzg1MjE0MjE2NQwPODE0MTcxODU0NjQ4MjcyDA80Mzg2MTIwNDczMDY2MzUMDzY2ODA4ODQ1MjM3NDAxNAwPMjMwMDgyNjEzNDYzNTM2DA8yODA4MTYyMjMyMTExMTYMDzc4MjM3MzE2NzgwMTgwMwwPMDYyNjU3NTgwODMxODMxDA82NzI0Njg2NDc0NTUwNTYMDzgyNTUyODAzMjY0NzQ0MwwPNDU2MzAxNTA4NzEwMDMzDA8xODgzMTg4MjAzNjI0NTcMDzQ4NDM3NjExMDUzNDQyMgwPMjMyMzU0MTQzNDE1NTU4DA84NDc2NzAxNzc3MDI0MTAMDzc4NDIzMTY3MDE3NDY1NQwPNDc2Nzg0NDI1MDE1MTMyDA81MTEzMTU3ODA1NjcxNDMMDzA1MDUxNjgyNDg1Mzc3NQwPNDUxNTA1NjA0MTE3NjQ3DA8wNzc3MzU0MTc0NzcwNzcMDzQ4ODQ3NzYzNTE3MTU1NgwPMTQ4NjM0MzM1MDgzNTgzDA8yMjMxMzE0NzI1Mzc0NzcMDzY1ODQ4ODQ2NzI0MjA1NQwPMzYwMTU2NDYwODU1ODM1DA8zNDc1MTczMjM2NDMwNDYMDzMwNTE3MDA0NDQyNjQ4MQwPMDg4NzMzMjAyMzUzNzQwDA8zNDY2NzY1MjY4MDA1MDMMDzUwODQ1MDEwNjM3MzY1NgwPMjAxNzM2NzEyMDUwNDg3DA80MDMwMDg1ODMwMzE1NTIMDzM4NTUyMDQ2ODA2ODAxMgwPNzIwNDc3Njc4NjM2NDg3DA84MTM4MTc1NDQzNTY3MzAMDzgyNzIyMzc3MzY1NTEzNQwPNjQ3MDEwNTUyMDA3ODY2DA8xODAzMjExMTg4ODY2NzIMDzc0MjEzMzg4MzgxNDIzNQwPNTc1MzU1NzQ4NTMwODgwDA8zMTAzNzAxMTY1NDcyNDMMDzQ0NDQ4NTU1Mzg0NTE3NQwPNzQzNzc1NzA4MjM2NDM3DA8yMzc1MjQxNTg3MTUxMTMMDzI3NzQwNTUzMDE2MzAyMAwPMTgyMzA3MTU2Mzg3MzM2DA8xMDMwMzA2NjIyNjA0NzAMDzE0MTYyMTU3MDI1MzI0NAwPNDY0MDcyMjc2NjQ1ODM3DA80NTUxNzc3NDczMDQ1NTcMDzI2NzYwODgyNjY3ODY0NgwPMzQwNjM1NjMyNTc3NDg0DA8wMTUxNzcwMzI2NjM4MDUMDzgwNzI2ODcwNzY3NjQwNQwPMjA1NzQ2NTE1NTQzMDIzDA82NDU3MzA4MTUxNjcwMzUMDzAzNDEzNjM0Mjc3NTAxNwwPNTc4ODAyODAyNDYzMzYyDA84NDA1MDUzMjE4MjM2MjcMDzA3NzEyNzYxMTEyNjUyNgwPMDE4NzU0NDgwMDM3NDM4DA8wMjEyNTgwNzAzNDE1NzgMDzg2MzAyNjcxNDcwMDYyNAwPMDU2NjQ0MjQ2NjA1MTEzDA8xMjIyMDMxNTcwNTg2MjEMDzgxMDY3NjQ2MjU0MDU1MwwPMTUxMzM1NzUyNTI3NDc0DA8wNjA3MzQyODg0MTgzNTQMDzEyNzYxMjI2NjE0MjUxMAwPODY2MTI0NDU3NzE2NDQxDA8zNDAwNjI0ODY3ODE2NjYMDzA1NzcyMjMwNTE4MzQ4MgwPODMzMzU2NTI3NDI3ODc2DA8zMTA2MjI0NjI0MTM0MzQMDzQ3NDYwODY1MzEyNjA2NAwPMDQzMzIyNzg1MDgxNzM2DA8zNzY0MTAzNzcyODQ2NTIMDzYxNDg3MzQxNDY4MTA3NQwPNjM2NDc1NTgzMDgxNTE4DA8zNzIzODAxMjgzNDAwMzUMDzcxMzEwNzAyNzIwNDcwMQwPNTU2MDA4MTY1MDg4MDMzDA83MjQ4MzQ4MTgyNjY2NTcMDzA2ODA2MTMwNDcyMzg0NgwPMTMzMzY1MjMwODQ1MDUyDA81NDQ2MDI1NjQzNzU0MjgMDzQ4MTM0ODQ3ODAwMjEwMAwPNDExMzA0MTUzMDA0NjcyDA83NTYyMzUxNzc3MDEzNTAMDzIwMTI3NTg3ODMzMTc0NwwPNTg2MTQ4NTYyMzM2NjgzDA84MDQ3Mzc1MjM0NTgzMjYMDzMyODYxNjI3NzQwMjAwOAwPNjU1ODMwNTExNTEwNTA4DA8wNDgwMDc1Nzg2NzIyODUMDzM1ODM2MTM4NDEyMDcwNQwPNTg1MzA2NzU1MjUwMDI3DA81MDU3NjQ3MjQ2MTExNjcMDzQ2NjU2MTc0NTMxMDU3NAwPNDU1MTUwMjI4NjQ3MTc3DA8yNDM1NDY0NTY1MDI4MzAMDzUyMDI4NjUzNDE0MTQ0MQwPMTUzNDA4MDc0NzAzMDE0DA81NjUwNjE1MTEwMjM2MTAMDzQ4MDExNDMwNzIwMTc1MwwPMjQ1Mjc2ODc3MTg3ODY2DA80MDY3MDgxMjM1NzExODQMDzQxMzU2MTA4NTY2MTAxNgwPNDIyMjI2NjEwMDcyMzgwDA8yMTEwNDE3MjU1MjM2MzYMDzU3ODM1NDE2MjQ3MzIzMwwPMDU4MTExMDQ3NzQxMjEwDA82NDUyMTAyMDAxNzI2NDgMDzA0MzEzMTc1MDE0NDA4MgwPODc3NTIxODg2NjE3NzU4DA80NjYxNTgyNTA2MTUzNjgMDzg3NTY4MzA4NjE2MjExMQwPMDQ4NjQzNjM1NzEwODUwDA8wNzg1NzY2NTYzODE4MzUMDzE4NTQzNTU4NTE3MjU3NAwPNDMxNjYxMjc4NTUwNDU0DA8yNTgwNzQ4NjU3MjM1MzAMDzM0MDc4ODYzODA2NzQ2NQwPNjE4NDIzNjMwMTM0NzczDA8yNjgwODQyNzQ0NzAzMjAMDzI4MDgxNDMxMjA2NzM1NQwPNDEyNjUxMTA4MzAxMTYzDA80NTE4ODIxODc4NTcyMjAMDzQ3NTYwODc2ODE0NzY2NgwPMDU3MDAzMjcxMTUyODI3DA8yNjAwMDYzODg2MjExNjYMDzM1MDg3NDQxMDUyMTMwOAwPODM1MDAwMzUzNTcxMTQwDA81MTU3MjAzMDYxMjg3NTYMDzA1ODgzNzY0ODQwNDg1NQwPNDA4NDg2NjQ0NDMzNDM2DA82NTg0ODM0MTIxMjM2NzcMDzU4ODA0NzA1NTM0MDYzOAwPNTA3NDMzMTMwMDY3MDY1DA8yNjQwNjcxNzc3NDc4NTgMDzQ4NTEwMTM4MTY1NjE1MAwPMzEwNzYzMzY2MjIxNDU1DA83NzIzMjMyMTEyMTQyMjQMDzU0ODg4MTU0Mzg4MTY0NwwPNDc2NTYyNTE3NzIzMTE2DA8wMTAwMTQ0NjEyODE4MDYMDzUwNzM1NzA3MDM4MDUyNwwPNTg3NDQ3ODIyMTExNTA2DA81MzY2NTExMjI2ODc0NzIMDzIxNDc0NTAwNjU0NTcyOAwPMjg2MTY2NzUxMTA2MzA4DA8xNjg3NzA1NDQ1MTIyMTcMDzM1MjU3MzcwMzQxMzU0MwwPMzAxNDEwODc4NDI2MjE1DA8zNDY2ODQxODUwNjgxMjMMDzUzMzA2NTMyMzEzNjI0NQwPNjA1MDE3ODUyNzU1NDM1DA80NzcxMzg3NTc0MjM2NjgMDzY2NzA4Mjc1NDUwNTUyMgwPODczMjQ1MTM4MTAwNDAwDA81NTc1MDI0ODczMjQ1NzEMDzI1MTEwNDAzMTcyNjI1NAwPNjI4MTA0NTEyMTU0MDAxDA80NzQzMDM1MTExMjI1NDUMDzQ4NDY4ODc1MDg2MTI4MgwPNTMxNjY0ODAxMjA3NjY0DA80NDc3NjA0MDUzMjM1NDcMDzgxODA2NjQ0MjgyMzQxMQwPNDg0NzQ1NzUzNTcxNTAyDA83MDM1NDE4Mjg3NjUwNzgMDzA0NDAwODczMTEyNTY0NAwPNTM0NTAzNjE4NTA3MDczDA83MDQ0NzE4NTE4MzQ1NDYMDzM0ODEwNjMzMTUyMDg0MgwPNzY0MDY3NTYyMjM1MjA0DA80NzQwMzEyNTI1ODE3NDUMDzU2NzQzNzQ4MzY2MjQ0NgwPNTIyNzM0NTg4MTY2NjE4DA8zNDU1NTQ0NzA0ODgwMjIMDzAzMjMzMjAyMzYyNjQzMAwPNjUwMDg0NDc1NTU1ODYyDA82ODE0ODA1NTM3NzM0NzcMDzM0NzMyMDI1NjE3NDg3MgwPMTA0NTIxNjY2Njg2NjI4DA81Njc2NDg1MTM3MjMzNzMMDzU4NzUxNzg4NDA2MzAzNAwPMjI1NTI3MDAxMTYyNDU1DA8zNTc2MjQzNDc1Nzc0NTAMDzY3NjQyNjQzODc2NzI0MAwPNDg2ODM0MTAwODA4NzU3DA8xNTg1NjY0NDM3MDA2ODUMDzY0NDY2ODE4MDU0NzY0MwwPMDQyMzU3MTQ3MTgyNjY0DA80NTA3NTQzODQyMzA2MzEMDzA1ODA3Mjc4MjIyODI4MwwPNTY1NjE1NjEwMzQxNzYwDA84NzIzNzIyODc0ODIzNTIMDzYzMDE2NzY0ODE1Njg4NgwPNjEwNDAzMzg2MDUzMTY4DA8zODA1ODQyMTE0ODEwNjUMDzExMzg0NTM0NDY3MjI1NgwPMjY2NDY1MzEzNTUzMjg4DA80MDExNTc2NzMyODAyMDcMDzc2NzI3NTQ2NjM0MzA3MgwPNDczMjY2NDY3MTU3NjA3DA8wMjY2NTQ2MzA1MzEyMjUMDzYxMzU2NjgxNjExMzg0MgwPNzE1MTE2MjE2NDI1NzcxDA8wMjY4MzcyMTQ2MDMyMzMMDzE2NjM2MzY1MzE3ODUwNAwPNjgyNDAwNjExMzQ0NTM3DA80MDE3NDM0MzMwNDI1NDYMDzY0MDc0MDMyNDg4MDgzNQwPNDU2MTQ0ODM1MTg2MTYyDA8xODI0NTYyNjI0NTcwMjQMDzQwMzEzNjc4ODY1NzI0NgwPNzUyMjE3NjI3NTQxMTIxDA8zMTcyMTQxNTgyMTYxMzgMDzM2MDI3ODA3MjA3MTA0OAwPMDU4MjA4MDgzMjg4NzIwDA80MTgxNDgwMDUyNzc2NTgMDzM0MTg1ODQyMjgwODYzNwwPNTU1MzIxMDI3MjMyNTE3DA83MjYyNjY3NTQ2Mjc2MzUMDzQwODc2NTg0NDExMzQ1NAwPMzAzMzc2ODIyODg0MTc4DA80MDE3MDI0NTMyMDYyNzQMDzIxMTcwNDc2NTE3MTIzNAwPMTg0NzEwMDY3NzgyMjAzDA8yNjIwMDAyMDQ1MjI1NjQMDzg4NDI0Nzg4NDI3Mzg4MAwPMTIzODAyMTI0Njc1NDA4DA8zMTczMDYyMjY4ODIwODQMDzQxMzc2NzQ4MzEyMjQ2MwwPMjc3MDU0NDI0MDQ3MzgyDA8xMTYwODA4NzU2NjE0NzEMDzE2MzY3MTIzNzg4NzIyMwwPODc0ODI1NjYxMTczNTU2DA80MjU1MTg0NjA2NTI2NzIMDzA1NzMyNzU0NTgxNTE2MAwPNDIwMzU0MzA3MzI2MzQwDA83NjQzMjYxMTc0MTQxMzcMDzQxNDEzODIyNzQ1MTc3OAwPNDE0MjE4MjQ3MzI4NzEzDA81NTAwNzE0MjIyMTE1MTAMDzE2MjcxODUwNzQ1NjYyMQwPNzE0NDc3MjI4MjAzMzE0DA80NzgwODAwMDAwNTg0MzcMDzI1NjQ4MTY1ODQzMzQ0MAwPNjYyODU0MzU2NjY4MzQ1DA8yNDE2ODY2NzY1NzI1NzgMDzUwMzIxNDE1MDU1MTU1MgwPNjAwNDU0MTI1MDU4MTc3DA83MjYxNjQ2NzY3MjMyMTgMDzUyNjMxMDMwMjMyNDA4MgwPNjgwNTEwMzE1NzI3ODgyDA80MjY4NzgzODE1MTcxMjgMDzQ3MzQ3NzI2MzM1NjAyNwwPNDgxODE4MDg3NTMxNjE4DA82NTIzMTY3NjY1MDg1MzIMDzM0NjgxNTI1NTcxNjc4MgwPNTcyNTY1ODQ4ODM2MzA2DA81MzMzNjQ3MzAyNjM3MzcMDzAwNTI1MjQ2ODEyODA2MAwPNzYxODIzNjM0NjA2NTQ0DA8yMDY4NDA1MzQ1MDE2MjUMDzgyNjg3MDExMTA4NzQ1MAwPNzcwNjUzNDE4MjE3NDU4DA83NjM0MzY4MTI4NDg3MjgMDzA2MjYzMjQyNjM1NTI0MAwPNTUzMDY1MzQ2NTU0MjQ2DA8zMDE3NjQyMjQ3MzA2MDEMDzM3MTUxMTM2MjQxMjA3MwwPMDgyMDg3MTc0MDA2NjA4DA8zMTg1NzQwNjA4NjA1MTgMDzQ4MjQ1MjIxMTUwNzIxMQwPNTQwNTAwNTQ2NzcyMDI2DA8xNjczNTAwMDQ2NzAzNDYMDzQzNTExMzIyMjE2NTExNgwPNjY3ODMzMTY0MTM0MTYwDA81MTI2MzYxNDEyNjIyNjcMDzcxMjA2ODA3NzUyMzMzNQwPNjY4MDMxMDc1MzU1NzU2DA82NTM3ODgxMzI1MDUxNjgMDzg2NjIyNTgxNzI3ODMzNgwPMjg2NTg3NDc2NjM0NzMzDA80NTQ2MTQ0MzU2MzY2NjIMDzQxMzU3ODEzMjMyNzgyMAwPNjMxMzQ1MzA2Nzc1NTQ0DA81ODA0NDczNDUzMjgzNTgMDzY1NTI1NTU4NzYxMzQ4NwwPMjUwMjAzODUyMTM3Mjg0DA81Mjg3NDYzNjg1MjAwNDgMDzIxNjE1NzQzODM0ODA3NgwPMjEzMzAzMTE1MzEwNzM0DA8zNzUwNzg0NDgwNDcwODAMDzM3Nzc1MTE3MzExMDc3NQwPODE0MDAyNjIxMjIyNDUyDA81NzY0MzM2NjAyNjMyNTAMDzIzNDAyMTI0MDExODA1NgwPODg3NjE1Nzg3NzEyMTAzDA84NTUzNTYxODA3NDE2NjgMDzc3NjA4NzgwNzgyMjE3MwwPNjU3MTg1NjcxMjIwMTI4DA8wNTU2NDAyNTQ4NzU3MTEMDzcyMDMyMDE0MjI3NjU1MAwPNjE2NTgzMDcxODIyNTc0DA81MTEwNDQ0MzEwNjg0MTAMDzgzMDg1NTM2MTAwMTQ1NwwPODAwMjA0NDAzMzAxMDI2DA8wNDM0NjIxNjg3NTE3NzUMDzI2MjYyMTc4NzgxNjQzMgwPNTc1NTU1MTQ2MTIwODY4DA8zNDEzODI1MTYwMjI0MzUMDzE2NTgzNzE2NDM2ODAyMgwPNzY3Njg0NzI2MTE3NDA1DA8yNjM1MzU4NDExNTEzNzAMDzAyMzAyMDE3NjM4MTI2NwwPNTg1MTI2MjgyMzgwMDQ3DA81MzgxNDI2MTgyMDM2MzQMDzczNDM1NjA1NTEwODIwNwwPNjA2NTA3MzE1MTE2NjE3DA8xMTgyMjA2MzYxNjEzODUMDzQ2NjY4MjE1NzIzNjg4MQwPNDUwNTc3MzI0Nzc4NzQ3DA80NjE1MzAwNTIxMDAzMjUMDzM1MTc4NjY1MzQ2NTYyOAwPNjIwMDE0NDM4NzMzNTM0DA8yODQ1MjA2NTE4NjM3MjAMDzUwODA1NTQwMzM3MDEzMgwPMzIzMjI2NzM3NzY4MTY1DA8wMTQyNDcyMTM2NDA0ODEMDzI0MDYxNzgzMDc4MjU3NQwPNDc2Mzc2NTY4NTQ4MDcwDA8yMzY4MzI4ODMwMTYzMDcMDzIzODYzODI3NjIzNzA2OAwPNTA3NzYxNDc1NDQ4MzUwDA83MjgxMDAwMzAzNzY3NzgMDzU2NjMxNDU3MDU1NTA2MAwPODY4NzExNjIzMTc0MzMwDA84MTQxMDgxNzU2NTI3MjMMDzIyMTc0MjQzMjY1NzM2MQwPNjA3NjgxMzYxNTgxMDU1DA83MzMwMDE0MDE2NzQ4MzgMDzY0MDQwMDUwMzA2MjI1NwwPMTI3NDI0MjQ0NTc4MzMwDA8xMDcwNjM1MTc3NzIwMjUMDzQ1MDUyODE3MzU1Mzg4NwwPNzE1NTExNDYyMDE2NzczDA8zNjQ4NzcxMzAzODExMjgMDzEzNDAwMTQ3MDI0MTE2MAwPODAzNjQ2NTE1NTIzMTUwDA8wODcxNDI3ODc1MTA3NjAMDzM0MjI3ODcxMjM3MjEwNgwPMzc0MDA3ODMwNjcxNzU2DA83NDY1MzE1MDAzMDU4NjcMDzEyNjM2MjQ4MzUzMzA1OAwPMjMzMjIwMDI3MTE1NTE1DA80MTQzNjMwMzc3NzA1NjYMDzM1NTE1MjEyNDAwMDg2MgwPODQwNzczNDU1Nzg1MTgwDA80NTc2NDQyMDExMjIzNDYMDzEzMzg3ODMyMjgyODU4MQwPNzM0NDQ3NTMyNTAzNTIwDA8zMTAwNDQyODYyNzczMTEMDzI4MTY3MDY2MTIyMzE0OAwPNTAyMDI2ODE1NzE4NDI3DA8wMzA3Njg1ODE1ODI2NDEMDzI4MjQ4MDYxNDU1NzMxMwwPNDU3Njc0NTU0MzI0NDA1DA84MTc0MTc2ODI4NTcwODEMDzMwNDE0ODI1MjEyMDY2NQwPNTEzMzExNDMzNzA1Njc2DA83NzUzNDI0Njg0MTI3ODEMDzM0NzgyNTczODc3NzA0OAwPNzIzODQ3NDYzMDQwNTI4DA8zNTI0MzA3MDc2MDYxNTIMDzc3ODgzNDU4MTI0NzQxMQwPMzQwNjIyMjMxMDg1MjM4DA83MzQyODIwMzU1NjA4MjEMDzgxMzgxMjY2NTI4NzQwMQwPMjI4MDI4NTExODUwMzI1DA8yNzgwNzE0ODE4MDIzODAMDzM4ODg0NTU0NTcwMzIzMgwPMDgwMDE0MzUxNDM1NTEzDA8wNzQzODUxNjcwNTUwMDcMDzQ2MzQxODM0MTUyNzAwMgwPODAzMDcyMTM2NDI0ODg3DA80NjAxMjMwNjgzNTIyMTcMDzMxNzAwNjU1MDE0Njg1MwwPMTcwMzIyODAxMTY2NTgwDA83MTM2NDU4MjI2Mjg4ODMMDzA3NTA0ODc2NzgyNjg3OAwPMDQ2MjA2ODYyNDY4NTgzDA8wMjc3ODM2MjgzMzgyNDYMDzIzMTY3MjA0NzAzNjc1NQwPMTUzMzIxMTQ1MzAwODQwDA83MTIyNTMyODQyNTExNTMMDzYzMDMyNjcyMjU3MzQzNwwPNzY0MTIwMjEyNTc2NzUwDA82MzUyMjczNzYxMTU2ODYMDzI3NDc2NDYzMzc3MTcyMAwPMzM0ODIzMjM0NTY2MjE4DA8yODYwNTg1NDAyNzM4NjQMDzA3NTg2MDMxODE3ODIyNgwPMTE3MzY3MzIzNTg0NjgwDA80MjI2ODg0MDc2NTE0MjQMDzQyODgxNjA2MjE0MzI0NQwPNjEyMDY3NTU1NzUxMjMzDA8yMTcyODM3MDg4NDY4NDYMDzc4MzgwMDI2NzcyMzE0MwwPNTc3NzY1MTI2MDI3ODU2DA8wODAwMDM3ODIzMjA3MDcMDzM3MzM3NTA1MzY1MDQzMAwPMzg1MjI0MDY0MDU3MzUzDA84ODQ4MjMxMzg0MDA4NzAMDzA3NzQ0NjYwNDEwMjMwNgwPNzM4MjgwMjM1NzYxNjg4DA83NzM2ODAxODU1NjIzMzMMDzU3MDY1MjYwMDQyNTMzMQwPMjQyNjQxNTcwMjg3MTMwDA8wNTc0NjczNDc3NDc1NjUMDzczODIzNjU3MzgwNDU0MAwPMDU1MzIxMzE3ODgzNDgzDA8zNTEzMjc1MDMwMzQwNDYMDzA2MjMxNTQ4NjY3NzI1NwwPMDc0MDEwNDMwMTI2MTY0DA83MDQ4MDE1NDI1ODI1NDQMDzE2Mjc3MjQyNTg2MTgzOAwPNTY4ODgyNzI1NzY3MTcxDA8wNzgyNTQ1NDE2NDM2NDYMDzY3MzE3NzI3ODM4MTgyNwwPNzEwNzU0Mzg0Mzg3MDg1DA8yMzEyNjg1NjA0NzIzNTYMDzIzMDYyNjgzODQxNTg2OAwPODcxMjIyMzI4MDY4NTQwDA80NTg3ODUxMTIyMzY4MjAMDzQxMjQyMzYyNTE1MDYyMAwPMjUwODUzNzExMjAzNDQ3DA82MDExNTcwMzg3NzUzMjcMDzM2NTQ2NDM3MjE2Nzg4NAwPMTU2MjAyMDgyMjQyMTQzDA84MjYwMDQwMzc3NTcyODAMDzIxNTQ1MDIzMjA4NjE1NAwPNTY3MDE4NTI3MDc2NjI1DA8yNDUyMjc0NjUxNjYzMDQMDzc4ODI4MTAyMDQ0MDQ1MQwPNDc2ODQ3MDI4ODg0MTYwDA83NzE0NDY1MjY1NTA3MzUMDzc1NDIyMzg1NTYzNjAxNwwPMTQ0NjE1NTA4MzQwMjA4DA83MjcxNjUwODMwNzgwMDUMDzEyNjQ1MzIyMjMwNjY3NwwPMjU3NTExNzY3ODQwMjgwDA8yNTg4MTA3MzYzNTAwNjAMDzE1Mjg1MjM0ODcxNjU0MgwPMzE0NDE1NzcyODc1NzA0DA83NjE3NzU3MDUwNjg4MzgMDzA0MzU2NzE4NjI0ODI4OAwPMDMzNTc0MjI3NzE3Mzc0DA81MDIyMDY4NjM1NTY0MzcMDzgxODM3ODMzNzE2NDQzMwwPMzExNDI4ODQyNTQxNDEwDA83ODYxNzQyNTE0MDc1NDMMDzM1NDg2ODQxNTAwNzQyNAwPNzg4Njg0Njc4Nzc4NTc0DA8wODc3MjAyMDUyMjA2NzQMDzIzNzQyMTcxODA2NTU2NAwPNjQzNjIwNzU1Mjc0MzM1DA81MTg0MDMyMDY0NzIxNzgMDzA1NzIzMzQ3MjUwNDQyNQwPNTgxMzI2NDY1MjY3NjYxDA8yNzc3ODM1NzM1MDc3NTUMDzg4NTAwMjA0ODc3MDAxMAwPNDczNzIzNjcxMjgzMzE3DA8yMTQzMTgxMjcwODE4MTAMDzA4NDU2ODg2NTAwMjcxMAwPNDc2NjE1MTg4NjAzNjMxDA83MDcwMDcxNzQ1ODM3MTAMDzYxMTUyNjcwMTEzNzEwMwwPMjEyMTczNzM1MDI3ODA2DA8wODgyMzgzMzEzMjA1NDUMDzU1NjEzODEyMjYyNjU4NgwPNTU4NDQyNzQ1ODI4NDI4DA8wNDQwMDIxNDUzMTAwNDMMDzU4MjQ1NzM0Mzc3MTY0NgwPMDg3NTM3NTY4NTMyNTQ4DA81MDI0NjU3NjA4ODg0NDcMDzE1MTUwMzYyMjE2NjM4NwwPMzQ0NzQxMjI2NDU3MTIyDA8yODIzMDU3ODI0NjY2MzQMDzYyNDMwNjE1NTAxMTU2MAwPMzA2NTE2NDUyNjI3NzUyDA81NDMxODc4MTg0Mjc1NDgMDzQwMTE4NzA2NTgxMDcxMgwPODc4MTgzNjE3NDUyMDE3DA8xNTI0NzgzMjY3NjUyNTUMDzEwNDIzNjgyMDY3NzEyMgwPMjM2MDM4MDczNTU3ODU1DA84NjAwMDI2NTczODQ1MzcMDzcxMjQ2NjAzMzAxMzI0NgwPNjU4NDcyMzM0NzgyNDUyDA82Mzg3ODY0MjMzMzg1NDIMDzUyODA4NzA0NjYxNzQxNAwPMjM4NjMwMTM2NzY1ODczDA80NjM1NTc0MTM2Nzg1MjUMDzAxMTQzODU3NzQxMTUxMgwPODYwNzQwMTg0Mjg0MDc1DA8xNzQyNTgzMDEwMzU0MDMMDzc0NzYyNjI3NDg2MzA2MwwPMTcxMDY2NTMwNTg1NjEzDA8zMDYyNDU0MTcwMzUyNDUMDzQ2ODUwMTA2MjEwNzUxNwwPODQ3Mzc1NjUxNzcwNTMxDA8zMDM2NjM3MzY4MzAxNjYMDzc3MDQ2MjY0MTMwNzg4MAwPMDcxNTUxNTMxNDYzMzIwDA81NzAxNTgyMjMyODcwMzgMDzE4NzA4NDUyNTUyNjM4MAwPMjY2NTE1MzAxODgzNTc2DA8yNDc2ODY4NjcxMzYzNjEMDzcxODM2ODAyMTIzNjQwMAwPMDIyNzUzMjcwMDAyODg1DA82MDMxMTgxNjA2NzY2ODQMDzY1Nzg2Njc1NDU2NTM2OAwPMDgyMjE1MjQyMDcyMzEwDA8wMDYwMDM1NDQyMDA1MzcMDzMwNzU2NTUxMzEzNzYxMAwPNTY0MjIyMTA3MjI1MzE1DA82ODQyODIxODg0NTYzNzIMDzQ4NzY1MDYwMTQ4NDMwMAwPNTU4MDYyMjgwMzE4NzQ1DA82NDM0ODMzNjE0NjI0MzIMDzY4MTY4MDExODUwNzg2NAwPMjU3MDMwMjQxNTA0ODY4DA82ODg0MDQ2NDU0NDEyMjMMDzMyMjQ4ODIyMzI1MTA1NAwPMTQ1MzcxODMyMDUxMDQ0DA8yNjQ2MDYzMDMzNjAxMDEMDzg4NDgyMzQ0ODM0ODgwNAwPMTQxMzgzODEyNDU0NTIwDA8wNjA2MTU3NzUwNTM2MjUMDzc3NDQwNjAzMzQ1NjI0NgwPMTQ4MzM3MzE2MTQwNTA0DA81MDU0MzI3NDU3MzY1ODMMDzQwMjEzNzU1MTI0NzY2MgwPNzQwNjI1NDg4NDcwNjYxDA80NDIxMjc2MjQ4ODc2MTgMDzA4NDgxNDgxODMyMTg1MgwPMTg1MDg2MjEwNTY3ODE2DA8xMjUwMjQxMzUwNTcxNzEMDzQwMzg2ODQ2NzMyNjQ0NgwPMjY1MTgyNzQyNjM1ODU4DA80ODczODUxNDczNjA4NTcMDzIwMzU2MjQzMTQ3NzQ1NgwPMzA3NzA2NTg3MTY2ODU0DA80NzQ3NTI3MzE3MzEzNjUMDzQzNjQwNzgxNTgwNTI1OAwPNjYxNjI0MTQ2NDI4NDMxDA80MTI2MjE0NjU2MTMyNTgMDzQ1ODc1NTI2NDY1MDM3MAwPMjcxODczNDE3MTU0NTMwDA83NjM0NTMyMzE2NTA0MTMMDzU3ODYxMzM2MjM1NDI3NQwPMDcyMjc1MzUyNjcyMDU0DA83NzM0NjE1MTQ1NzQyMzQMDzI3MDQ4Njg2MjIyNzI3MAwPNjE3NTYxNDA2NzcyNjQ0DA83NDc3MDc3NjIyMzg1NjEMDzA3NDYwMzA4NzE0NzA0MgwPODU1Njg1NDA1MjQ0NTQ0DA80NTM0NzMyODM1NDU3NzgMDzQ4NTU2Mzc0NTIxNTI0MAwPODEyMDg4MTM2NTY3NDA3DA8xMTU2NzEyMDgzODcwNzUMDzgxMTI0MjE0ODczMDA1MAwPODIyNzU4MTEwNjYxMzUwDA8xNzcxNjU0NTIxNzIyMDEMDzczODM3MjIxMDYyNDc1NgwPMzUzNzY4NjE1NzY3NDM0DA84NTg4NzMwMzU0MTA4NTYMDzcxMDYwMTc1MzczNzMwNAwPMTU4ODAzMTA2NjU4MTIzDA84NTc3MDY4MzQwNzc3MjAMDzI2ODI2Nzc1NjQ2Mzg2NgwPODgxMzUyNjE0NzU4MDgwDA80ODc2MzQwNDE3NTg3NDgMDzQ2MzAxODU2MjQwNzEwNAwPNzg2NTA1ODQ3MzY0NDM2DA8wNzg4MTE3MzEwNTUwNTEMDzQwMjYxNjQyNDAzNzg3NQwPMjMzMDMxNTMzMDE3NDA2DA8xNzMxNTE4NjYzNzc2ODIMDzE1MTc0MzE1MzExNjc0NwwPNTIyNjE2NzM1MzMwMTMzDA82NTQ3MjAwODc2NjA1MTgMDzQ3NTgwMDM1MTIyNzMwNwwPNzExMjYxNTgwMjAxMjQzDA80ODYwODMwMjAyNjQ4NjAMDzE1NjIyMTAzNTIxMDc3NAwPNjEyNjMyNTgxMDQyMDY2DA84MDU2NjM3MzUwMTQ0MDMMDzc2MTQ1MzcwODU0MzI2NgwPMTI4NjE1NDg1NzI0NDIxDA81MjExNDY3NDU1Mzg2NTMMDzAwODM1MzAxNzE2NDgwNgwPNTgxNDQyMTIzMTAyODU0DA8zNjIxMTYxNTcxNjAyMTAMDzMwMzg3MzUxNTAzODc0NQwPNDU4NDU3NzQ2MjIxNjQ0DA81NTIyMjA0NDAxMDY1MzcMDzgxNDI3NDcwNTI4MDMzNAwPMDQ4NjA1NjI2NjU3MDg3DA82NjMwNTUyNzc1MTg0NDIMDzg3NTAxNDA3MTc2NzYwMwwPMzI3ODUyMTgyNzc0NTQ1DA8wNDQ4NzU0MjM2NTE4MTcMDzI4MTExNTcxNDMwNjAzNQwPNDgxNTY1MzU3NTE3NjgwDA8wMTEyMzE3NDI3NTQzMDgMDzIyMTg0MjY4MTUzNTEwMAwPMDYyNzQyMDMzODgwNzUzDA81ODUxMzAzMDUwNzEwNjcMDzM1MTI4Nzg1MDA1NjcwNQwPMjcyODEwODQ1MzI4MDYyDA8zNTg1MzQ4MTAzMzgyMjMMDzQzMDM1NjY2MjAyMzIxNAwPMzY1NjM1NDY4ODM1NjM2DA81MDA0MzY3NjMwMzQ2NTQMDzAyMTE0MDg0MDQwMDYwOAwPMzEzMTMzNjg0ODM1NDgyDA81MTA0NjI3MTgyMjU3NzQMDzc3NTE2MjMzMTY4MTIwNwwPNjQ2MTU0NDQzNzU1ODM4DA8wODUzNzAzMTAzODI0NTUMDzU3Nzc2ODM1NDc2ODg3NwwPMjQ4ODQyNzIzNDU2Mjc0DA8yMDU4NjY2NjE4ODA2MjYMDzE3NTI4ODQxMzU3MjE2MAwPNTA0MzQyMTU1NjIyMzcxDA81ODY2MDE4NzY4MjY1NjYMDzEzMjUxODYyNTgxMTUxMwwPNDIzMDc4NDIzNjcyMzUyDA8xMTQ0NzczMTI1ODY2NDEMDzU2NDU4NTM0MTgyNDgyOAwPMjU0MTE4NzY1NjQzNjI0DA81NjA1MjAxNDUwNTUwNzAMDzg4ODQyODI0NTcwODIwNgwPNDM1NzY2MTE0MTc3NTQxDA8zNjY4MDQwODQ3Njc0MzMMDzE2NTgzODY2NTU2NDU0OAwPNzA1NjgzMTg4NzU1MTczDA84Njc3MzEwODMwNDAwMDIMDzA0MTg2MTg2MTQ3NDA4MwwPODIxODQ1NDAzNDA3MTUzDA81MzExNTQ4NTcxNDMzNjEMDzA0MTgwMTUwNDQ1MTAxNgwPMDAzNDUyNDc2MDYyNzc2DA82ODE1MjMwMTAwODYwODYMDzMyNTAzMTUyNDM1NTY1MgwPMTczMTI2NDAyODQ3MzAzDA8yMDMzNzc2MTU0ODM0NjEMDzUzMDIzODA3MDQ3NTQwNwwPNjYwNDUxODIwNTMwNDE4DA83Mzc0NzQ1NTQ2NjQyNzgMDzAyNjAzNjc2ODgzMzMzMgwPNjA1NDIxNjg2MDYzODAxDA8wMTYwNzI3MjUyNTIyNDQMDzg3MDYzMDQ3MjMwNTQzNAwPMDMyODAwMzQ3MzE0MTgzDA8wNDg0NzY3Njc2NDY4MTIMDzM1MDMxMjEwMDE2MDA0NgwPMTU3MzM0NTg3NTQzNjUwDA8zMjExMTExNjQxODQ0MDUMDzI3NTU3MDA1MzI1MjA2NAwPMjU3NjMwMTAyNDg1NjE3DA82NDU3NDYzNTgxMDYwNzAMDzM3NzgzMjIxMjM3NjQ2MAwPMjE2MTc2MTE0MTUyNjM1DA80NjgyNDMwNTQ4NTM4MTMMDzc4MTM2MDEzNTI1NTU2NQwPODcwNDEzMTcwMjg1NzU2DA83MTE3NDQ0NDE2MzQwNzEMDzEzNjE0MDAwNDU2MDIxNgwPNDA4MjQ4MjEyNDg4MTUwDA8yMjY1MDU3NTE1MjgyODgMDzY0NzU4MzcwNTAzMjYyNwwPNjUzMjQ1NDMwMzg4MDUzDA8wMTQ4NjUwMDMwNDUxMjAMDzIwNDA2MDA0MjY0NDAzNAwPMDM0MjM4MTUzMTg4MjQ0DA8yMjg1MjQyNjcyMTU4NjAMDzQ0MzE4MDgwNDI2ODUxMAwPMzM0ODA1NzUxMzg4MjU3DA81ODAyNDA1NzY2MDY4ODcMDzg0MzAwMDQ1ODY4NTA1MAwPNTY4Nzc4NjY3ODExMjcyDA8zMTUxMTcxNTIxMzQ2NjEMDzg0NTQ3NDMxMjQyMTYxNwwPNDYxMDIzNjQyMDgzODMyDA8yMTQ3MDM2MTg0NjM2NTIMDzM0NTQyNTIyMDU1MjQ3NwwPODMwMDUzODczMTA2NjcyDA8wMDUyMjEwMjc4NTE2NDgMDzE1MjY0Nzc1MTE1MTM2NAwPNzI2NDQxNjM2MDYwNzMzDA82ODU3MTgzMTIwNTA1MzEMDzI2NDM1MDIzODI0NjI4MAwPNTA0NDU0MzYwMTMyNDUyDA84Mzg0Mzc1NDI1NzA2MjQMDzQyNzQ2MDQ2NTE1NDAwMwwPMDQzODExMjEzNTM3NzYxDA84MTE4NDc3MzA4NjE0NjgMDzUxNTI1Mzc0ODEzMTQwOAwPMDQ1NDU0MDg4NDYyMTUwDA82MzE2Nzc4MTYwNTE2MjUMDzU4MzI4MjcwMTEyMTY0NAwPMzgzNTg0NzQ3NTM0MDE2DA8xMDIwNDY0MjUwMjU0MjQMDzU3MDA2NjIxNDQ4NTE1NwwPNDU4ODY4MTg1NjI4NDA4DA81ODUyNTg4NjYzNDY3NzgMDzUyNzQwNTYxODY2NDc0MAwPMjc0MjY4MTczODA3MTE3DA83NzY2MzcwNDY2NDA3NTQMDzUzNTEzMzMzMTM2NDA1MwwPMTA1MDYzMDAxMjIxNjUwDA81ODMzMTY2MjA2NDc3NzcMDzQzMzM3NDYzMDMyMTU2NAwPNDcxMjA0MzgzODAxODg3DA81NjUwNTIxMjU1MzUxMDYMDzM2NTMxODEzNzA2NzMwNgwPMjQzMjg4NzgzMjY3NzI3DA8zNzQxMDg2MjYxMDAxMjQMDzc4MjA4NDIyNzUwMDM3MQwPMzU0NzU3MjYzNjAzMzg1DA83NDM3MTU2MzAwODAwODYMDzM4MzIzNzc3NzMzMTE3NwwPMzU2MjIyMzUwMDc2MTE3DA84MDIwMzQxNjcwMjU1NzcMDzU1ODE1NTI1MjM0NDQzMwwPODE4ODcxMTQ0MDQxNDY3DA8yODQzNDI1NjAyMjg1NzcMDzA0NTQyMDcxNjEzODAwMAwPNzQ4MzgxMDQyMzIxMzgxDA8zNzE1MjA4NjI3MzMyODgMDzMxMjgzMjQwNjYxMzA1NQwPODA1ODgzMDUzNDIzMzUzDA8zODEzNzQ0NzI1MDQ4MjYMDzU2Mzc0ODE0NDI3MjU0NgwPNjE2MTA3Nzg1MTcwMjg1DA8wODQ4NjY2MzI1MTEyODAMDzMxNjEyNzE4NjUxNzgzMwwPMTAwMjQ2MTE1MDU0NzgzDA84NzQ3MTgwNzEzMzc0NDcMDzA1MzQ3NzgwMTEyNDEzNQwPNzcwNjM0MjQ1MzM4MTM0DA82MTQ2NzUyMjY1MzcwNDYMDzU1NjA4MTM4MDMzMTQ0NgwPNTgyMzI1NzU1MjU0MjM2DA8zMzAyMTI1NDcyNjQ0MTMMDzE1NDg3MDE0ODcwNzMyMQwPNTI3Njc3ODIyNTUxNjE1DA82ODY0MDgzNDE2MTQzNTAMDzQyNTAyNzM4NjAxMTc4OAwPMDg0MDExNDg4NzQ4ODY1DA81NTgxMjUyNjg0MzYwNzYMDzE0NzEyODE3NjczNzUwNgwPMzEwNzAzMjI2MTQwODE3DA8yNjA2NjAwODQ0NzQ2MjYMDzEyMjMxNjgzNjUwODE4MQwPNTAzMjA2ODI0MTc1NDY1DA8xMDY3MzIzNDE1NTg0ODcMDzgyMzI4NDcxMjIwMjg0NgwPNTIwMjUxMTIyMTU0MDM3DA80NzE2NTIyMTMxMTgyMTEMDzYwNzAzMjU4MzAxNTM4NQwPNzM4NjU2NjUwMzYyNTQwDA81NjQyNzUwMTg0MTI4MzUMDzU4MDIwNDM4NDg2NzM1MQwPMzYxNjA2NTgxNDU4NzczDA84MTAwNTg0NjA0MDY3MzgMDzA1ODA0MDAyMzMxMjE0MgwPNjg0NDY0MzQzNzg0MjQ3DA8xNjU1NTgxNjIzODQwNzEMDzU0ODA1MDgzMTY0NDczNQwPODU1NjY2NTI4ODM2NTUyDA82NjE0NjcyNjMwNDYwNDgMDzYwMzUzNTMxODEyNjAxOAwPMDE0MjM2MjU1MDM2NzEzDA84NDQ1MjQyNzYzNDc1MTQMDzY3MDc4MzY3MjYyMzYxMAwPMjY4MjU1NjgzMDcyNDc3DA8xNzUyMTY1MzgyODg4MDEMDzg2NjQxMTI0MDc1MzM4MgwPNDg1Mzc4MDgyNTQ4NTY3DA84ODU3Nzc2NTcxNzc1MzAMDzgxNzQyMjcwMjQwNDYyMwwPMzI2MzcxMzYwODcxNDAwDA8yNDcyNDg1MDA0MDY4MzcMDzA2MDE1NzIwNTQwMTIzMgwPNjgxNDMwNDEyMTA4MDE3DA82ODQwNzM0Mzg4MjgxNTgMDzU0MTI4MzQ3ODQyMTE4OAwPNjM2NDI1ODYyNTgxODg0DA84NzM4NjQ4MTc2MDA3NDcMDzM2MTg4MTcyNjQwMTUwNAwPMTM4NTY3ODI4ODAwNjEzDA8wNDE2NDI1MDM2MjUzNzUMDzUxODEzMTQwODg3MDgxMgwPMjcxNTM4ODc2NTEzNzM4DA8xODY4Mjc2MzU0MTEyODEMDzUyMzU4MjQ0ODU4MDUwOAwPMzg1MTg1MTg2ODE1NTMxDA84MjU4MzUzMTc2NDMwNDIMDzU4MzAzNTY0NTgwMzg2NwwPODQ1NTMxMzQ3MTg4ODMxDA84MDUyNzYyODA0MzI0ODIMDzQyMzcwMjAxMDQ4NjUyOAwPMjEwODIwMDA1ODU4MTQ4DA83MzQ3MTA3MjMzNTAwNTYMDzc1NjA2NDYyNTA3NDQzNwwPMjcwMjY1MDMyMTQzMDcyDA8wNjY2NDcxNTQ4MjA2NzQMDzU2NTAxNTE3MzQ3NTMxNQwPNjQ1MjQ3NDEyNTM3NTUwDA81MDY3MjAwODY2NTY4MjgMDzc2MTEwNTQ3NTUxMDYyMgwPNjY4NjMyODg2NzMxNTA4DA82NDE2NzI1ODQxNDUzNjAMDzY2NjcxMjIxODQwNzQ2NQwPNTg0MTIyMTM3MDAxMzIxDA84NDgyMzc1NTQzODgwMjcMDzc1NTg4NzI3MzYxMzI4NgwPMjY1MjI0NDAyNDM2ODExDA83MzMyNjMwMzg3NzAxMzUMDzE4Mjc1MDExMDE0Njc3MwwPNTgwNTUzMzA2MDgxMjA1DA80NzQ2MzMwNTIyMzUzNTYMDzg4NTgxMDYyMjIxNjQzMQwPMjQ1Mzc4ODQ2MzE0MjgwDA8zMzEwODIzNjg2MTM3MDYMDzA4MzQzMTA0NjYyNzE0OAwPMTc3NzgwNTQ2MjQyNzI1DA84NTIyNjYyMDU3MjI0NzYMDzM2NTgxMjg3ODMyMzQ1MQwPNzAzNDA3MTU1MzEzMDcyDA84NzgyODIxMjQwMTAwNjMMDzI1MjU4ODA0Mjc2NDYwNQwPMDIzODAyNjg2NzUyNjI1DA82NDQyMDI4MDUxMjA2ODEMDzE1NzAxMjU1ODU4NjU2MQwPMDM4ODAzNDUyNTU1MTI4DA82Mzc1MjMzNTUxNjUwMTAMDzQ2MjQxNjg3NTI2MjI3MQwPMDEzNjUzODAzODc0MjI0DA8wMTUyNzE0NDI0MzQ4MDcMDzI3NTc4NjcxNjc3MzYwMgwPODA2NDM0MTQ0MzEzMDczDA81NjMzMDEzNTY3NTIwMjMMDzcyMTc3NDI4NzAwMjIzNgwPMTg4ODQzNjEwMzQ2MDEyDA8zNTMyMTE1ODYxNTA2MDMMDzQxMDQyMDA0MzcxNTg2NAwPNTAzODY0NDIxMTg4MDEzDA83NTUwNDI3ODE4MTA2MTQMDzAxODQ4NzI0NjYyMzQwMgwPMDg2MDUxMzIwNDI4MTM1DA84ODcyMDc1NDU1NjA3NDMMDzg4NDQwNTIxMjExNzA2OAwPMDg2MjY4NDY0Mzg3NjA2DA8zODIwMzY2MzQ4NDEyNDYMDzI0NzI1MDExMTI2NTQ2NAwPNDA0ODQzNTIxNjg3NzAwDA8zNjg3MDEwNjcxNDM0ODMMDzgwODA3MjY0NDI2MTE4MwwPNTYzNTEzMDgwNTIzODI3DA82ODExMjczODg0NzY1NzUMDzY3MjI3MTcwMzQxNTcyMAwPMTA3NzcxNzAyMjU1NDY4DA8yMzc1MTQxNzY0MjMwMjYMDzQ4ODgxMzM2MjcyNjMwMgwPMzYwMDAyNTUyNzYwMzE4DA8yMTA0MzgxMDAwNzM0ODYMDzUzNjU2NDY2MDIyNTEwMwwPNDU3NjcxMjM0MDUwNjYxDA84Njg2NjY3Nzc3MDAyNjUMDzI2NzExNTEwMzQ0MjY4NgwPODc2MjYwMzUwNDExNzE2DA8wNjY2MjUxNTExNDMyMTcMDzIzNTI3MTMyMzM0MzUwOAwPMjg1MTgxNjI2NTU2NDAyDA82MDA0NzAwNzE2NzcxMzYMDzE3NDc3Njg0MDA1MTc3MgwPODY4ODczODUyNDI4NjgyDA81NjE2ODQ3ODYyNjczODYMDzMzNTI4MDA0NzMxNjg4MgwPMDM4Mzg3ODMzMzY1NjU4DA8wMzc1MDMxMjc3NTU3NzcMDzc4NzA2NTAwNzE1MDI0NAwPMzcyMjUxMzEyNzYwNjI3DA8wMTcxMjIxMTc0Mzc3MjIMDzM3ODMwMjA0NDU0MDc3NQwPNDgyNzY2NDYyNTYxNzE3DA8xMDY4MDY4MTE3MTg2NjgMDzEyODM3NzQ4NDA3MDE2MgwPMzE1ODUwNDYzMDY1MzIxDA84MjAxNTEwMzQxNjcyNTcMDzY3NzQ0NTQ1NjAzNTcxNAwPNTY0MTQwMjY2Mzc4NzM2DA84ODc3NTc4MzU1NTMxMTQMDzQzMTUyNTcxODI0MjYxNAwPMTAxNTIyNjEzMTIwNTg4DA83MzUyNTczODcyMzIwMzQMDzAyMzQ4NTg2MDQyNzE2OAwPMjUyNDUwNDgzNzU4NjU0DA83MzQ4MjE4MTQzNzcwNjUMDzg4MDgzMTA3ODU3Mjg1MwwPNzUyMDE1MDgxMTQxNTcwDA8zNzc4ODYxMTU4NzMzNTcMDzEwNTgzODcxNDI4NjY0MQwPMjg3NzEzMzE4ODE4NzEyDA8wMzUwODg3NDU4MDI1MTAMDzc2NTU4NTMxMzM0MzI4MAwPNzg1NzAzNjExMjczNjgzDA80MjQ2ODcxMDc0NTM4NTcMDzQ3MTc2MTQ3NzUyMjQwOAwPMTIxODY4NzM3NzY2MTAxDA8zNzg2NzAwMTY1MTQ2NjQMDzg4MDE1MDY2ODIyNzA2MwwPMzQ3NjM2MzI1NzI2MDYxDA83NzUzMTY0ODQ0MzU3ODAMDzU3MjMxODI1ODY2NTcyMAwPNzQzODI2MzIxODg0NjE1DA84ODU4MjQ1NjQ0ODczNDYMDzc1NjA0NjYwODU3NDE2OAwPMjIzNTI2Nzg0MDI0ODM2DA82NjQzMDA3NzQxODA1ODYMDzYwNDAxMDcyNTUwNDQ2NQwPNzY0MDE4Nzg3NjAyNTUxDA8xNDI1MzMyNTQyODczMjAMDzEzNDU3ODYxMTgzODU0MAwPNzM3NDU1MDcxMzEwMDU1DA8zMDMwMDg4MTI0MjU3MzMMDzc0ODU3MzU3MDIwNjcwMAwPNDIxNTAxMjA2MjU0MTE2DA80ODMzNjg0Njc1NDgwNjQMDzUyMTIyMzU4ODYwNzAzMgwPNTUyNjg3NTAxODI2MTY1DA80MTM2MjQwMjUwNzYyNDUMDzU2NjI3NzYwNjMwNzUzMgwPNzgwNTc4MzMzMjgwODA2DA84ODIxNjMwODc1MzIwMjUMDzI1ODI0NTc4NjU3NTcyNQwPNjMwNjIxNzEzMzQxNDU4DA83MjQxMjA1NTU2MzY2ODgMDzUwNzE4MDUwODU1NzA1NwwPNDQzMTY1MTc4ODA2ODMyDA84NDYzNTE2NTc1MDgzMTgMDzM0MDEyNTIwMDQ4ODY2NgwPNzg4MjcwODE2MDEwNjQ4DA82ODEyMjczMDQ2MzE2NTcMDzU0ODYxMDEzODMxNDgyMAwPNDI4NjA0Mzg2MTc2MTIyDA8wNDU2ODQ2MzU1NzcyNTgMDzU3MTEzNTMyMjg4NzIzNAwPNTQ2MzMzMjYzMzU3ODc4DA8zMDgyNzY2NTY0NzM0MDUMDzU0ODQ3MTMzNTM2NTYxOAwPNjY3NjM0MjIyMDE0MTQzDA8yNTMwNTcwMDI2ODY2MDcMDzc0NDUxNDgzNDc3NTA0NAwPNzMxODY2MzA0MDgxNTc1DA82MjU3NjcxNDgwNTc2MjcMDzY4NjQ2NzI4NDI4Mjc3MwwPNDAzMDUwMDM4NTQwMjAzDA8xNTQ3NDYzNzIyNzY1ODcMDzEzMTY1NTc3Nzg2MTE0NgwPMzY4Njc2MDMwMjQyMDMyDA8zMDY2MjM4MzYzNDY1MzMMDzUzNDgxMDc2NzI4MjI2NQwPNjYwMDEyNDA0MjI1NDU0DA8zMTg0MDc1ODYwNzgwMzYMDzMzMjQzMzc1MDg0NDUxMgwPNTA1MjMyMTE0NjgyMDA0DA8xMjYyNjcyNDM2NzQ0NTIMDzQ3NDQzNDYyNjAwMDA4NgwPNTY1MzI1NjMzNjcyNTQyDA8zMjc3MjMwNjUxNDcyMTgMDzcxNjQ2NzEzMDg2Mzg1MwwPMDQ1MDI3ODgzMzQ0NDYwDA8wNDQ3Mjg1MTA0MDE2MzUMDzU4ODgxNDYwNDg1Mjc1MwwPNDgzMzY0ODIzMzYyNjUwDA82NDMzMTUzMTcwMDgxNjQMDzAzNzQwNjEzNjM3Njc1MwwPODYzMjg2MjQ0MzgwMzQzDA80NjMyNzUzODMxNDMwMzcMDzM2NTQ3MzU2MDc0NjMyMgwPODc4MzM2NjY3NzI3NTQ3DA8zMDU2NDYzMzcwNjczNzEMDzM3MDA4MzE1MjY4NjE1NwwPODg4NTM1NzY3ODg3MzAwDA8zMzYwNzUyMTIxMjI3NjIMDzUwMDgzNTM0MTExMTQwNAwPMDQzNjg4NDg4Njc3MTE3DA82NDY0MzIyODM2MTAyNzQMDzE3MTIyMjA3ODIyNDgwMAwPMjUzMDEyMjg0NTg2MjUyDA80MzYyODIxMTg0NzU3MDQMDzgzMDQxNDU4NDM2MjQzMAwPNzY2ODIzNjYzMTI1MDI4DA8xMjAzODEyNjI3ODE3MTEMDzAxNjM1Nzg2NTg3MTQ3MQwPMDMyNzM3Nzg2MjgyMzY4DA8wMjYzMzAwMzcxNDUzMjEMDzgwODcyMzU1ODQ0MTgxMgwPNDI4MjMzMzI1MjQ1MDgyDA8xODgwMzAyMTczODA4MjcMDzI1MjYwMzI0NzcxNjg0MgwPMDE4MzM1MjA4NDAyMDczDA8zODgzNDQxMzMwNjU4ODgMDzAxODUxMjAwMTE1MTY2MQwPMDgzMjgzMTM2NjY1NjcyDA84NjMzODU3ODU0MTIwODgMDzgxNzg0MjQ2MjUxNTA3MQwPNTM2ODA1ODIyNzgxODU1DA8xNDA0NjYzNzY3MzQyMjQMDzMxNDUxMjgwODQzNjEzNgwPNzUzNjY3NTAxMjgzNTE1DA8zMjQ4MzM1MTMyMzEyMDcMDzc0NTMwMTY4NjI1MTg2NwwPMjE2NjMwNzM3NjEzNjM2DA81NzgxODUxNjY2Nzg1NzUMDzc0MjI0MDQ1NjI2MzU3NQwPODA2NDUyMDQyMzI1NDg2DA81NTAwMTExMDgyNzg4MjMMDzQxNTIwNzM3MjM4NDc1NAwPNjIwNTA4NTUxNTMyNDEwDA80NTM4NTYwNzA1NjgyNDAMDzE1NzY1MDIwNDM2NjUyOAwPMjcwNDUyNjc3Mjc1MDc1DA8wMTgyNzE2NTIwMDU1MjMMDzU2Nzg0NjA0NDI0MDEyNQwPNDYwNTgxMDUwNDg1MjM3DA80NjM1NTQwNzgxNjMxMzYMDzQ3ODAwMTAyNTAxMzU4NAwPNDc3NzUwMzEyMDg4NzYwDA84MDU1MzQwMTYwNzUyMDEMDzg1Mjg2MTcxNjQyNzExOAwPNzU2NjA3MzEyMzcwNTg2DA81NTQ3MTQ4NTAwNTQ2NTAMDzEzMzI2ODQ2MzMwMDMwNQwPMjYyNTU0MTYyNTU3NTMyDA80Mjg3NjI4NTc2NDE0MDMMDzg1MzQ1MzEyMTgzNDY0MAwPNDAzMTgyMjU4MDU0NDQ2DA84MzYzODAwNTczODY4MjgMDzIzNDAwODQxMzIzMDIzMQwPNDg4MzE1NzA2MDQ0ODAyDA82MzY4MjI3ODQzMTczNjUMDzg2ODg1MTU3NTA1Njg3NgwPNjY0NDAzMzA4NDIxNzMwDA8zMzI4MTQyNjA0NDExNTEMDzYyNTY3NjcyMjI4MjM1NwwPNTc1NzYwNDAyNjE2NzQyDA8xODQ1NTg4MzE4MzI4MzYMDzg3MDIxMDMxNjM0MjczMwwPNjg1NzQyMDg1MjYwNDExDA83NTY4ODU3NjUzMjczMzYMDzA0NjU3MzQ4MzU2MzYwOAwPNjE3MDQyMTU1ODEwMDgyDA84NTU4NDU4NzIxMjExNTgMDzc1MzYzNzI4MDgyNDIyNwwPNTM3MzAzNzU0MzYzMTI3DA81MzYyNjU4NjQ0MzcwMjIMDzc3MjcxODU4ODcxNDI0MwwPMDUwNjY2MDAwNTgyMzE3DA81MjE1NDY3MDYwMzYzMTAMDzczODQ1ODcyNzU1NTY1MgwPMTE1NTUwNzYxNjcwNzQ4DA82NzcwMDcyNjgwMTQzNTEMDzI4ODU3NTgzNTA1NzI1NwwPMzcxNjIzMjQyMjgwNzQ3DA8zNTU2Njg2NDAwMzgwNzQMDzQxNzExMzQ4ODQ0MDc1NAwPNzY2MzAwMjU4MTI2NzcyDA8xODU1ODE0NDUwMTM2NzMMDzg1ODIzMDY1NjYxNzY2NQwPMzIyNjQ2NzA3Njc3NjU3DA83ODg4ODU2MTAxODczNzIMDzc2MDgyNDcyMDI4NzcxNwwPNTc4Mjc0MTMzNDM3MTgwDA8yNDEyMzMzNDE4NzEyNTIMDzcyMjg3MjQ4MzY4MjA1MwwPNTQ0MDQyNDIzMzU2NDQ3DA83MjI2MDg3NTUwNjQ4MTEMDzM1NTE2NDU4NTcxMzcyNQwPNTE1NDI4NTQwNTQ0NzU0DA8yODUyNzU4NTE3MDc4NDcMDzY0Njc0NjUwMTEwNzQ2MAwPMDA3MDczMTQ1NjU1NTgwDA8wNTIzMTc1ODA0MDQ2NjQMDzUwNTAwMTY3NTg2MjU2MAwPMzEwMzQ4ODA0NDQxNzM1DA8wNzE0NzI1NzA4MTYyNTAMDzYzMjA4Mjg0NDY4MzE3NQwPNjUxNjY2MTgzNDY3MDI4DA8zNDgxMjA0ODI1NzM2NDgMDzE3MjUwODIxMDUxMTg2NgwPMzg2MTI2NTYxMzM3NzMzDA81NjAxMzU2MDYwMjE2ODcMDzI4MjY2NzgzNDUwMTI1MgwPMDIzMjY4NzIxODYxNDEwDA8xNDE4NjgyODg1MTQyNjgMDzcwNjMyMDQ4MDYyNTQ2NQwPNTA0NDMwNzE1MTA4NzQxDA8xNTQ4MTAwMjU4NDMzNTAMDzgxMTY4NjYyMTEwNTY0NwwPODY4NDM0MzU4MDY0MTA2DA82MzE2ODQ2MjMzMDA3NjgMDzgxODc0MzgxMDc2NjY3OAwPMTE0MzQyNDI0NTYwMzE2DA8wODU0MDQ3NjM4NTc4NjEMDzM1MTAyMjcyMjE4NzI0NgwPNzc2Njc4MzE3NDMyNDAwDA82MzIwNDE4Mjc2NzEyMzEMDzc2NDA3MjEzODMxNjEyMAwPNjMxNTUxODMzMTc2NjA2DA8yMzIwNDA4NzQ1NDc1MzcMDzI2NTA2MjExMjEyNjEyOAwPMjc0NDM1MDgyNzIzODYyDA80MDI0NjA0MjAwMzIyNzgMDzgwODg0MTI0ODExODYwMwwPMzAxMDM0NDE0NjUwNjcxDA8wNTc4NTM0ODc1NTg2MDIMDzc2MDYxNTMxNjU4MzAxNgwPNzgxMTgyNDIxNzUwNTA4DA8yMTEzNzY3MDczNDExNjYMDzc0MzM0NzQxNDgxNzI4NwwPMjg4NjE3NTM4MDQ0MjY2DA80MDMwODExMjE0MzE2MDEMDzc3NDU1MDgxNDQwMjYzNwwPNjc2NDQ2NDEyMjUzMzUxDA80NjE4ODQwNDgyMjI0MTMMDzQ2ODcwNDc1MDEyMzM1MwwPNTA4MzM0Njc3NjI1ODYyDA82NTY2MzEzNjQzMDE3MzIMDzcxMzI2NTgyNTUyMDIwMgwPNjIzMTQ2ODM0Mjg3NzI0DA8zODIwNTg3Mjc2Njg4NjcMDzA3MjcwNjYwNzc1MTUyMAwPNDg1NzY3NDI2NDU0MDE4DA84NTI0MDAzNTE2NDY1MjIMDzIyODEwNTgzMDY0MTM3NgwPMDAzNDczMTIzNTYwODcyDA8yMDA1ODA0Njg1NzY0NDIMDzc2MDg3MTc2NzUzNDUyNAwPNzg2MDI4Mzg2NTAyNDE4DA8xMzY4NTAwMTg1NDA4MzMMDzIyMzY1MzA3Nzg0MjQ1OAwPMTI4NzM4MDg3MjcxMzQyDA8xMjA4Mzc2MjQwMjQ0MzIMDzA3NTE3NTgxMzA2MDc0NAwPNjM4NTY0MTAyNTEyMzMzDA8wMjE4MjcyMzA3NDQ3MzUMDzAzMjAyNTQzMjc1ODUwMgwPMDY3Nzc1MTc1MDAzMjMwDA8wNzc1NDc0ODgwMTg0NzIMDzc0NjcwNjczNTAwMzMyMQwPODQ4MzgwODA0MjAxNDExDA8zMTQ4NTYwNTI0MzQ4NjAMDzI4ODAzNDUyNDI4MjQ0NQwPMDIyNTI4NTExNzg2NDQwDA82MDQwNjgxMDg1NzA1MjMMDzY1NTYyMjY3ODcwNTE2MgwPNTY0NDIxMDIyNTI3NzQzDA8wMjE1MjE3MDI1MDI4ODQMDzYzNzgwMTY1NTA0MDc2NwwPMzA3MTE4NDExMTc2NTU3DA8wMDYxNzI3NTM0NDQxMjAMDzU1MzgxNzI4Nzg4MDA3OAwPMzI2MjU2NjQ0MTIyNDc3DA8zNTgyNjQ0NDI2NzQ1NzcMDzQyMTg3MDg3MjMyNDIwNQwPNTE3NTMzMzE4ODY1NTE1DA81MDQ1Mjc3NjI1ODQ3NzAMDzcxNDAyNDQxMjEyNzgzOAwPNTIzMTYxODE4Mzg1NTEwDA8wMDI3Nzg2MzEyMDQ0ODQMDzMzNTUxMDcxMTYxODAwOAwPNDU1MDYwODMzMzMyMjM4DA80NTM4NzExNjE1MDg1MDMMDzQ0MzQ3MjUxNzM4MDU2NwwPNjIwMDM1MDg1MzU0NDcxDA81NjE4NjMzNTE2MjU0MDUMDzE1Mzc4NjYwMDgxNDM2NAwPNzgwMDgyNjEzODc2MzgzDA81Njc0Nzg1NTg0ODczMjcMDzM1NTIwNDg4NTMwMTM3NAwPNDA4MDAwNzU3MDQzODYxDA81NjgxNjQ1ODcyMzIwMTgMDzQ4MTUzMjMxODUyNzM0MAwPMzE0NDI0NjY4Mjc4NDg2DA81NDc3NzIwODcwMDU4NjMMDzMzMjExMTUwODMzODI2MgwPNDU3MjI4MzM3NjAzNzAwDA80ODQyODAzODQyNjg1NTYMDzEzMjMxMjQ3Nzc3ODQ2NAwPNjI3NjQyMDY2NTA0MzUzDA82NTAwNjEyMTIxNjY2MzcMDzE1MTA3ODY0MTc3NDUwMAwPNDEwODIyNDIwNzcyMDg0DA83NjEyMjY3ODYxODU4MjcMDzcxMDMyNTE1MjcwNDIxNAwPODY2NjU4MzA4MjEwMjcyDA80MjI3ODc4NDg1NTg3NDcMDzgzNzcxNDQ4MTI2MTg1NwwPNjM1ODY2MTA1MTIxMTcxDA83NDU2MDExNTM2MzAzNzUMDzg1MjUyNjE3MjM1MDUyOAwPNjI1MDM3NzY2MTc1MDc0DA84NzAyNDIyMjMyMjAyMzUMDzQ0MzQwMDMxNTYyNTY0NAwPODUzNDUyNzgyODAwMzcxDA8xMDM1MTY3NTY0NDgzNTYMDzQyMzUxMzYwNjcwMjUzOAwPMTcyMTAxNDg2MjcyNDUxDA80MzIzNDI0NDg3NjUwMDUMDzc1NjI4MDAxNDU1ODQxNAwPMTE1NjU2ODE2NzAwMDM0DA8wMjc4MjQ0MDc3MzU4NTIMDzM1NzYxNTgxMDYyNTA4MAwPMTIwNTQ4NjUzNTgwNTgxDA80MTI2MDg3NzAzMjI4NzMMDzYwMzgwNjQ4NjIxNTY0NQwPODQxNzE1NjIyMzQ4NjczDA82ODI0MjQ0MDIzNjUwMzcMDzQ0NzQwNTU0ODI1NjI3MgwPMTEwNDQwMTMwMjIyODM0DA8xNTQ0NDMzNzU1NjgzMTYMDzI3MTExNDU4MTYwNjM3OAwPNDIyNjU0MzI0MzM2NjA3DA83NjQ0MTQ1MDcyNDg0NDYMDzE3MzU3NzgxMjE1NDQ2MwwPNzcwNjAwMzAxMzgwNzAxDA80NTM0MzYzNjQwNzIwMjEMDzgzNzIyNTQ1NTUyMjAyMgwPNjAyMzQ2MjIwMjUyODA3DA84MzAyMDExMDQwNjA2MjIMDzUyODQ4NTgzMzg2MDI4MwwPMTc1NDc2NTA0NDQxMDQwDA83MTM1NDE2Njc3NDE2NzYMDzIwODU2NDcwMzYyNDU3NwwPMDA4NDcwMDIxMjg4MDU3DA8zMDAwMDA1ODIwODQ4NzYMDzE4MzI0NzEwNDIwNTQxNQwPMzEzODY2NTA3NTM0NjI1DA8zNzcwMDcyMDgxMjgzMTMMDzIyNzQ2ODIyMjE0MDIzMAwPODE2MjU3MDEyMDI0MjE3DA83NjAyMDMwMDY4MTM3MTEMDzQxMjgyNTE0NTQzMzIzOAwPMzI2MzU2MTE4Njg2NjQ3DA82NTM2NDIwMTcwMzI0MzMMDzEwODQ3MjYzMDAxODc1MAwPNzM3MDI3ODI4NDUzNzQzDA8xODQ4NzI1MjI1NDg1NzIMDzgxNTQ3NTA1MzYxNDEzNwwPNzUyMTg2ODY3MzYzMzMwDA82NTM0MzgyNjU0MTQyODUMDzIwMjQyMjI1MTA1NzQ1MQwPNzE1MzQ1MDI2MDY0MTIwDA8xNTcwNjc0MzM4MzA1NjUMDzcxNDcyNjIzODQ4MTA2NwwPMjg0NjM4NTY3MjM1MDYwDA8yNzQ3NjAzNDc3NTMwMzEMDzIyMTYzNjgwNTE3NDAzNQwPNjgzMjI2MTEzMTUxODA1DA82NTgwMzE2NDIyMzU0NzQMDzYyNjQwNzYyODAyMjAzMwwPMjIxMzgxNDgzMTMyMzI3DA8xNjU2NzEwNTI3ODI1NDgMDzY1ODgyMTU2ODU2ODY2NAwPMzY3MTU3NDUxMjIxNzU3DA8zNzMzMzUyNTE0MDgzODYMDzcwNDYwNjYwNTEyNzA3MwwPMjgzODg0ODU2ODI1MzA3DA8wODQzNzIyMzgwMTYxNzMMDzM3ODAyODExNzgyMjE3MgwPMzU3MjQ1MDI3MDQ1MDM2DA82NDUxNzAzNjg2NDQ3NzUMDzE1MDQyNTY0MDAxMTUwMQwPODYyMDMzNDQwNDgxNDcwDA82NzE4MDgwMTU1MDUxNDUMDzQ0NDI1NjQ3MjA1MTQ1MQwPNTU0MjM1MzI1NTg2MTIzDA84MzQ1NDUwODgyMjA3MjEMDzc4NjU1MjIxODYwODIxNQwPMzgyMDU1NjIyNTE0ODMwDA81MDMyNTMzMzExNDcyNjcMDzAxNDc2ODA4MzA0MDgzMQwPNTE0MzY4ODgxNDQxNTI0DA84ODMyMTUzMDMyNTQxMjUMDzAyNDQyNzE2MTIyMjg0MQwPNjI1NTYyMTQ3NDc2NDA2DA84NzM4NTA2MTgxNzc3MTMMDzIyNjM2NzU0MDczNjAxMQwPMzYzNjA4NDQ0Njg4MDEyDA80NzMzNzYzNTAwNzc2ODUMDzY3NTA1ODUxMDY3NDgwOAwPNTc1MDM1NDYxMzg2NDEyDA80NjU4Mjg0Mzg0NjY4MTgMDzIwNjE2NTg4NjU1NTczMAwPMjUzNjQxNDQzMTEyMjA0DA8xODE1MTE0MDI3NTA4MzMMDzU2NDYxNDQ1MTAxNTM3MgwPMDEyODQ2MzI2NjM2MjUxDA8zNjUzMDg2ODgwNTY3MjYMDzg4Njg2NjA2ODEzNDQ1MwwPNjM4ODMwMzEyNDA4MzgwDA81NTUzNzA4MDc2NTI0MDcMDzE2NDY0MTI3NzE1MjM2MwwPMzg3MTA2NTg4NDQ2NjEwDA8xNTIxMTc4ODY2NjI1MjYMDzU0MTU3ODIyMzQ1MjEwNAwPMDQ3MTMwODYwMzU0NDA2DA84MzQ2NDA3NTI4MDQ1NTcMDzExMDc4NjcxNDQ0NjI1NwwPMzUwMjEyMzAzNjgwMTQ0DA8xODc4ODI4ODQ3NDIyNzYMDzg1MzU1NDg4NTg0NTMxMgwPMTQ2NzY3MjI0Njc1MTY1DA84MTY1MjEwMjU0MjIwMTUMDzM1Nzg2NzMzNTczMTc1OAwPNzQwMjUwNTgyMDI3MzM0DA84MDcwNzA0NzUyNDA3MTQMDzcyMDA0MDI1MTgwMzczNwwPMDMyMjI4NzU1ODA3NDcwDA8zNDY0NTQyNzA1NDIxNTEMDzQ0MTMxODAyNzA4NzMzMAwPNjg2NjEyMDgyNjEwODg3DA8wMzUwNTY4NDQwNjA4NzMMDzUzMTc1NTQ4NDg4MTQ2MwwPNTc0ODA4NDUyMzU0MjU0DA8zODQyMDUwMjU1MTUwNTEMDzgxNTU1NDAwMjg4ODgyMwwPNjg0MDMzMDYwMTc4MzYzDA8yNTE3NDc3MjU2MTEwMTIMDzUzODQ0NDcwNDgzMjUwNAwPMDY2MzUyNTQzNjQwNTI2DA8xNjY0NzU1MTAzNjAwMjIMDzMwODE3ODA0NjI3MDQ2NgwPNTEyODQwMTI2MzUzMjYzDA82NTU3NjY3NzE0NDU2NDYMDzIyNDc3NjQ4MDE3NTc1NQwPNDc2MTAwMjYyMDMwNzQzDA8xMjE1NTExMDc3MjYxNDcMDzExNDc2NTMyMDU0MDEyNQwPNzY1Mjc2Njg0MTE1MjQ1DA80NDc1Nzg1NDgwMzEwODAMDzQ0MzgyMDY0ODQ0MDYwNgwPMDg3MDAwMDgzNjIyMDMwDA8yNjg4NDM3MzYxNDM2MDUMDzgzMjMxNTM4MTQ3MzE0NgwPMzI2Njg1MjI4MjYzNDM3DA81ODgxODAxMzUwNTEwNTAMDzQ0NTEzNDYwMDUxMDA1OAwPMzI3NzQxNjUxNjU3MTU1DA80MTYwMTgyNTQwMjg1NDUMDzQ3MDE2MDE3MTE0Mzc3OAwPNzYwNjAxMjU3NzgwNjgwDA80NjE1MzQ4NDU1NTU3NjcMDzU2MjIzMzYxMzAxMTcyNgwPMTQzNzE2ODMxMTg4MjI0DA8wNDM3ODQ3MzU2NDYzMzEMDzg1MDU3MzQ4ODEyMTYwMAwPMzEzMTA3MjIwMjM0MjMxDA83NTczMDcyNjE2NTMzODIMDzE2MTEwODYyNjY1Nzg2NAwPNTUyNzUxMzAyNDA3ODg1DA8yNDA2MTg2MDc1NjEwMzgMDzA0NTA2MzcwNzQyODQ0MgwPODUzNzA1NTIwNTYwNzY2DA8yNTI4NTI3NDU2NTQ4NDUMDzMyNzE3ODIxMjMwMjc1NAwPMjMxMzA4MTE0MzU3MjE3DA8zNDQ3NDU3ODY4MzIxNzQMDzI0NzM0NDc3MTI4ODE4NwwPMzM2ODEzODAxMTUxMzg3DA8xMTU4MjU1MDAxMzg2MjIMDzQxMTcxNDQ4MjAwMjAyNQwPMjQ0NDU1MjYyNjA4NjIyDA8wMDUzNDgzMzg3MjI1NzYMDzY1NzM2NzExMTc4NjYyMQwPMDE2MDU0MTIxODY3NDcwDA8xNDU2ODcwNDY4MDEzMjAMDzIwNTg1MjYyODE1NzA4NwwPNTIyNDY4MjQxMTQ2MTU1DA8zMzY2MjMyNTY4MzczMjUMDzAxMTMzNzg3Nzc0ODU3MgwPMTE0ODU4MDEzMjE4NTIzDA84Nzg1MDc0MjYwMDgwMTIMDzQ2MzM2NDE4NzE1NjYyMQwPNTcwMzMyMDYxMzI1MDUzDA83Nzg1MzA4ODQ2NTMyNjgMDzMzNjgxMjIxNDQ0Mjg3NwwPNjIxODI1MjYxMzMxODQzDA8yNTc1NzU3MTc3MzI1MDIMDzYyNDQ4MjU3NTI4NTAyMAwPMzQ4NDA1NjU2MTUyMjI3DA83NjY3MDAxMzU1MTQ1NzIMDzYzODM0NDE1MjUzMTcyNgwPNjAzMjEwODA1NzIyNzU1DA84NzAxNjcxMTM2ODU3MzYMDzYyMjI4NjQ0NjIyNTM4NgwPODcwNTgyNzYyNTg1MzUzDA8wNDMzNTg2MzAzMjU2ODcMDzc1ODI2NTA4NDQzNTA0MQwPMDM4MjM4NzI3ODUwNTQ2DA83MjYxMzQyMDgzMzYyMTEMDzU2ODM3NTIxMjU1MDgxMwwPNzM0MDQyMzExNDMwNzQ2DA83MDU3NDIwNTcyODU3MDQMDzg4NTA3NzAxNDYxMDc0MQwPODExNDI3NTA4NDgxMTIyDA80MzM2MzQ0NjQxNDU3NjQMDzc0MDAxMzY3NTc4MzE2MwwPODg1MzUwMzI2MTcwMDc4DA84NDQwMzY3MDI4MzYxMzQMDzc0ODA4NzY4NjA2NTcxMAwPODA3NDg3MTU2NzcyNjg3DA82NDY4NzIzNzU1MDU2NjcMDzI4NTE2Nzc0NTgyMDY1MwwPNDY2ODczNDUxODI0MzE4DA81NDg2NzIzMzA3MDgxODQMDzcyNjQ1NjgwMzI2MDI3NwwPMzE1MDM4ODAyMDY1NDgzDA83NjEzMjczNjM2NjM4ODEMDzQ2NjUzMzYyMzg1MjcwNAwPMTQ4ODE4MTQ4ODcxODE1DA82ODQzMDIzNDc2ODU4MDYMDzUzNjEyODQzMzMwMDgzNwwPNDAxMzQ4Njc0ODg3NzE0DA84NjQ1NzU4MDI4MTg4ODYMDzc2NTQ3NzIwMzIzMDEwMQwPMDA4MTI2MjA1Mzc2NzA0DA8wNjM4NjAwNTI4MjY0MTQMDzY4MDg0MTc0Mzc3MTQ2MwwPNDUyMzg3ODU4NjEzNzA4DA80MjYyMjA2NTMwNTIwNTMMDzc3NzM1NDE1ODQzMzg1NQwPODcyNDc2ODQyMzY4NjI3DA82NTQ3NDQ3NjMwNTMyNzUMDzg0NjU2MjMxMTYxNjYwOAwPNzEzMTUzNzM3MTE1MDMwDA8yMDQ2Nzg2MjczMTEzNjUMDzU4MTYwNDcxNzIwNjY0MQwPMTYxODIzMDIzMTUzNjEyDA83MTgwMDM4MDEwMzc4NjAMDzA2ODQyNDc0NTQwNjIzMQwPMzU0NzQyMzc2NDQ4MDU4DA8wODc4MzUyMjc4MTc3MTcMDzQ4ODYzNDEyNjExNjMxNAwPMDA0NDAxMDE1MDc2OTc1DA8wMDQ0MDEwMTE0Mzg0MDEMDzAwNDQwMTAxMTQxOTc0MAwPNjUxODAxNjc4NjQ1MDA0DA8zNjgyMDMwMDY0MDIzMjgMDzAwMDAwNTA2MTY2NTYwMAwPMzczNjczMTAyMjE1ODY3DA81NTAwNjE2NjQzNDcxNzAMDzI3MjgzODQ4NDUzNjcxNgwPMTUyMTM4MDIxNTg0MTAxDA8yMDMxMTA1NjM2MzM3MTgMDzQzNDI3MDYyNzMzODEwOAwPMzY4MTUxODcyMjE0Mzg0DA80NzI3MjI4NzExNTg4ODQMDzYxMzMxMjMwNjQ2MTA1MAwPODgxODgxNzEwNjI2NzI0DA8xNTIxNTE3MjA2MzEyMTcMDzA0MzUwNzIyNzU1NjQyNQwPMTY3ODAxMzIwNjIwMDQ4DA83MDQwMzU4MzEyNTQzMjIMDzQ3Mzg4MDM2MDg3ODE2MgwPMTE3NTQxODEwMDM2NTg1DA83NDIxMjQyMDUxNzYxMzIMDzEzMzg4MTI4NDM1MTUxMQwPNDE1ODcyMjUwNDg4MjYwDA8yMzUwNjIzNjcyODMzMzYMDzQyMTU3Mzc4MjMxMzcxNwwPODU2MjIxNjM2NTQyODM4DA82Mzc1NDI2MTI3MDUxMTcMDzg4ODU2NDAyODYzMTA3MQwPNzg4NDc3MjM1Njg0MjEzDA8zMzA0MjQxMjQ0ODM0MTgMDzI3NTQzNzExMTQ0NzIzNgwPNTMwNjQwNjM3ODIzMjQyDA8xMjExNDIzMjE1ODI0NDUMDzMxNDY2MzMzNjQxMDUzMgwPNzI1NzE2NDI4NDIzNTIwDA8zNjM4NTYyMDI0MjYxMTQMDzIzNTUxNTY2MzI0NDMwMwwPNjI4NzYxMjE4MDA4MjY4DA8xMzg0MDcxNzM0ODY3MTYMDzYzNjYxMzI2MTM3NjU4MgwPNTg3MTE2MjcyMDcxMTEwDA8yNDA1NDAzMDQzMjc3NDgMDzM0MTYxNDI2MDMxMDI3NAwPNDQwNTc4NzE0NDM1NjI0DA82MTc3NzY0MTYwNzUwMTMMDzA1NDE1MTAzNzI3NzYxNgwPNjMzNDU2MzM0NTQ0NjE2DA8wNjU3NzY1NTE4NDQzODIMDzIxMzMzMTU4NTY2ODE1NgwPNTgxNTAwMjY2ODY3NTIwDA81NDMzNDI4NDYwNzc0MzcMDzAzNjM3NTcyNzgwNjc1MAwPMDcyMzQ2ODg0NTU3MDg0DA8yMjcyNzYzNzIzODcyODYMDzEwNDg3NjUwNzUxNTU4MAwPODIxMDY1MTIzNjM4MjU1DA83MjMwNzc1ODA2MTE1MzEMDzI2MDYxNjMzNDIwNzU0NAwPMzU2NTY0NjM4MDYxNzQxDA8yNDY4NzMzNTA3MjgyODAMDzIyNTgwMjIwODI0NzcxMwwPNDQ4MTQ3MzEzNzAwODM0DA82MTYwMzg4NTgzODYxMDMMDzc4NjcyODgzODg2MjA3NQwPNjgwMTczNTYxNzgwMjg0DA81NjA4MzA4NDcyMDgxMDAMDzYyMjM0ODI0NjIzNTY3NAwPNDA3NDc4Mzg0MTExMzQxDA8xNDgxMDI1NzU3MzA3MjEMDzY1MDY1ODI2MTQ1MzE3MQwPMDgyMzU0MjIwNzQ2NzU3DA82MjQ4MjY2NDc4MTE1ODIMDzI3MjI2MTI3Mjc0NDA0NAwPNTIwMjIwNzgwMTc2MTY2DA81MDE1MzI4MDE0MDgxMjUMDzI1NDMwMzcwMDQyODgyOAwPNjc0NDc4ODY4MzQ4MjgxDA80NjMzMTY3NDU1MjcyNzUMDzQ3MTE4NTQ1MDIwMzEyMgwPNjM1NDgwMjg2MTEzNjUyDA82MTM0MzE4MjI4NTI3NzMMDzIyMTYzNDczNDg2MTA4NgwPNjE4NjU3NDcxNzUyMTE0DA8zMjg1MjU1MTIzMTgwNzAMDzQ2MTAzMTQ0NDAzMDMyNAwPNTc2ODU4NDI3MjE0MTg2DA82NjU0MDAwNjgwMjgxMzEMDzMwNTcyMzIxODQ0MTgxMwwPNTQ1MTg0NDYwMDg4NTQ2DA82ODExMDczNDM4Njg3MzgwDQYJKoZIhvcNAQEFBQADgYEAQq6zHN8SP8w71Yyq+cwwNQ2VZ4UMPRw/9JkW8ZUJWC4gae2lOfeyyjtN3akXaT+p+vETtfoPuCpPjvzPYoN1RZieyJnpSVzUrNw/lM6kSP5DjGg5K/WKWYad0VkQg56Kynp2YVX4yKUhBydd7iBeSGP900LAHRWCR++xq+r98mI= +MIDlet-Jar-RSA-SHA1: PRpjLFh81oAjHdPSZ/9lTe64ICSSHOk/MQMdRSqwsoGMSPID91mBRFEYOIQ/5nocEscacSi81o089Y0gMpEIP8V/EWBD7WDP6xqjC0gSyac+QjZm1Bu7Pzav+JC5J3KEkKOGy4wgQKJx02bArR/P9LhYAe7T6LVVFbfFyw2lhJA= diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/Empty.jad diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/EmptyLines.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/EmptyLines.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,15 @@ + + + + + + + + + + + +  +  + +  \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/FL_Rocks.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/FL_Rocks.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,6 @@ +MIDlet-Version: 1.0 +MIDlet-Vendor: Standing Still Limited +MIDlet-Jar-URL: http://195.114.231.97:7001/dls/delivery/ds/01AAvJ1WX3jmZsurMwoC/1/FL_Rocks.dm +MIDlet-Install-Notify: http://195.114.231.97:7001/dls/delivery/ds/01AAvJ1WX3jmZsurMwoC/2/FL_Rocks/status +MIDlet-Name: Rocks +MIDlet-Jar-Size: 28196 diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/NDRM.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/NDRM.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,10 @@ +MIDlet-Jar-URL: NDRM.jar +MIDlet-Install-Notify: http://uljava.gjmptw.de:8080/Index/Index/NDRM.jad? nstalled=NDRM_harmony +MIDlet-Name: DRMonitor +MIDlet-Vendor: m-internet.com Limited +MIDlet-Version: 1.0 +MIDlet-Jar-Size: 24472 +MIDlet-Icon: /icon.png +MIDlet-1: NDRM, /icon.png, ndrm.NDRMMIDlet + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/PlatformReqHTTP.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/PlatformReqHTTP.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,11 @@ +MIDlet-1: PlatformReqHTTP, , com.nokia.midp.test.securitytests.PlatformReqHTTP +MIDlet-Jar-Size: 2272 +MIDlet-Jar-URL: PlatformReqHTTP.jar +MIDlet-Name: PlatformReqHTTP +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +URL: http://tcktest3.extra.wirelessfuture.com:8080/axis/servlet/marika.GetServlet +MIDlet-Certificate-1-1: MIICPDCCAaUCBD+zblMwDQYJKoZIhvcNAQEEBQAwZTELMAkGA1UEBhMCZmkxEDAOBgNVBAgTB1Vua25vd24xEDAOBgNVBAcTB1RhbXBlcmUxDjAMBgNVBAoTBU5va2lhMQwwCgYDVQQLEwNKQ0YxFDASBgNVBAMTC01hcmlrYSBGYWJlMB4XDTAzMTExMzExNDMxNVoXDTEzMTExMDExNDMxNVowZTELMAkGA1UEBhMCZmkxEDAOBgNVBAgTB1Vua25vd24xEDAOBgNVBAcTB1RhbXBlcmUxDjAMBgNVBAoTBU5va2lhMQwwCgYDVQQLEwNKQ0YxFDASBgNVBAMTC01hcmlrYSBGYWJlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDsUJbYMb9GlP99Ax9n6m2AIAg+b2zC0u6h7OuLP+ls9OpI0sLtE1uBABCePloS0uKwmjtsdFc1zLyA/bpbi644xDw3PMIEhppeuKbLrog5uMk5wD1bFk5kJXYwYEorWVrFpLDmqFwEMig2a+Uhf7eTq1Ze/JgMHoUDXRo0eVsnFwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACuTqh37N34NnVzziuj66gmiE3rt7fKDTUCiqoHGfv7dpr4M0e8+y6FvtXtUXEajxX/DZbZuy0E9mZqmXsYyP2DDKbCg4cBJ23uOCffuYYVQFSnv4RQFVrQr4jMUHgX7wT5Ox4Ee8xcpsvWWfOgTY4zyEznOBUj6Uw4Xj7F+1yk8 +MIDlet-Jar-RSA-SHA1: UfQMdprNMMmJOk9INrJXe+Y06tnuL+zOJz4gJNEKnLPOzb6UwR2zczNddwfdBxENKbhw2RVp3GBQD2OZjB6UEU4kiw2S956RMlk5OVfqwXB5wvYPCePX6/8qgKSUmsBjNiEpXBGE2UT7MqbRApxmsf/OaDnzzd9Tlr9jUw+YU3w= diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/SimpleRMS8.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/SimpleRMS8.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-Name: SimpleRMS +Created-By: 1.5.0_12 (Sun Microsystems Inc.) +MIDlet-Vendor: Unknown +MIDlet-1: SimpleRMS, SimpleRMS.png, SimpleRMS +MIDlet-Version: 1.0 +MicroEdition-Profile: MIDP-2.0 + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/SimpleRMS8.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/SimpleRMS8.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,24 @@ +IGP-BS: MP3D=MP3D_BS;SCDA=SCDA_BS;ASP3=ASP3_BS;PSDK=PSDK_BS; +IGP-CATEGORIES: WN=WN;BS=BS;PROMO=0;OP=OP; +IGP-DEMOS: DEMOPG=DEL; +IGP-PROMOS: MB3D=MB3D;PB07=PB07;BBRK=BBRK; +IGP-VERSION: 2.5.0 +IGP-WN: RBPF=RBPF_WN;MMN=MMN_WN;BRBO=BRBO_WN;ASCR=ASCR_WN; +MIDLET-FULLVERSION-URL: http://advers.bestgamfts.com/redir/?from=D725&game=MD3D&op=GONG&game_type=DM&lg=EN +MIDlet-1: Sun Shines 3D Demo, /icon.png, HightS3D +MIDlet-Data-Size: 8192 +MIDlet-Description: Sun Shines 3D, Emulated sun shine in full 3D! +MIDlet-Icon: /icon.png +MIDlet-Jar-Size: 754864 +MIDlet-Jar-URL: SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.jar +MIDlet-Name: Sun Shines 3D Demo +MIDlet-Vendor: Celedons Two +MIDlet-Version: 1.0.4 +Nokia-MIDlet-Block-Uninstall: true +Nokia-MIDlet-Category: Applications +Nokia-MIDlet-UID-1: 0x20012293 +Nokia-Scalable-Icon: /icon.svg +Nokia-Scalable-Icon-MIDlet-1: /icon.svg +URL-OPERATOR: http://bestgamfts.hereis.com/redir/?from=D725&op=GONG&game_type=DM&lg=EN&ver=2.5.0 +URL-PT: 0 +URL-TEMPLATE-GAME: http://bestgamfts.hereis.com/redir/?from=D725&op=GONG&game=XXXX&game_type=DM&lg=EN&emb=1&ver=2.5.0 diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.zip Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.zip has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,14 @@ +MIDlet-1: TestMidlet, TestMidlet.png, TestMidlet +MIDlet-Jar-Size: 3674 +MIDlet-Jar-URL: TestMidlet.jar +MIDlet-Name: TestMidlet +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +: Empty attribute name + : White space only attribute name + : White space only attribute name 2 +a<>: separators in attribute name +bo: control characters in attribute name +c: diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet2.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet2.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,3 @@ +a<>: separators in attribute name +bo: control characters in attribute name +c: diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet3.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/TestMidlet3.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,9 @@ +MIDlet-1: TestMidlet, TestMidlet.png, TestMidlet +MIDlet-Jar-Size: 3674 +MIDlet-Jar-URL: TestMidlet.jar +MIDlet-Name: TestMidlet +MIDlet-Vendor: Nokia +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +o: attribute name starts with CTL characters +MIDlet-Version: 1.0 diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,32 @@ +MIDlet-1: Calculator, i.png,common.control.CalculatorMIDlet +MIDlet-Name: Calculator +MIDlet-Vendor: Nokia +MIDlet-Version: 1.5 +MIDlet-Jar-Size: 123 +Nokia-MIDlet-Category: Application +Nokia-UI-Enhancement: CanvasHasBackground +MIDlet-Data-Size: 150 +Vertical-Move-Delta: 10 +Vertical-Move-Period: 2 +Inline-Editing-Supported: true +Nokia-Platform: Nokia* +Nokia-MIDlet-Category: Games +Nokia-MIDlet-Name-en: Calculator +Nokia-MIDlet-Name-de: Rechner +Nokia-MIDlet-Name-es-ES: Calculadora +Nokia-MIDlet-Name-fr: Calculatrice +Nokia-MIDlet-Name-it: Calcolatrice +Nokia-MIDlet-Name-tr-TR: Hesaplamalar +Nokia-MIDlet-Name-nl-NL: Rekenmachine +Nokia-MIDlet-Name-pt-PT: Calculadora +Nokia-MIDlet-1-en: Calculator +Nokia-MIDlet-1-de: Rechner +Nokia-MIDlet-1-es-ES: Calculadora +Nokia-MIDlet-1-fr: Calculatrice +Nokia-MIDlet-1-it: Calcolatrice +Nokia-MIDlet-1-tr-TR: Hesaplamalar +Nokia-MIDlet-1-nl-NL: Rekenmachine +Nokia-MIDlet-1-pt-PT: Calculadora +MIDlet-Jar-Size: 84713 +MIDlet-Jar-URL: calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.jar +Nokia-MIDlet-Category: Best-Sellers diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.zip Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.zip has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceac00.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/ceac00.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ASCII +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/ceac00/bin/CEAC00.jar +MIDlet-Jar-Size: 1494 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ASCII,,USASCII.CEAC00_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=9F732D83F3B6AF98EB6577EA92366D95&tID=ceac00 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/cecn02.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/cecn02.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ùÓùÔùÕ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/cecn02/bin/CECN02.jar +MIDlet-Jar-Size: 1417 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ùÓùÔùÕ, ,Big5.CECN02_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=C9EABB544D0A47788C684D71A5A1C8C9&tID=cecn02 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/cecn06.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/cecn06.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ‚X‚Y‚Z‚[ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/cecn06/bin/CECN06.jar +MIDlet-Jar-Size: 1415 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ‚X‚Y‚Z‚[,,GBK.CECN06_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=79CD95B6352F8388513D6DDB699817CF&tID=cecn06 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceis00.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/ceis00.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,19 @@ +MIDlet-Name: ÷ùø + +MIDlet-Vendor: Nokia + +MIDlet-Version: 1.0 + +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/ceis00/bin/CEIS00.jar + +MIDlet-Jar-Size: 1450 + +MIDlet-1: ÷ùø, , ISO8859_1.CEIS00_01 + +MicroEdition-Configuration: CLDC-1.0 + +MicroEdition-Profile: MIDP-2.0 + +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=1D11AB7B2A1E2BC200165EB4CF554232&tID=ceis00 + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceis09.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/ceis09.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,11 @@ +MIDlet-Name: ¢£¤ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/ceis09/bin/CEIS09.jar +MIDlet-Jar-Size: 1457 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ¢£¤, ,ISO8859_15.CEIS09_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=7F914DE931B9D04E5F731F1ADCD163F6&tID=ceis09 + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceis14.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/ceis14.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ??» +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/ceis14/bin/CEIS14.jar +MIDlet-Jar-Size: 1456 +MIDlet-1: ??», ,ISO8859_16.CEIS14_01 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=336AA79A2E085DC20583865B841DBE6B&tID=ceis14 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/cejp04.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/cejp04.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,4 @@ +MIDlet"DNa"De:"D"D@!"D"D"D"D"D"D"DMIDlet"DVe"Ddo"D"D"DNoki"D"D"DMIDlet"DVe"D"Dio"D"D"D1."D"D"DMIDlet"DJa"D"DURL:"DCEJP04"Dja"D"D"DMIDlet"DJa"D"DSi"De:"D1439"D"DMIDlet"D1:"D"D@!"D"D"D"D"D"D"D"DJISX0208"DCEJP04_0"D"D"DMicr"DEditio"D"DCo"Dfigu"Datio"D"D"DCLDC"D1."D"D"DMicr"DEditio"D"DPr"Dfile"D"DMIDP"D2."D"D"D +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=CF0B99F53572032690A4D26E0CB83D02&tID=cejp04 + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceko01.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/ceko01.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,11 @@ +MIDlet-Name: ÍÎÏÐ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/ceko01/bin/CEKO01.jar +MIDlet-Jar-Size: 1429 +MIDlet-1: ÍÎÏÐ, ,KOI8_R.CEKO01_01 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=64E5A88BE41622497EDF05039C15F26C&tID=ceko01 + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/cems01.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/cems01.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ýþ€ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/cems01/bin/CEMS01.jar +MIDlet-Jar-Size: 1465 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ýþ€, ,windows_1250.CEMS01_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=3F627BEFBC6E8A0FB9510BA4EB42AE6F&tID=cems01 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/cems11.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/cems11.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,12 @@ +MIDlet-Name: ýþÿ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: http://195.134.231.83:7070/java-server/resources/man_jam/cems11/bin/CEMS11.jar +MIDlet-Jar-Size: 1467 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ýþÿ, ,windows_1256.CEMS11_01 +MIDlet-Install-Notify: http://195.134.231.83:7070/java-server/getresult.jsp?phone=3EBDFC736561D6876CF9ED93D3BF1B36&tID=cems11 + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceut03.jad Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut03.jad has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceut04.jad Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut04.jad has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceut08.jad Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut08.jad has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/ceut09.jad Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut09.jad has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/einstein_EN_FR_IT_DE_ES_N97_v2942.jar Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/einstein_EN_FR_IT_DE_ES_N97_v2942.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/javahelper.mif Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/javahelper.mif has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/mine_en_fr_de_it_es_ES_pt_PT.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/mine_en_fr_de_it_es_ES_pt_PT.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,33 @@ +MIDlet-Name: HecticMine +MIDlet-1: HecticMine,/images/icon.png,com.nokia.mid.appl.mine.common.MineMIDlet +Nokia-MIDlet-Category: Game +MIDlet-Icon: /images/icon.png +MIDlet-Vendor: Nokia +MIDlet-Version: 3.0.4 +MIDlet-Description: HecticMine +Period-Speed-ms: 100 +Vertical-Text-Offset: -2 +Nokia-Platform: Nokia* +Nokia-MIDlet-Name-en: +Nokia-MIDlet-Name-fr: Hectic Mine +Nokia-MIDlet-Name-de: Hectic Mine +Nokia-MIDlet-Name-it: Hectic Mine +Nokia-MIDlet-Name-es-ES: Hectic Mine +Nokia-MIDlet-Name-pt-PT: Hectic Mine +MIDlet-Jar-Size: 233616 +MIDlet-Jar-URL: mine_en_fr_de_it_es-ES_pt-PT.jar +MIDlet-Certificate-1-1: MIIDhDCCAmygAwIBAgIEQhnyeTANBgkqhkiG9w0BAQUFADAzMQ4wDAYDVQQKEwVOb2tpYTEhMB8 + GA1UEAxMYTm9raWEgQ29udGVudCBTaWduaW5nIENBMB4XDTA1MDIyMTE0Mzg0OVoXDTE2MDEwMjExMDUwNFowKDEOMAwGA1UEC + hMFTm9raWExFjAUBgNVBAMTDU5va2lhIENvbnRlbnQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK2PV8KLVSZ9OePe4k + 78GeQ0MiujbMd1wU9/xqhUFPst50drxhKzH+fMxvXgQOJ7viReolqWyq+ZmKpikGa+6SdqHysnVBhAqo9SLMNjlMfoOXVJ/lvM + gOk9k5oyVhBqFonw/FDDHmINC6w9o83e3gRq1C1m2T368yHbZtKifiVdAgMBAAGjggEtMIIBKTAOBgNVHQ8BAf8EBAMCB4AwEw + YDVR0lBAwwCgYIKwYBBQUHAwMwggEABgNVHSAEgfgwgfUwgfIGCysGAQQBXgExAQMBMIHiMIHRBggrBgEFBQcCAjCBxBqBwVJl + bGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgc3RhbmRhcm + QgdGVybXMgYW5kIGNvbmRpdGlvbnMgYW5kIGxpbWl0YXRpb25zIG9mIHVzZSwgYXMgZGV0YWlsZWQgaW4gdGhlIENlcnRpZmlj + YXRlIFByYWN0aWNlIFN0YXRlbWVudCBhdmFpbGFibGUgZnJvbSBOb2tpYS4wDAYIKwYBBQUHAgEWADANBgkqhkiG9w0BAQUFAA + OCAQEAvXtgKSffVjD52zHgUEFBBmXFq3QjgWNh8+cQTD23wnPYgfA4GBomMmznLiV3X03SOOI42DUUenQ9baPb78iU8AngF6xd + oOpFYlNtVka9YdD9mA0jtkoe4YEmykxPabSKDS50xVYgQG+5Y9H8nO9EyIiviP6drFmpRv635mf8Trlao63XIx4geoCMb9v8vS + dfs0louKB9DrjwFki/uHAQvRcVYnFNtAwHdri22UMx+GMppuY4/oPVvQqxgzfP+1AX/w2lgG7pi3lbVVUB4MLhG36kZIk8/J7B + lmATAL1/G5t19HR3+9doz5H94y3WQG7ClWN1eoQtjLlvLfZO/iu20g== +MIDlet-Jar-RSA-SHA1: ncuy0soEPUB4OPGHNyLn1ldXU2FvKvs0bUKGn/aPQefKI15aOlrczlapIWreUukE3ArQImU/xwxWh0 + Q8LROEULJKXRIYyoGCCblM6o6EPYn+YT+CDd/HV8JlHS6OO+sAV//9vWuo9orIwSwdKN8wGl0g1JmPl8LF8V5/MjSmyh8= \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testdata/utils/utf8bom.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testdata/utils/utf8bom.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,8 @@ +MIDlet-Name: ışÿ +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MIDlet-Jar-URL: utf8bom.jar +MIDlet-Jar-Size: 1417 +MicroEdition-Profile: MIDP-2.0 +MicroEdition-Configuration: CLDC-1.0 +MIDlet-1: ışÿ, ,UTF8BOM.UTF8BOM diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/build/build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/build/build.xml Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/build/readme.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/build/readme.txt Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,41 @@ +Building +-------- + +Requirements: + * Apache Ant. + * Apache Tomcat. (Tested with 6.0.26) + +Change "catalina.home" property in build.xml file to match your Tomcat +installation directory. Default is as follows: + + + +To compile the project and to create .war archive just use either of following +commands: + + ant + ant dist + +To compile only use: + + ant compile + +And to clean all build artifacts use: + + ant clean + +Deployment +---------- + +After build is complete, "installertest.war" file is created into the "build" +directory. Deploy it to Tomcat instance as any other .war file. For HTTP +authentication tests it is assumed that user named "guest" with password +"guest" and with role "guest" exits. + +Running the tests +----------------- + +Before running tests add option "-server=server_ip_address:port" to +NotificationPosterTest, DownloaderTest and InstallerEngineTest +test suites in jiut.bat (for S60) or in build.xml (for Linux) +in "javainstaller\installer\tsrc\build" directory. diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,8 @@ +MIDlet-1: HelloWorld, , helloworld.HelloWorld +MIDlet-Jar-Size: 1511 +MIDlet-Jar-URL: HelloWorld.jar +MIDlet-Name: HelloWorld +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld.jar Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_8mb.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_8mb.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,10 @@ +MIDlet-1: HelloWorld, , helloworld.HelloWorld +MIDlet-Jar-Size: 7867927 +MIDlet-Jar-URL: HelloWorld_8mb.jar +MIDlet-Name: HelloWorld_8mb +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +MIDlet-Install-Notify: http:///notify?tID=900_success +MIDlet-Delete-Notify: http:///notify?tID=912_deletion diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_8mb.jar Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_8mb.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_ota.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_ota.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,10 @@ +MIDlet-1: HelloWorld, , helloworld.HelloWorld +MIDlet-Jar-Size: 1511 +MIDlet-Jar-URL: HelloWorld.jar +MIDlet-Name: HelloWorld +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +MIDlet-Install-Notify: http:///notify?tID=900_success +MIDlet-Delete-Notify: http:///notify?tID=912_deletion diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_redirect.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_redirect.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,9 @@ +MIDlet-1: HelloWorld, , helloworld.HelloWorld +MIDlet-Jar-Size: 1719 +MIDlet-Jar-URL: http:///redirect?name=HelloWorld_redirect.jar +MIDlet-Name: HelloWorld_redirect +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 +MIDlet-Install-Notify: http:///notify?tID=900_success diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_redirect.jar Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_redirect.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/META-INF/MANIFEST.MF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/META-INF/MANIFEST.MF Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/META-INF/context.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/META-INF/context.xml Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/WEB-INF/web.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/WEB-INF/web.xml Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,73 @@ + + + + installertest + + + + redirect + redirect + com.nokia.mj.impl.installer.testserver.RedirectServlet + + + redirect + /redirect + + + + + jad + jad + com.nokia.mj.impl.installer.testserver.JadServlet + + + jad + *.jad + + + + + notify + notify + com.nokia.mj.impl.installer.testserver.NotifyServlet + + + notify + /notify + + + + + + /httpauth/* + + + guest + + + + BASIC + httpauth + + + + guest + + + diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/httpauth/HelloWorld_http_auth.jad --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/content/httpauth/HelloWorld_http_auth.jad Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,8 @@ +MIDlet-1: HelloWorld, , helloworld.HelloWorld +MIDlet-Jar-Size: 1721 +MIDlet-Jar-URL: HelloWorld_http_auth.jar +MIDlet-Name: HelloWorld_http_auth +MIDlet-Vendor: Nokia +MIDlet-Version: 1.0 +MicroEdition-Configuration: CLDC-1.0 +MicroEdition-Profile: MIDP-2.0 \ No newline at end of file diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/content/httpauth/HelloWorld_http_auth.jar Binary file javamanager/javainstaller/installer/tsrc/testserver/content/httpauth/HelloWorld_http_auth.jar has changed diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/JadServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/JadServlet.java Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,104 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +package com.nokia.mj.impl.installer.testserver; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.FileNotFoundException; +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class JadServlet + */ +public class JadServlet extends HttpServlet +{ + private static final long serialVersionUID = 1L; + + protected void processRequest(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + ServletContext context = getServletContext(); + String localPath = context.getRealPath(request.getServletPath()); + + response.setContentType("text/vnd.sun.j2me.app-descriptor"); + + BufferedReader in = null; + ServletOutputStream out = null; + + try + { + in = new BufferedReader(new FileReader(localPath)); + out = response.getOutputStream(); + + String line = in.readLine(); + while (line != null) + { + if (line.startsWith("MIDlet-Jar-URL:") + || line.startsWith("MIDlet-Install-Notify:") + || line.startsWith("MIDlet-Delete-Notify:")) + { + line = line.replaceAll("", request.getServerName() + + ":" + request.getServerPort()); + line = line.replaceAll("", + request.getContextPath()); + } + out.println(line); + line = in.readLine(); + } + } + catch (FileNotFoundException e) + { + response.sendError(HttpServletResponse.SC_NOT_FOUND, + request.getServletPath()); + } + finally + { + if (out != null) + { + out.close(); + } + if (in != null) + { + in.close(); + } + } + } + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + + protected void doPost(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + +} diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/NotifyServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/NotifyServlet.java Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +package com.nokia.mj.impl.installer.testserver; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class NotifyServlet + */ +public class NotifyServlet extends HttpServlet +{ + private static final long serialVersionUID = 1L; + + protected void processRequest(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + response.setStatus(HttpServletResponse.SC_OK); + } + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + + protected void doPost(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + +} diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/RedirectServlet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/installer/tsrc/testserver/javasrc/com/nokia/mj/impl/installer/testserver/RedirectServlet.java Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,84 @@ +/* +* Copyright (c) 2010 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: +* +*/ + +package com.nokia.mj.impl.installer.testserver; + +import java.io.IOException; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class RedirectServlet + */ +public class RedirectServlet extends HttpServlet +{ + private static final long serialVersionUID = 1L; + + protected void processRequest(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + int redirectCount = 1; + String redirectUrl = "http://" + request.getServerName() + ":" + + request.getServerPort() + + request.getContextPath(); + + String countParam = request.getParameter("count"); + String nameParam = request.getParameter("name"); + + if (countParam != null) + { + try + { + redirectCount = Integer.parseInt(countParam); + } + catch (NumberFormatException nfe) + { + } + } + + if (redirectCount > 1) + { + redirectUrl += request.getServletPath() + "?count=" + + (redirectCount - 1) + "&name="; + } + else + { + redirectUrl += "/"; + } + + redirectUrl += nameParam; + response.sendRedirect(redirectUrl); + } + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + + protected void doPost(HttpServletRequest request, + HttpServletResponse response) + throws ServletException, IOException + { + processRequest(request, response); + } + +} diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUi.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUi.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUi.java Wed Jun 23 18:07:10 2010 +0300 @@ -385,6 +385,13 @@ } /** + * Executes given Runnable synchronously in the UI thread. + */ + public void syncExec(Runnable aRunnable) + { + } + + /** * Writes an info log entry to JavaInstaller log. * * @param aMsg message to be logged diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUiFactory.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUiFactory.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/InstallerUiFactory.java Wed Jun 23 18:07:10 2010 +0300 @@ -50,9 +50,9 @@ installerUi = (InstallerUi)clazz.newInstance(); installerUi.init(aMode, aListener); } - catch (Exception ex) + catch (Throwable t) { - logError("Instantiating " + className + " failed", ex); + logError("Instantiating " + className + " failed", t); } return installerUi; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Wed Jun 23 18:07:10 2010 +0300 @@ -126,7 +126,6 @@ // Create a hashtable for icons. iImageTable = new Hashtable(); // Create a new thread to be the UI main thread. - iUiThreadExists = true; UIThreadSupport.startInUIThread(new Runnable() { public void run() @@ -145,6 +144,7 @@ private void uiMain() { log("uiMain: thread started"); + iUiThreadExists = true; try { // Create the necessary views. @@ -994,6 +994,14 @@ } /** + * Executes given Runnable synchronously in the UI thread. + */ + public void syncExec(Runnable aRunnable) + { + iParent.getDisplay().syncExec(aRunnable); + } + + /** * Returns string title basing on mode of this InstallerUi. */ protected String getTitle() diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Wed Jun 23 18:07:10 2010 +0300 @@ -62,6 +62,8 @@ */ public class InstallerUiEswt extends InstallerUi { + /** Disable UI temporarily. */ + private static final boolean DISABLE_UI = true; /** Default shell style. */ private static final int SHELL_STYLE = SWT.BORDER | SWT.APPLICATION_MODAL | SWT.ON_TOP; @@ -135,7 +137,6 @@ // Create a hashtable for icons. iImageTable = new Hashtable(); // Create a new thread to be the UI main thread. - iUiThreadExists = true; UIThreadSupport.startInUIThread(new Runnable() { public void run() @@ -154,6 +155,7 @@ private void uiMain() { log("uiMain: thread started"); + iUiThreadExists = true; try { // Create the necessary views. @@ -463,7 +465,7 @@ public void updateProgress(int aProgress) { super.updateProgress(aProgress); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. if (!isUiReady()) { return; @@ -510,7 +512,7 @@ public void ended() { super.ended(); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. if (!isUiReady()) { return; @@ -555,7 +557,7 @@ public void started(DownloadInfo aDownloadInfo) { super.started(aDownloadInfo); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. if (!isUiReady()) { return; @@ -582,7 +584,7 @@ public void updateProgress(DownloadInfo aDownloadInfo) { super.updateProgress(aDownloadInfo); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. if (!isUiReady()) { return; @@ -632,7 +634,7 @@ public void ended(DownloadInfo aDownloadInfo) { super.ended(aDownloadInfo); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. if (!isUiReady()) { return; @@ -659,7 +661,7 @@ public void setOcspIndicator(boolean aOn) { super.setOcspIndicator(aOn); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. waitForUi(); if (!isUiReady()) { @@ -760,7 +762,7 @@ public void error(InstallerExceptionBase aInstallerException) { super.error(aInstallerException); - if (true) return; // Disable UI temporarily. + if (DISABLE_UI) return; // Disable UI temporarily. waitForUi(); if (!isUiReady()) { @@ -857,7 +859,7 @@ */ public boolean confirm(String aAppName, ConfirmData aConfirmData) { - if (true) return true; // Disable UI temporarily. + if (DISABLE_UI) return true; // Disable UI temporarily. waitForUi(); if (!isUiReady()) { return true; @@ -896,7 +898,7 @@ */ public String[] getUsernamePassword(String aUrl) { - if (true) return new String[] { "", "" }; // Disable UI temporarily. + if (DISABLE_UI) return new String[] { "", "" }; // Disable UI temporarily. waitForUi(); if (!isUiReady()) { @@ -952,7 +954,7 @@ */ public boolean launchAppQuery(LaunchAppInfo aLaunchAppInfo) { - if (true) return false; // Disable UI temporarily. + if (DISABLE_UI) return false; // Disable UI temporarily. waitForUi(); if (!isUiReady() || iConfirmationsCanceled || getInstallInfo() == null) { @@ -974,19 +976,31 @@ }); } boolean result = iLaunchAppQueryView.launchAppQuery(aLaunchAppInfo); - iParent.getDisplay().syncExec(new Runnable() + iLaunchAppQueryView.dispose(); + iLaunchAppQueryView = null; + if (!result) { - public void run() + iParent.getDisplay().syncExec(new Runnable() { - iParent.dispose(); - } - }); - iLaunchAppQueryView = null; + public void run() + { + iParent.dispose(); + } + }); + } log("LaunchAppQuery returns " + result + " for " + aLaunchAppInfo); return result; } /** + * Executes given Runnable synchronously in the UI thread. + */ + public void syncExec(Runnable aRunnable) + { + iParent.getDisplay().syncExec(aRunnable); + } + + /** * Hides or unhides InstallerUi. */ public void hide(boolean aHide) diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Wed Jun 23 18:07:10 2010 +0300 @@ -18,12 +18,9 @@ package com.nokia.mj.impl.installer.ui.eswt2; -import com.nokia.mj.impl.installer.ui.InstallInfo; import com.nokia.mj.impl.installer.ui.LaunchAppInfo; -import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Button; /** * LaunchAppQueryView asks from the user if the installed @@ -31,9 +28,6 @@ */ public class LaunchAppQueryView extends ConfirmationViewBase { - private LaunchAppInfo iLaunchAppInfo = null; - private Button iDefaultButton = null; - /** Constructor */ protected LaunchAppQueryView() { @@ -58,7 +52,6 @@ return false; } - iLaunchAppInfo = aLaunchAppInfo; // Use confirm() from super class to display the view. boolean result = confirm(); // Return the result to the client. @@ -81,26 +74,4 @@ { // User selection data is initialized in button listeners. } - - /** - * Returns SWT style for this view. - */ - protected int getStyle() - { - return SWT.V_SCROLL; - } - - /** - * Called after view and commands have been created. Subclasses - * can overrride this method to set focus to their own default - * commands. - */ - protected void setDefaultCommand() - { - if (iDefaultButton != null) - { - iDefaultButton.setFocus(); - getShell().setDefaultButton(iDefaultButton); - } - } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Wed Jun 23 18:07:10 2010 +0300 @@ -169,13 +169,17 @@ { public void run() { + // Set horizontalSpan to 2 for one button, + // and to 1 for one two buttons. + int horizontalSpan = 2; + GridData gridData = null; + /* iHideCommand = new Button(getCommandComposite(), SWT.PUSH); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalSpan = 1; + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = horizontalSpan; iHideCommand.setLayoutData(gridData); iHideCommand.setText(InstallerUiTexts.get(InstallerUiTexts.HIDE)); - iHideCommand.addSelectionListener - (new SelectionListener() + iHideCommand.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent aEvent) { @@ -187,15 +191,15 @@ } }); addSoftKeyListenerFor(iHideCommand); + */ iCancelCommand = new Button(getCommandComposite(), SWT.PUSH); gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalSpan = 1; + gridData.horizontalSpan = horizontalSpan; iCancelCommand.setLayoutData(gridData); iCancelCommand.setText( InstallerUiTexts.get(InstallerUiTexts.CANCEL)); - iCancelCommand.addSelectionListener - (new SelectionListener() + iCancelCommand.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent aEvent) { @@ -234,8 +238,11 @@ public void run() { getShell().setDefaultButton(null); - iHideCommand.dispose(); - iHideCommand = null; + if (iHideCommand != null) + { + iHideCommand.dispose(); + iHideCommand = null; + } iCancelCommand.dispose(); iCancelCommand = null; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Wed Jun 23 18:07:10 2010 +0300 @@ -658,7 +658,7 @@ GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = aColumns; gridData.horizontalAlignment = SWT.CENTER; - gridData.verticalAlignment = SWT.CENTER; + gridData.verticalAlignment = SWT.TOP; label.setLayoutData(gridData); return label; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/javasifplugin/build/javasifplugin.mmp --- a/javamanager/javainstaller/javasifplugin/build/javasifplugin.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/javasifplugin/build/javasifplugin.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -52,9 +52,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../inc -SYSTEMINCLUDE ../../../../inc -SYSTEMINCLUDE /epoc32/include/mw/usif - // Libraries LIBRARY apgrfx.lib LIBRARY apmime.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/javasifplugin/inc/javasifplugin.h --- a/javamanager/javainstaller/javasifplugin/inc/javasifplugin.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/javasifplugin/inc/javasifplugin.h Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -222,6 +222,22 @@ void CopyFilesIfNeededL(TFileName &aFileName); /** + * Uses the information in aArguments to create the correct command line for + * Java Installer. + * + * @param aCommandLine the buffer to be filled with command line arguments + * @param aArguments The array of opaque params for the plug-in. An empty + * array may be passed. The following param is defined for the "SCOMO Install + * Inactive" operation: + * Name: InstallInactive, Type: Int, Value: ETrue + * If a plug-in receives this param, it must install a component normally but the SCOMO + * State should remain EDeactivated. + */ + void BuildInstallCommandLine( + TBuf<1536>& aCommandLine, + const COpaqueNamedParams& aArguments); + + /** * If Java Installer is already running, set error category EInstallerBusy etc * to aResults, set aStatus to KErrAlreadyExists and return ETrue * @param[in][out] aResults diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/javasifplugin/inc/resultsserver.h --- a/javamanager/javainstaller/javasifplugin/inc/resultsserver.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/javasifplugin/inc/resultsserver.h Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of the License "Eclipse Public License v1.0" @@ -71,6 +71,8 @@ private: void clearData(); void setComponentInfoL(); + void resetDefaultErrorValues(); + void setCommonErrorInfo(int aResult); private: int iRunning; // 1 if running, 0 if not running diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/javasifplugin/src/javasifplugin.cpp --- a/javamanager/javainstaller/javasifplugin/src/javasifplugin.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/javasifplugin/src/javasifplugin.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 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" @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "comms.h" #include "commsmessage.h" @@ -318,180 +318,7 @@ commandLine.Append(_L(" -silent")); } - TBool paramFound = EFalse; - TInt intValue = 0; - TDesC desValue = KNullDesC; - - // KSifInParam_Drive -> -drive=install_target_drive (A, B, C, ..., Z) - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_Drive, intValue)); - if (paramFound) - { - // Value 0 is 'A:' drive and value 25 is 'Z:' drive - if ((intValue > -1) && (intValue < 26)) - { - commandLine.Append(_L(" -drive=")); - TChar drive('A'); - drive += intValue; - commandLine.Append(drive); - } - else - { - WLOG1(EJavaInstaller, - "CJavaSifPlugin::Install Ignoring illegal KSifInParam_Drive param (value %d)", - intValue); - } - } - - // KSifInParam_PerformOCSP Yes/No/AskUser -> -ocsp=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_PerformOCSP, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -ocsp=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -ocsp=no")); - } - // AskUser is not supported - } - - // KSifInParam_IgnoreOCSPWarnings Yes/No/AskUser -> -ignore_ocsp_warnings=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_IgnoreOCSPWarnings, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -ignore_ocsp_warnings=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -ignore_ocsp_warnings=no")); - } - // AskUser is not supported - } - - // KSifInParam_AllowUpgrade Yes/No/AskUser -> -upgrade=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowUpgrade, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -upgrade=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -upgrade=no")); - } - // AskUser is not supported - } - - - // TODO: activate this code block when KSifInParam_UpgradeData has been - // defined in sifcommon.h -/* - // KSifInParam_UpgradeData Yes/No/AskUser -> -upgrade_data=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_UpgradeData, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -upgrade_data=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -upgrade_data=no")); - } - // AskUser is not supported - } -*/ - - // KSifInParam_AllowUntrusted Yes/No/AskUser -> -untrusted=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowUntrusted, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -untrusted=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -untrusted=no")); - } - // AskUser is not supported - } - - // KSifInParam_AllowOverwrite Yes/No/AskUser -> -overwrite=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowOverwrite, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -overwrite=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -overwrite=no")); - } - // AskUser is not supported - } - - // KSifInParam_AllowDownload Yes/No/AskUser -> -download=yes|no - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowDownload, intValue)); - if (paramFound) - { - if (intValue == 0) // Yes - { - commandLine.Append(_L(" -download=yes")); - } - else if (intValue == 1) // No - { - commandLine.Append(_L(" -download=no")); - } - // AskUser is not supported - } - - // KSifInParam_UserName -> -username=download_username - TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_UserName)); - if (desValue.Length() > 0) - { - commandLine.Append(_L(" -username=")); - commandLine.Append(desValue); - } - - // KSifInParam_Password -> -password=download_password - TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_Password)); - if (desValue.Length() > 0) - { - commandLine.Append(_L(" -password=")); - commandLine.Append(desValue); - } - - // KSifInParam_SourceUrl -> -sourceurl=original (HTTP) URL of the JAD or JAR file - TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_SourceUrl)); - if (desValue.Length() > 0) - { - commandLine.Append(_L(" -sourceurl=")); - commandLine.Append(desValue); - } - - // KSifInParam_IAP -> -iap=IAP_ID (internet access point id) - TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_IAP, intValue)); - if (paramFound) - { - commandLine.Append(_L(" -iap=")); - commandLine.AppendNum(intValue); - } - - // KSifInParam_Charset -> -charset=Internet-standard character set name - TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_Charset)); - if (desValue.Length() > 0) - { - commandLine.Append(_L(" -charset=")); - commandLine.Append(desValue); - } - + BuildInstallCommandLine(commandLine, aArguments); // Ask Java Installer to send installation results back // as Comms message. 11000 is IPC_ADDRESS_JAVA_SIF_PLUGIN_C Comms endpoint @@ -836,6 +663,189 @@ return; } + +void CJavaSifPlugin::BuildInstallCommandLine( + TBuf<1536>& aCommandLine, + const COpaqueNamedParams& aArguments) +{ + TBool paramFound = EFalse; + TInt intValue = 0; + TDesC desValue = KNullDesC; + + // KSifInParam_Drive -> -drive=install_target_drive (A, B, C, ..., Z) + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_Drive, intValue)); + if (paramFound) + { + // Value 0 is 'A:' drive and value 25 is 'Z:' drive + if ((intValue > -1) && (intValue < 26)) + { + aCommandLine.Append(_L(" -drive=")); + TChar drive('A'); + drive += intValue; + aCommandLine.Append(drive); + } + else + { + WLOG1(EJavaInstaller, + "CJavaSifPlugin::Install Ignoring illegal KSifInParam_Drive param (value %d)", + intValue); + } + } + + // KSifInParam_PerformOCSP Yes/No/AskUser -> -ocsp=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_PerformOCSP, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -ocsp=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -ocsp=no")); + } + // AskUser is not supported + } + + // KSifInParam_IgnoreOCSPWarnings Yes/No/AskUser -> -ignore_ocsp_warnings=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_IgnoreOCSPWarnings, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -ignore_ocsp_warnings=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -ignore_ocsp_warnings=no")); + } + // AskUser is not supported + } + + // KSifInParam_AllowUpgrade Yes/No/AskUser -> -upgrade=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowUpgrade, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -upgrade=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -upgrade=no")); + } + // AskUser is not supported + } + + + // TODO: activate this code block when KSifInParam_UpgradeData has been + // defined in sifcommon.h +/* + // KSifInParam_UpgradeData Yes/No/AskUser -> -upgrade_data=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_UpgradeData, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -upgrade_data=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -upgrade_data=no")); + } + // AskUser is not supported + } +*/ + + // KSifInParam_AllowUntrusted Yes/No/AskUser -> -untrusted=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowUntrusted, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -untrusted=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -untrusted=no")); + } + // AskUser is not supported + } + + // KSifInParam_AllowOverwrite Yes/No/AskUser -> -overwrite=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowOverwrite, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -overwrite=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -overwrite=no")); + } + // AskUser is not supported + } + + // KSifInParam_AllowDownload Yes/No/AskUser -> -download=yes|no + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_AllowDownload, intValue)); + if (paramFound) + { + if (intValue == 0) // Yes + { + aCommandLine.Append(_L(" -download=yes")); + } + else if (intValue == 1) // No + { + aCommandLine.Append(_L(" -download=no")); + } + // AskUser is not supported + } + + // KSifInParam_UserName -> -username=download_username + TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_UserName)); + if (desValue.Length() > 0) + { + aCommandLine.Append(_L(" -username=")); + aCommandLine.Append(desValue); + } + + // KSifInParam_Password -> -password=download_password + TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_Password)); + if (desValue.Length() > 0) + { + aCommandLine.Append(_L(" -password=")); + aCommandLine.Append(desValue); + } + + // KSifInParam_SourceUrl -> -sourceurl=original (HTTP) URL of the JAD or JAR file + TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_SourceUrl)); + if (desValue.Length() > 0) + { + aCommandLine.Append(_L(" -sourceurl=")); + aCommandLine.Append(desValue); + } + + // KSifInParam_IAP -> -iap=IAP_ID (internet access point id) + TRAP_IGNORE(paramFound = aArguments.GetIntByNameL(KSifInParam_IAP, intValue)); + if (paramFound) + { + aCommandLine.Append(_L(" -iap=")); + aCommandLine.AppendNum(intValue); + } + + // KSifInParam_Charset -> -charset=Internet-standard character set name + TRAP_IGNORE(desValue = aArguments.StringByNameL(KSifInParam_Charset)); + if (desValue.Length() > 0) + { + aCommandLine.Append(_L(" -charset=")); + aCommandLine.Append(desValue); + } + + return; +} + + TBool CJavaSifPlugin::ExitIfJavaInstallerRunning( COpaqueNamedParams& aResults, TRequestStatus& aStatus) diff -r 85266cc22c7f -r f40128debb5d javamanager/javainstaller/javasifplugin/src/resultsserver.cpp --- a/javamanager/javainstaller/javasifplugin/src/resultsserver.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javainstaller/javasifplugin/src/resultsserver.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of the License "Eclipse Public License v1.0" @@ -11,15 +11,18 @@ * * Contributors: * -* Description: Comms server, -* part of Java platform 2.0 javarestoreconverter process +* Description: Comms server, part of Java Sif plugin. +* When started in 'commsresult' mode from Java Sif plugin +* Java Installer sends the results of the operation +* it executes (install, uninstall or component info) +* to this server. * */ #include #include -#include +#include #include "comms.h" #include "javasymbianoslayer.h" @@ -69,8 +72,10 @@ "ResultsServer::start iResults.AddIntL ExtendedErrCode err %d", err); } - // TODO: return also localized error message from usif + // TODO: return also localized error message (KSifOutParam_ErrMessage and + // perhaps also KSifOutParam_ErrMessageDetails) from usif // common localization file after the localized strings are available + iRunning = 1; iComms.registerDefaultListener(this); @@ -145,58 +150,8 @@ if (KErrNone != result) { - // return common error information - TRAP(err, iResults.AddIntL(KSifOutParam_ErrCode, result)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddIntL ErrCode err %d", err); - } - - TRAP(err, iResults.AddIntL( - KSifOutParam_ErrCategory, iIntPairs[L"error-category"])); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddIntL ErrCategory err %d", - err); - } - - HBufC *message = wstringToBuf(iStringPairs[L"error-message"]); - if (message == NULL) - { - ELOG(EJavaInstaller, - "ResultsServer::processMessage iResults.wstringToBuf returned NULL "); - } - else - { - TRAP(err, iResults.AddStringL(KSifOutParam_ErrMessage, *message)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddStringL ErrMessage err %d", - err); - } - delete message; - } - - message = wstringToBuf(iStringPairs[L"error-details"]); - if (message == NULL) - { - ELOG(EJavaInstaller, - "ResultsServer::processMessage iResults.wstringToBuf 2 returned NULL "); - } - else - { - TRAP(err, iResults.AddStringL(KSifOutParam_ErrMessageDetails, *message)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddStringL ErrMessageDetails " - "err %d", err); - } - delete message; - } + // return common error information; + setCommonErrorInfo(result); if (INSTALL_OPERATION == operation) { @@ -221,20 +176,7 @@ // Overwrite (reset) the default error values set for the case where no // InstallerResultMessage is never received - TRAPD(err, iResults.AddIntL(KSifOutParam_ErrCategory, 0)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddIntL ErrCategory err %d", err); - } - - TRAP(err, iResults.AddIntL(KSifOutParam_ErrCode, 0)); - if (KErrNone != err) - { - ELOG1(EJavaInstaller, - "ResultsServer::processMessage iResults.AddIntL ErrCode err %d", err); - } - + resetDefaultErrorValues(); if (INSTALL_OPERATION == operation) { @@ -299,6 +241,97 @@ } +/** + * Set common error information. + * Note that most of the information is in member variables + * iIntPairs and iStringPairs + * + * @param aResult the error code to be set + */ +void ResultsServer::setCommonErrorInfo(int aResult) +{ + // return common error information + TRAPD(err, iResults.AddIntL(KSifOutParam_ErrCode, aResult)); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.AddIntL ErrCode err %d", err); + } + + TRAP(err, iResults.AddIntL( + KSifOutParam_ErrCategory, iIntPairs[L"error-category"])); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.AddIntL ErrCategory err %d", + err); + } + + HBufC *message = wstringToBuf(iStringPairs[L"error-message"]); + if (message == NULL) + { + ELOG(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.wstringToBuf returned NULL "); + } + else + { + TRAP(err, iResults.AddStringL(KSifOutParam_ErrMessage, *message)); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.AddStringL ErrMessage err %d", + err); + } + delete message; + } + + message = wstringToBuf(iStringPairs[L"error-details"]); + if (message == NULL) + { + ELOG(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.wstringToBuf 2 returned NULL "); + } + else + { + TRAP(err, iResults.AddStringL(KSifOutParam_ErrMessageDetails, *message)); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::setCommonErrorInfo iResults.AddStringL ErrMessageDetails " + "err %d", err); + } + delete message; + } +} + + +/** + * Overwrite (reset) the default error values to 'no error'. + * The default error values were originally set for the case + * where no InstallerResultMessage is never received and we must + * return sensible error information. + */ +void ResultsServer::resetDefaultErrorValues() +{ + TRAPD(err, iResults.AddIntL(KSifOutParam_ErrCategory, 0)); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::resetDefaultErrorValues iResults.AddIntL ErrCategory err %d", err); + } + + TRAP(err, iResults.AddIntL(KSifOutParam_ErrCode, 0)); + if (KErrNone != err) + { + ELOG1(EJavaInstaller, + "ResultsServer::resetDefaultErrorValues iResults.AddIntL ErrCode err %d", err); + } + + // TODO: reset also localized error message KSifOutParam_ErrMessage and + // perhaps also KSifOutParam_ErrMessageDetails if they have been set in start() +} + + void ResultsServer::clearData() { iIntPairs.clear(); diff -r 85266cc22c7f -r f40128debb5d javamanager/javalauncher/src.s60/javalauncher.cpp --- a/javamanager/javalauncher/src.s60/javalauncher.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javalauncher/src.s60/javalauncher.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -92,7 +92,7 @@ JavaStorageApplicationList_t foundEntries; - // Get MIDlet-n from APPLICATION_PACKAGE_ATTRIBUTES_TABLE based on + // Get MIDlet-n from APPLICATION_PACKAGE_ATTRIBUTES_TABLE based on // PACKAGE_ID and NAME. attribute.setEntry(ID, aPackageId); findPattern.insert(attribute); @@ -107,7 +107,7 @@ return KErrNotFound; } - // Found the MIDlet-n argument. Now getting the MIDlet name and + // Found the MIDlet-n argument. Now getting the MIDlet name and // main class. Name is the first argument and main class is the last // in the comma separated list. std::wstring value = foundEntries.front().begin()->entryValue(); @@ -549,6 +549,10 @@ err = getUidFromCommandLine(cmdLineBuf, uid); if (KErrNone != err) { + ELOG1WSTR(EJavaCaptain, + "JavaLauncher: process command line was %s", + (wchar_t *)(cmdLineBuf.PtrZ())); + CleanupStack::PopAndDestroy(pBufCmdLine); CleanupStack::PopAndDestroy(commandLine); return err; @@ -773,6 +777,8 @@ "javalauncher: OMJ app launch: Exception %s caught", e.what()); } + delete pBufCmdLine; + return err; } diff -r 85266cc22c7f -r f40128debb5d javamanager/javamanager.pro --- a/javamanager/javamanager.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javamanager.pro Wed Jun 23 18:07:10 2010 +0300 @@ -22,7 +22,6 @@ SUBDIRS += javaregistry SUBDIRS += javabackup SUBDIRS += javasettings -BLD_INF_RULES.prj_extensions += "$${LITERAL_HASH}include \"javasidchecker/build/bld.inf\"" BLD_INF_RULES.prj_extensions += "$${LITERAL_HASH}include \"javarecognizer/build/bld.inf\"" BLD_INF_RULES.prj_extensions += "$${LITERAL_HASH}include \"javaappschemeplugin/build/bld.inf\"" BLD_INF_RULES.prj_extensions += "prj_extensions" diff -r 85266cc22c7f -r f40128debb5d javamanager/javarecognizer/build/recjar.mmp --- a/javamanager/javarecognizer/build/recjar.mmp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javarecognizer/build/recjar.mmp Wed Jun 23 18:07:10 2010 +0300 @@ -32,7 +32,11 @@ // Use bytepair compression to enable code paging PAGED +APP_LAYER_SYSTEMINCLUDE + USERINCLUDE ../inc +USERINCLUDE ../../../inc + SOURCEPATH ../src SOURCE recjar.cpp @@ -40,9 +44,6 @@ TARGET recjar.rsc END -SYSTEMINCLUDE ../../../inc -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom LIBRARY euser.lib apmime.lib efsrv.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javaregistry/build/eabi/javaregistryclientu.def --- a/javamanager/javaregistry/build/eabi/javaregistryclientu.def Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javaregistry/build/eabi/javaregistryclientu.def Wed Jun 23 18:07:10 2010 +0300 @@ -209,4 +209,12 @@ _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17UsedUserDiskSpaceEv @ 208 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry14IsPreinstalledEv @ 209 NONAME _ZNK4Java25CJavaRegistryPackageEntry14IsPreinstalledEv @ 210 NONAME + _ZN4Java14CJavaAttributeD0Ev @ 211 NONAME + _ZN4Java14CJavaAttributeD1Ev @ 212 NONAME + _ZN4Java14CJavaAttributeD2Ev @ 213 NONAME + _ZN4Java18CJavaRegistryEntryD0Ev @ 214 NONAME + _ZN4Java18CJavaRegistryEntryD1Ev @ 215 NONAME + _ZN4Java18CJavaRegistryEntryD2Ev @ 216 NONAME + _ZThn4_N4Java14CJavaAttributeD0Ev @ 217 NONAME + _ZThn4_N4Java14CJavaAttributeD1Ev @ 218 NONAME diff -r 85266cc22c7f -r f40128debb5d javamanager/javaregistry/client/src/javaattribute.cpp --- a/javamanager/javaregistry/client/src/javaattribute.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javaregistry/client/src/javaattribute.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -92,7 +92,7 @@ // --------------------------------------------------------------------------- // CJavaAttribute::~MJavaAttribute // --------------------------------------------------------------------------- -CJavaAttribute::~CJavaAttribute() +EXPORT_C CJavaAttribute::~CJavaAttribute() { delete iName; delete iValue; diff -r 85266cc22c7f -r f40128debb5d javamanager/javaregistry/client/src/javaregistryentry.cpp --- a/javamanager/javaregistry/client/src/javaregistryentry.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javaregistry/client/src/javaregistryentry.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -115,7 +115,7 @@ // CJavaRegistryEntry::~CJavaRegistryEntry // --------------------------------------------------------------------------- // -CJavaRegistryEntry::~CJavaRegistryEntry() +EXPORT_C CJavaRegistryEntry::~CJavaRegistryEntry() { if (iWritableEntry) { diff -r 85266cc22c7f -r f40128debb5d javamanager/javaregistry/client/src/writeablejavaregistry.cpp --- a/javamanager/javaregistry/client/src/writeablejavaregistry.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javaregistry/client/src/writeablejavaregistry.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -414,7 +414,7 @@ } } } - catch (ExceptionBase) + catch (ExceptionBase& ee) { ELOG1WSTR(EJavaStorage, "MediaId conversion failed: '%s'", value); } diff -r 85266cc22c7f -r f40128debb5d javamanager/javasettings/appsettingsview_qt/build/javaapplicationsettingsview.pro --- a/javamanager/javasettings/appsettingsview_qt/build/javaapplicationsettingsview.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javasettings/appsettingsview_qt/build/javaapplicationsettingsview.pro Wed Jun 23 18:07:10 2010 +0300 @@ -15,8 +15,9 @@ # TEMPLATE = lib TARGET = javaapplicationsettingsview -CONFIG += qt hb stl plugin -LIBS += -ljavastorage -lcmapplsettingsui -ljavaconnectionmanager -lqtbearer -ljavautils +CONFIG += qt hb stl plugin mobility +MOBILITY += bearer +LIBS += -ljavastorage -lcmapplsettingsui -ljavaconnectionmanager -ljavautils TRANSLATIONS = javaruntimeapplicationsettings.ts INCLUDEPATH += ../inc ../../../../inc diff -r 85266cc22c7f -r f40128debb5d javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.cpp --- a/javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -142,7 +142,7 @@ if (mainForm) { // do the connect for the main form - iPublicView->connect(mainForm, SIGNAL(activated(const QModelIndex)), + iPublicView->connect(mainForm, SIGNAL(itemShown(const QModelIndex)), iPublicView, SLOT(_q_dataItemDisplayed(const QModelIndex))); // set the form as view's widget @@ -231,7 +231,7 @@ localizedSettingsNames[QString::fromStdWString(BROADCAST_SETTINGS)] = QString(hbTrId("txt_java_sett_setlabel_broadcast")); localizedSettingsNames[QString::fromStdWString(NFC_WRITE_ACCESS_SETTINGS)] = QString(hbTrId("txt_java_sett_setlabel_nfc_write_access")); localizedSettingsNames[QString::fromStdWString(URL_START_SETTINGS)] = QString(hbTrId("txt_java_sett_setlabel_url_start")); - vector allSecuritySettings = readFromStorage(FUNCTION_GROUP, MIDP_FUNC_GRP_SETTINGS_TABLE); + vector allSecuritySettings = readFromStorage(FUNCTION_GROUP, MIDP_FUNC_GRP_SETTINGS_TABLE, MIDP_PERMISSIONS_TABLE); // sort the security settings according to how they should be displayed std::sort(allSecuritySettings.begin(), allSecuritySettings.end(), AscendingSort()); QHash settingsIndexes; @@ -965,7 +965,7 @@ return value; } -vector JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::string& aTableName) +vector JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::string& aPrimaryTableName, const std::string& aSecondaryTableName) { vector values; @@ -991,7 +991,7 @@ settingsNamesIndexes[QString::fromStdWString(NFC_WRITE_ACCESS_SETTINGS)] = 15; settingsNamesIndexes[QString::fromStdWString(URL_START_SETTINGS)] = 16; int last_index = 16; - + JavaStorageApplicationEntry_t query; JavaStorageApplicationList_t queryResult; JavaStorageEntry attr; @@ -1002,8 +1002,10 @@ try { - iStorage->search(aTableName, query, queryResult); + iStorage->search(aPrimaryTableName, query, queryResult); + JavaStorageApplicationList_t::const_iterator iterator; + JavaStorageApplicationList_t secondaryQueryResult; for (iterator = queryResult.begin(); iterator != queryResult.end(); iterator++) { std::wstring name = L""; @@ -1011,22 +1013,32 @@ JavaStorageEntry findPattern; findPattern.setEntry(aColumnName, L""); JavaStorageApplicationEntry_t::const_iterator findIterator = - entry.find(findPattern); + entry.find(findPattern); if (findIterator != entry.end()) { name = findIterator->entryValue(); - } - + } if (name.size() > 0) { - IndexedSettingsName value; - value.name = name; - value.index = last_index + 1; - if (settingsNamesIndexes.contains(QString::fromStdWString(name))) + entry.clear(); + query.clear(); + attr.setEntry(ID, iSuiteUid); + query.insert(attr); + attr.setEntry(aColumnName, name); + query.insert(attr); + secondaryQueryResult.clear(); + iStorage->search(aSecondaryTableName, query, secondaryQueryResult); + if (secondaryQueryResult.size() > 0) { - value.index = settingsNamesIndexes.value(QString::fromStdWString(name)); + IndexedSettingsName value; + value.name = name; + value.index = last_index + 1; + if (settingsNamesIndexes.contains(QString::fromStdWString(name))) + { + value.index = settingsNamesIndexes.value(QString::fromStdWString(name)); + } + values.push_back(value); } - values.push_back(value); } } } diff -r 85266cc22c7f -r f40128debb5d javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.h --- a/javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.h Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/javasettings/appsettingsview_qt/src/javaapplicationsettingsview_p.h Wed Jun 23 18:07:10 2010 +0300 @@ -80,7 +80,7 @@ void writeToStorage(JavaApplicationSettings& settings); bool findFromStorage(const std::wstring&, const std::wstring&, const std::wstring&, const std::string&); std::wstring readFromStorage(const std::wstring&, const std::wstring&, const std::wstring&, const std::string&); - std::vector readFromStorage(const std::wstring& aColumnName, const std::string& aTableName); + std::vector readFromStorage(const std::wstring& aColumnName, const std::string& aPrimaryTableName,const std::string& aSecondaryTableName); void filterSecuritySettings(JavaApplicationSettings& settings); void findEntry(const java::storage::JavaStorageApplicationList_t&, const std::wstring&, std::wstring& eValue); void readSuiteUid(const QString& aAppUid); diff -r 85266cc22c7f -r f40128debb5d javamanager/javasidchecker/build/bld.inf --- a/javamanager/javasidchecker/build/bld.inf Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2008 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: Build information file for Java SID Checker component -* -*/ - - -#include - -PRJ_PLATFORMS -DEFAULT - -PRJ_MMPFILES -javasidchecker.mmp diff -r 85266cc22c7f -r f40128debb5d javamanager/javasidchecker/build/javasidchecker.mmp --- a/javamanager/javasidchecker/build/javasidchecker.mmp Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* -* Copyright (c) 2008 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: This is an ECOM plugin for Symbian AppArc (database that contains -* info on all applications installed to the device) -* This plugin tells AppArc whether Java application installed -* to a removable storage media is present and can be executed. -* -*/ - - -// INCLUDES -#include <../../../inc/project_defines.hrh> -#include <../../../inc/build_defines.hrh> -#include -#include - -#include <../../../inc/java_stdcpp_support_for_dll.hrh> - -TARGET javasidchecker.dll -CAPABILITY All -Tcb -TARGETTYPE plugin - -UID 0x10009d8d 0x10281FBE - -// Use bytepair compression to enable code paging -PAGED - -// Includes -USERINCLUDE . -USERINCLUDE ../inc -USERINCLUDE ../../../inc - -// Sources -SOURCEPATH ../src -SOURCE javasidchecker.cpp - -start RESOURCE ../data/10281FBE.rss -target javasidchecker.rsc -end - -#ifdef RD_JAVA_OLD_SIDCHECKER_LIBRARY -LIBRARY apfile.lib -#else -LIBRARY aplist.lib -#endif - -LIBRARY ecom.lib -LIBRARY javaregistryclient.lib diff -r 85266cc22c7f -r f40128debb5d javamanager/javasidchecker/data/10281FBE.rss --- a/javamanager/javasidchecker/data/10281FBE.rss Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2008 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: Java Sid Checker is an ECOM plugin for Symbian AppArc -* (database that contains info on all applications installed -* to the device) -* It tells AppArc whether Java application installed -* to a removable storage media is present and can be executed. -* -*/ - - -// Registry file for the CApparcVerifierInterface JavaRegistry implementation - -#include -#include "javauids.h" - -RESOURCE REGISTRY_INFO r_registry -{ - resource_format_version = RESOURCE_FORMAT_VERSION_2; - dll_uid = KJavaSidCheckerDllUid; // must match the name of this file - interfaces = - { - INTERFACE_INFO - { - interface_uid = KSidCheckerEcomIfUid; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KSidCheckerEcomImplUid; - // Version number is 2 so that this implementation should override the old one in ROM - version_no = 2; - display_name = "JavaVerify"; - default_data = "[10210e26]"; - opaque_data = ""; - rom_only = 0; - } - }; - } - }; -} diff -r 85266cc22c7f -r f40128debb5d javamanager/javasidchecker/inc/javasidchecker.h --- a/javamanager/javasidchecker/inc/javasidchecker.h Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2008 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: Java Sid Checker is an ECOM plugin for Symbian AppArc - * (database that contains info on all applications installed - * to the device) - * It tells AppArc whether Java application installed - * to a removable storage media is present and can be executed. - * -*/ - - -#ifndef JAVASIDCHECKER_H -#define JAVASIDCHECKER_H - -#include -#include - -NONSHARABLE_CLASS(CJavaSidChecker) : public CAppSidChecker - /** Java Sid checker. - - This is an implementation of CAppSidChecker for checking native application Sids - - This instance of the CAppSidChecker is used to verify that a native application - installed and can be launched. - */ -{ -public: - static CJavaSidChecker* NewL(); - ~CJavaSidChecker(); - - // From CAppSidChecker - TBool AppRegisteredAt(const TUid& aSid, TDriveUnit aDrive); - - void SetRescanCallBackL(const TCallBack &aCallback); - -private: - CJavaSidChecker(); - TBool AppRegisteredAtL(const TUid& aSid, TDriveUnit aDrive); - - Java::CJavaRegistry* iJavaRegistry; -}; - -#endif // JAVASIDCHECKER_H diff -r 85266cc22c7f -r f40128debb5d javamanager/javasidchecker/src/javasidchecker.cpp --- a/javamanager/javasidchecker/src/javasidchecker.cpp Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -/* -* Copyright (c) 2008 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: Java Sid Checker is an ECOM plugin for Symbian AppArc - * (database that contains info on all applications installed - * to the device) - * It tells AppArc whether Java application installed - * to a removable storage media is present and can be executed. - * -*/ - - -#include -#include -#include - -#include "javauids.h" -#include "javasidchecker.h" -#include "logger.h" - - -// DLL Entry point -TBool E32Dll() -{ - return ETrue; -} - -// ECOM Implementation Table -const TImplementationProxy ImplementationTable[] = -{ - IMPLEMENTATION_PROXY_ENTRY(KSidCheckerEcomImplUid, CJavaSidChecker::NewL) -}; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) -{ - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; -} - - -CJavaSidChecker* CJavaSidChecker::NewL() -{ - // Minimal construction (we don't want this to fail) - return new(ELeave) CJavaSidChecker; -} - -CJavaSidChecker::CJavaSidChecker() -{ - iJavaRegistry = NULL; - LOG(EUtils, EInfo, "CJavaSidChecker: Constructor called"); -} - -CJavaSidChecker::~CJavaSidChecker() -{ - if (NULL != iJavaRegistry) - { - delete iJavaRegistry; - iJavaRegistry = NULL; - } - LOG(EUtils, EInfo, "CJavaSidChecker: Destructor called"); -} - -TBool CJavaSidChecker::AppRegisteredAt(const TUid& aSid, TDriveUnit aDrive) -{ - TBool installed = EFalse; - - LOG1(EUtils, EInfo, "CJavaSidChecker: AppRegisteredAt called, %x", aSid.iUid); - - // No Java application can have Uid 0 - if (aSid.iUid == 0) - { - return installed; - } - - TRAPD(err, installed = AppRegisteredAtL(aSid, aDrive)); - if (KErrNone != err) - { - ELOG1(EUtils, "CJavaSidChecker: AppRegisteredAt error %d", err); - } - - return installed; -} - -TBool CJavaSidChecker::AppRegisteredAtL(const TUid& aSid, TDriveUnit /*aDrive*/) -{ - // Create the Java Registry if it has not been created already - if (NULL == iJavaRegistry) - { - iJavaRegistry = Java::CJavaRegistry::NewL(); - } - - // JavaRegistry does not return entries that are not present. - return iJavaRegistry->RegistryEntryExistsL(aSid); -} - -void CJavaSidChecker::SetRescanCallBackL(const TCallBack &/*aCallBack*/) -{ - // Do nothing - return; -} diff -r 85266cc22c7f -r f40128debb5d javamanager/javaupgradeapp/build/javaupgradeapp.pro --- a/javamanager/javaupgradeapp/build/javaupgradeapp.pro Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -# -# Copyright (c) 2010 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: Helper application for uninstalling a java application and -# then installing new application (java or native) -# -# - -TEMPLATE=app -TARGET=javaupgradeapp -CONFIG += omj no_icon stl -CONFIG -= qt - -symbian { - TARGET.UID2 = 0x2000CFEC - TARGET.UID3 = 0x2002FF64 - TARGET.CAPABILITY = TrustedUI - LIBS += -lestor -lapparc -lapgrfx -} - -include(../../../build/omj.pri) diff -r 85266cc22c7f -r f40128debb5d javamanager/javaupgradeapp/sis/java_upgradeapp.pkg --- a/javamanager/javaupgradeapp/sis/java_upgradeapp.pkg Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -; -; Copyright (c) 2010 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: Helper application for uninstalling a java application and -; then installing new application (any installation package file) -; -;Languages -&EN - - -#{"javaupgradeapp"},(0x2002FF64),1,1,0, TYPE=SA,RU - -;Localised Vendor name -%{"Nokia"} - -;Unique Vendor name -:"Nokia" - -;Supports Series 60 v 5.0 -;This line indicates that this installation is for the Series 60 platform v3.0 -;This line must appear _exactly_ as shown below in the sis file -;If this line is missing or incorrect, the sis file will not be able -;to be installed on Series 60 v5.0 platforms -[0x1028315F], 0, 0, 0, {"Series60ProductID"} - -; -"\epoc32\release\armv5\urel\javaupgradeapp.exe"-"c:\sys\bin\javaupgradeapp.exe" diff -r 85266cc22c7f -r f40128debb5d javamanager/javaupgradeapp/src.s60/javaupgradeapp.cpp --- a/javamanager/javaupgradeapp/src.s60/javaupgradeapp.cpp Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,407 +0,0 @@ -/* -* Copyright (c) 2010 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: Helper application for uninstalling a java application and -* then installing new application (java or native) -* -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include "exceptionbase.h" -#include "javaoslayer.h" -#include "javaprocessconstants.h" -#include "javasymbianoslayer.h" -#include "javauids.h" -#include "logger.h" - - -using namespace java::util; - - -_LIT(KHexValueStart, "0x"); -_LIT(KSemiColon, ";"); -_LIT(KUidArg, "uid="); -_LIT(KFileArg, "file="); - -const TInt KExtraLenForLogging = 2; -const TInt KArgumentValueMaxLen = 1568; -// Wait for 0.5 sec if ArcApp has not yet initialized -const TInt KDelayWhenWaitingAppArc = 500000; - - -/** - * Set the value of the argument specified by aArgName to aArgValue - * - * @param aCmdLine command line to be parsed - * @param aArgName the name of the argument - * @param aArgValue the value parsed from command line will be returned here - */ -static void getArgValueL(const TPtrC &aCmdLine, const TDesC &aArgName, HBufC **aArgValue) -{ - TBuf valueBuf; - TInt argPos = aCmdLine.FindF(aArgName); - if (argPos >= 0) - { - TInt semicolonPos = aCmdLine.Mid(argPos).Find(KSemiColon); - if (KErrNotFound == semicolonPos) - { - semicolonPos = aCmdLine.Mid(argPos).Length(); - } - TInt argLen = semicolonPos - aArgName.Length(); - if (argLen >= KArgumentValueMaxLen) - { - // Protect from buffer overflow. - WLOG2(EUtils, - "javaupgradeapp: argument value len too long (%d), cutting it to %d", - argLen, (KArgumentValueMaxLen - 1)); - argLen = KArgumentValueMaxLen - 1; - } - else if (argLen == 0) - { - User::Leave(KErrArgument); - } - - valueBuf = aCmdLine.Mid(argPos + aArgName.Length(), argLen); - } - - // Allocate new HBufC and return it - HBufC *pBufValue = HBufC::NewL(valueBuf.Length() + 2); - *pBufValue = valueBuf; - *aArgValue = pBufValue; -} - - -/** - * Parse the name from the value of 'file' parameter in - * command line given in aCmdLine - * - * @param aCmdLine command line to be parsed, the format is - * ;file=YYY; - * @param aFileName will contain the name parsed from command line - */ -static void getNameFromCommandLineL(const TPtrC &aCmdLine, HBufC **aFileName) -{ - TInt err = aCmdLine.FindF(KFileArg); - User::LeaveIfError(err); - - getArgValueL(aCmdLine, KFileArg, aFileName); -} - - -/** - * Parse the Uid from the value of 'uid' parameter in - * command line given in aCmdLine - * - * @param aCmdLine command line to be parsed, the format is - * uid=YYY; - * @param aUid will contain the Uid parsed from command line - */ -static void getUidFromCommandLineL(const TPtrC &aCmdLine, TInt32 &aUid) -{ - TInt err(KErrNone); - TInt argPos = aCmdLine.FindF(KUidArg); - if (KErrNotFound != argPos) - { - TPtrC uidToParse = aCmdLine.Mid(argPos + KUidArg.iTypeLength); - TLex parseUid(uidToParse); - if (uidToParse.FindF(KHexValueStart) == 0) - { - parseUid.Inc(2); // skip hex prefix - TUint32 tmpValue; - err = parseUid.Val(tmpValue, EHex); - aUid = tmpValue; - } - else - { - err = parseUid.Val(aUid); - } - - if (KErrNone != err) - { - ELOG1(EUtils, - "javaupgradeapp failed parsing app Uid from cmdline uid param. Error %d", - err); - } - } - else - { - ELOG(EUtils, - "javaupgradeapp cannot uninstall app because uid parameter is not given"); - } - - User::LeaveIfError(err); -} - - -/** - * Parse the process command line. - * Determine the uid of the Java application to be uninstalled and - * the name of the application package to be installed. - * Leaves if argument 'file' exist but file name cannot be found, - * leaves if argument 'uid' exist but uid cannot be parsed from command line, - * does NOT leave if only one of the arguments is present - * - * @param aFileName returns value of argument 'file' - * @param aUid returns Uid of the Java application to be uninstalled - */ -void getFileAndUidL(HBufC **aFileName, TInt32 *aUid) -{ - HBufC *pBufCmdLine = - HBufC::NewLC(User::CommandLineLength() + KExtraLenForLogging); - TPtr cmdLineBuf = pBufCmdLine->Des(); - User::CommandLine(cmdLineBuf); - - if (cmdLineBuf.Length() > 0) - { - LOG1WSTR(EUtils, EInfo, - "javaupgradeapp: full java application cmd line is : %s", - (wchar_t *)(cmdLineBuf.PtrZ())); - - // Get the midlet uid from the commandline - TRAPD(err, getUidFromCommandLineL(cmdLineBuf, *aUid)); - // It is enough that either midlet uid OR installation package name - // have been given in commandline - if ((err != KErrNone) && (err != KErrNotFound)) - { - User::Leave(err); - } - - // Get the name of the installation package from the commandline - TRAPD(err2, getNameFromCommandLineL(cmdLineBuf, aFileName)) - if (err2 != KErrNone) - { - if (err2 == KErrNotFound) - { - if (err == KErrNotFound) - { - // Both arguments missing - User::Leave(KErrArgument); - } - } - else - { - User::Leave(err2); - } - } - } - else - { - ELOG(EUtils, "javaupgradeapp: empty command line"); - User::Leave(KErrArgument); - } - - CleanupStack::PopAndDestroy(pBufCmdLine); -} - - -/** - * Uninstall the java application specified by aUid parameter. - * - * @param aUid the Uid of the java application to be uninstalled - */ -void uninstallJavaAppL(TInt32 aUid) -{ - RProcess rJavaInstaller; - TFileName fileName; - // Max one path name and some options -> 1536 is enough - TBuf<1536> commandLine; - - // Build command line used to pass all necessary info to Java Installer - TInt len = strlen(java::runtime::JAVA_INSTALLER_STARTER_DLL); - TPtr8 ptr8InstallerDll((TUint8 *)java::runtime::JAVA_INSTALLER_STARTER_DLL, len, len); - commandLine.Copy(ptr8InstallerDll); - - // Use command line options that make sure that uninstallation is done - // always, silently and so that the uninstalled java application will - // be preinstalled again if the user uninstalls it - commandLine.Append(_L(" uninstall -uid=")); - commandLine.AppendNum(aUid); - commandLine.Append(_L(" -forceuninstall -silent -preinstall_always")); - - LOG1WSTR(EUtils, EInfo, - "javaupgradeapp:uninstallJavaAppL Java Installer command line is %s", - (wchar_t *)(commandLine.PtrZ())); - - // start JavaInstaller - TBuf<64> installerProcess; // Actual len of the process name is 9 - len = strlen(java::runtime::JAVA_PROCESS); - TPtr8 ptr8Process((TUint8 *)java::runtime::JAVA_PROCESS, len, len); - installerProcess.Copy(ptr8Process); - - TRequestStatus status; - TInt err = rJavaInstaller.Create(installerProcess, commandLine); - if (KErrNone == err) - { - LOG(EUtils, EInfo, "javaupgradeapp:uninstallJavaAppL calling Logon"); - // Get notification when Java Installer exits (or panics) - rJavaInstaller.Logon(status); - - LOG(EUtils, EInfo, "javaupgradeapp:uninstallJavaAppL calling Resume"); - rJavaInstaller.Resume(); - } - else - { - ELOG1(EUtils, - "javaupgradeapp:uninstallJavaAppL Cannot start Java Installer, error %d", - err); - User::Leave(err); - } - - // now wait until Java Installer exits - User::WaitForRequest(status); - - LOG(EUtils, EInfo, "javaupgradeapp:uninstallJavaAppL calling RProcess::Close"); - // free resources before returning - rJavaInstaller.Close(); -} - - -/** - * - * - * - */ -void installAppPackageL(HBufC *aBufFileName) -{ - // Open file using default handler, - // if the file is an installation package, it will be installed - RApaLsSession apaSession; - TInt err = apaSession.Connect(); - if (KErrNone != err) - { - ELOG(EUtils, - "javaupgradeapp:installAppPackageL: Cannot connect to AppArc server"); - User::Leave(err); - } - CleanupClosePushL(apaSession); - - TInt retryCounter(10); - TThreadId handlerTreadId; - do - { - err = apaSession.StartDocument(*aBufFileName, handlerTreadId); - if (RApaLsSession::EAppListInvalid == err) - { - // Application list has not yet been populated, - // try again after a short delay - retryCounter--; - if (retryCounter > 0) - { - User::After(KDelayWhenWaitingAppArc); - continue; - } - else - { - ELOG(EUtils, - "javaupgradeapp:installAppPackageL: RApaLsSession " - "StartDocument returned EAppListInvalid for 10 times, exiting"); - User::Leave(err); - } - } - else if (KErrNone != err) - { - ELOG1(EUtils, - "javaupgradeapp:installAppPackageL: RApaLsSession " - "StartDocument returned error %d", err); - User::Leave(err); - } - - } while (RApaLsSession::EAppListInvalid == err); - - CleanupStack::PopAndDestroy(); // apaSession -} - - -/** - * Get the uid of the Java application to be uninstaller and - * start Java Installer to uninstall the application. - * Then install the new application package given in cmdline - * - */ -void handleUpgradeL(void) -{ - HBufC *pBufFileName = NULL; - TInt32 uid(0); - - getFileAndUidL(&pBufFileName, &uid); - - if (uid != 0) - { - LOG1( - EUtils, - EInfo, - "javaupgradeapp uninstalling app uid %d", uid); - uninstallJavaAppL(uid); - } - - if (pBufFileName != NULL) - { - LOG1WSTR(EUtils, EInfo, - "javaupgradeapp: installing new app package %s", - (wchar_t *)(pBufFileName->Des().PtrZ())); - installAppPackageL(pBufFileName); - - delete pBufFileName; - } -} - - -/** - * Main function of executable javaupgradeapp.exe. - * "installer app" created by Services team starts this executable when - * the "installer app" must be replaced with the real application (java/native or wrt) - * - * The command line format is - * uid=;file= - * for example - * uid=0x10137c4d;file=D:\\temp\\upgrade\\package.sis - * - * Sample code for starting this application from the "installer app" MIDlet - * @code - - MIDlet.platformRequest( - “nativeapp://application-exe=javaupgradeapp.exe;application-args=uid=0x10137c4d;file=D:\\temp\\upgrade\\package.sis”); - - * @endcode - * - */ -TInt E32Main(void) -{ - // TODO: check that only MIDP runtime process can start this in final version - // that goes to ROM - - - CTrapCleanup *pCleanupStack = CTrapCleanup::New(); - if (NULL == pCleanupStack) - { - ELOG(EUtils, "Cannot create CleanupStack in javaupgradeapp.exe main()"); - return KErrNoMemory; - } - - TRAPD(err, handleUpgradeL()); - if (KErrNone != err) - { - ELOG1(EUtils, "javaupgradeapp.exe: handleUpgradeL leaved with err %d", err); - } - - delete pCleanupStack; - return err; -} - diff -r 85266cc22c7f -r f40128debb5d javamanager/subsystem.mk --- a/javamanager/subsystem.mk Fri Jun 11 13:33:44 2010 +0300 +++ b/javamanager/subsystem.mk Wed Jun 23 18:07:10 2010 +0300 @@ -29,7 +29,6 @@ javalauncher/build NONQTSUBSYSTEMS = \ - javasidchecker/build \ javarecognizer/build \ javaappschemeplugin/build @@ -37,12 +36,19 @@ javaregistry \ javalauncher/build \ javabackup \ - javasidchecker/build \ javarecognizer/build \ preinstaller/build \ debugapi/build \ javaappschemeplugin/build +ifndef RD_JAVA_S60_RELEASE_10_1_ONWARDS +NONQTSUBSYSTEMS += javasidchecker/build +SYMBIAN_ONLY += javasidchecker/build javasidchecker/build : javaregistry +endif + +# Declare that release preparation removes subdirectories not in build, except +# listed special cases +REMOVE_NOTBUILT_EXCLUDING = inc include ${JAVA_SRC_ROOT}/build/Makefile.subsystem diff -r 85266cc22c7f -r f40128debb5d javaruntimes/javaruntimes.pro --- a/javaruntimes/javaruntimes.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javaruntimes/javaruntimes.pro Wed Jun 23 18:07:10 2010 +0300 @@ -19,6 +19,6 @@ SUBDIRS += installer/starterdll/build/javainstallerstarter.pro SUBDIRS += installer/starterexe/build/javainstaller.pro SUBDIRS += jvmargmodifier/file/build/javajvmargsmodifierfile.pro -SUBDIRS += starter/build/java.pro +SUBDIRS += starter/build/javamidp.pro SUBDIRS += midp BLD_INF_RULES.prj_extensions += "prj_extensions" diff -r 85266cc22c7f -r f40128debb5d javaruntimes/midp/runtime/build/javamidpruntime.pro --- a/javaruntimes/midp/runtime/build/javamidpruntime.pro Fri Jun 11 13:33:44 2010 +0300 +++ b/javaruntimes/midp/runtime/build/javamidpruntime.pro Wed Jun 23 18:07:10 2010 +0300 @@ -23,7 +23,7 @@ symbian { - INCLUDEPATH += /epoc32/include/ecom + INCLUDEPATH += /epoc32/include/ecom # Due to schemehandler.inl in S60 5.0 2009w18 and SPB 10.1 LIBS += -lecom -lflogger -lDrmRightsInfo -lcaf -lDrmHelper -lapgrfx -lapparc -ljavautils } diff -r 85266cc22c7f -r f40128debb5d javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/Main.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/Main.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/Main.java Wed Jun 23 18:07:10 2010 +0300 @@ -38,12 +38,14 @@ { // Do the start up trace. StartUpTrace.doTrace("Midp runtime ready"); - if (Log.mOn) Log.logI("Starting MIDP runtime"); - - System.out.println("java.version: " + - System.getProperty("java.version")); - System.out.println("java.fullversion: " + - System.getProperty("java.fullversion")); + if (Log.mOn) + { + Log.logI("Starting MIDP runtime"); + Log.logI("java.version: " + + System.getProperty("java.version")); + Log.logI("java.fullversion: " + + System.getProperty("java.fullversion")); + } boolean ok = true; try diff -r 85266cc22c7f -r f40128debb5d javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java Wed Jun 23 18:07:10 2010 +0300 @@ -27,6 +27,8 @@ import java.security.AccessControlException; +import com.nokia.mj.impl.gcf.PushSecurityUtils; + import com.nokia.mj.impl.rt.utils.ExtensionUtil; import com.nokia.mj.impl.rt.utils.CmdLineArgsPermission; @@ -992,16 +994,35 @@ DrmUtil.consumeRightsStart(); } - // If the MIDlet launch is a result of auto invocation we need to + // If the MIDlet launch is a result of push auto invocation we need to // ensure that user allows the start up. - if ((mMainArgs.findArgument("-autoinvocation") != null) || - mAutoinvocationFromUrl) + if (mMainArgs.findArgument("-autoinvocation") != null) { - if (Log.mOn) Log.logI("Ensuring autoinvocation."); + if (Log.mOn) Log.logI("Ensuring push autoinvocation."); String pushAdditionalInfo = mMainArgs.findArgument("-autoInvocationAdditional"); if (Log.mOn) Log.logI(" addInfo: '" + pushAdditionalInfo + "'"); + try + { + PushSecurityUtils.ensurePermission("autoinvocation", + pushAdditionalInfo); + }catch(SecurityException e) + { + // The user didn't allow starting. Throw StartupException and + // mark it as non fatal. + if (Log.mOn) Log.logI("Push autoinvocation NOT allowed."); + throw new StartupException(e.toString(), + false); + } + } + + // If the MIDlet launch is triggered from url we need to + // ensure that user allows the start up. + if (mAutoinvocationFromUrl) + { + if (Log.mOn) Log.logI("Ensuring web start invocation."); + // ensure security try { @@ -1009,10 +1030,10 @@ CmdLineArgsPermission cmdLineArgsPermission = new CmdLineArgsPermission(); appUtils.checkPermission(cmdLineArgsPermission); - if (Log.mOn) Log.logI("Autoinvocation allowed."); + if (Log.mOn) Log.logI("Web start invocation allowed."); }catch(AccessControlException e) { - if (Log.mOn) Log.logI("Autoinvocation NOT allowed."); + if (Log.mOn) Log.logI("Web start invocation NOT allowed."); throw new StartupException(e.toString(), false); } diff -r 85266cc22c7f -r f40128debb5d javaruntimes/starter/build/java.pro --- a/javaruntimes/starter/build/java.pro Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -# -# 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: -# - -TEMPLATE=app -TARGET=javamidp -CONFIG += omj no_icon stl -CONFIG -= qt - -include(../../../inc/build_defines.pri) - -symbian { - -contains(PROJECT_DEFINES,RD_JAVA_UI_QT) { - TARGET.EPOCSTACKSIZE = 81920 -} - -!contains(PROJECT_DEFINES,RD_JAVA_UI_QT) { - TARGET.EPOCSTACKSIZE = 16384 -} - - TARGET.EPOCHEAPSIZE = 0x00001000 0x02000000 - - TARGET.UID2 = 0x102033E6 - TARGET.UID3 = 0x102033E6 - - TARGET.SID = 0x102033E6 - TARGET.VID = 0x101FB657 - - TARGET.CAPABILITY = \ - LocalServices NetworkServices ProtServ WriteDeviceData \ - ReadDeviceData ReadUserData WriteUserData UserEnvironment \ - SwEvent Location MultiMediaDD NetworkControl TrustedUI -} - -include(../../../build/omj.pri) diff -r 85266cc22c7f -r f40128debb5d javaruntimes/starter/build/javamidp.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaruntimes/starter/build/javamidp.pro Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,48 @@ +# +# 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: +# + +TEMPLATE=app +TARGET=javamidp +CONFIG += omj no_icon stl +CONFIG -= qt + +include(../../../inc/build_defines.pri) + +symbian { + +contains(PROJECT_DEFINES,RD_JAVA_UI_QT) { + TARGET.EPOCSTACKSIZE = 81920 +} + +!contains(PROJECT_DEFINES,RD_JAVA_UI_QT) { + TARGET.EPOCSTACKSIZE = 16384 +} + + TARGET.EPOCHEAPSIZE = 0x00001000 0x02000000 + + TARGET.UID2 = 0x102033E6 + TARGET.UID3 = 0x102033E6 + + TARGET.SID = 0x102033E6 + TARGET.VID = 0x101FB657 + + TARGET.CAPABILITY = \ + LocalServices NetworkServices ProtServ WriteDeviceData \ + ReadDeviceData ReadUserData WriteUserData UserEnvironment \ + SwEvent Location MultiMediaDD NetworkControl TrustedUI +} + +include(../../../build/omj.pri) diff -r 85266cc22c7f -r f40128debb5d javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar Binary file javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar has changed diff -r 85266cc22c7f -r f40128debb5d javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java --- a/javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java Wed Jun 23 18:07:10 2010 +0300 @@ -18,6 +18,7 @@ package com.nokia.mj.tools.security.midp; import java.util.Vector; +import java.util.Hashtable; import java.io.IOException; import java.io.FileInputStream; import java.util.StringTokenizer; @@ -46,7 +47,7 @@ * domain: 'domain' Identifier ';' grant+; * grant: 'grant' (grant_user | grant_allowed | grant_assigned); * grant_allowed: 'allowed' permissions; - * grant_assigned: 'assigned' permissions; + * grant_assigned: 'assigned' grant_name? (initial_mode other_modes permissions)? permissions; * grant_user: 'user' grant_name initial_mode other_modes permissions; * grant_name: '"' Identifier '"'; * permissions: '{' permission+ '}'; @@ -70,6 +71,7 @@ private SecurityPolicy securityPolicy; private static String destPath; private static final String POLICY_FILE_EXTENSION = ".txt"; + private Hashtable allSettings = new Hashtable(); public static void main(String[] args) { @@ -159,14 +161,17 @@ } domain = extractToken(';'); Vector perms = new Vector(); + Vector unconfirmedPerms = new Vector(); find("grant"); while (offset < policy.length) { SecurityPolicyPermissionSettings settings = null; + SecurityPolicyPermissionSettings unconfirmedSettings = null; int type = getType(extractToken()); + String settingsName = null; if (type == PolicyBasedPermission.USER_TYPE) { - String settingsName = extractToken('"', '"'); + settingsName = extractToken('"', '"'); check(settingsName, "User grant group without name"); // trim off the leading and trailing double-quotes if (settingsName.startsWith("\"")) @@ -192,6 +197,44 @@ interactionModes); settings = new SecurityPolicyPermissionSettings(settingsName, currentInteractionMode, allowedInteractionModes); + allSettings.put(settingsName, settings); + } + else if (type == PolicyBasedPermission.ASSIGNED_TYPE) + { + settingsName = extractToken('"', '"'); + if (settingsName != null + && settingsName.length() > 0 + && settingsName.indexOf("{") == -1) + { + type = PolicyBasedPermission.USER_ASSIGNED_TYPE; + settings = (SecurityPolicyPermissionSettings)allSettings.get( + settingsName); + if (settings == null) + { + // parse the rest of the settings and store it as + // unconfirmed settings: after all the parsing is + // done go through the unconfirmed settings and + // replace them with settings from user permissions + // (if found) or use the unconfirmed settings if no + // other user settings were found + String strInteractionModes = extractToken('{'); + String[] interactionModes = split(strInteractionModes,","); + if (interactionModes != null && interactionModes.length > 0) + { + int currentInteractionMode = getInteractionMode( + interactionModes[0]); + int[] allowedInteractionModes = getInteractionModes( + interactionModes); + unconfirmedSettings = new SecurityPolicyPermissionSettings( + settingsName, currentInteractionMode, allowedInteractionModes); + } + else + { + unconfirmedSettings = new SecurityPolicyPermissionSettings( + settingsName); + } + } + } } find("permission"); while (offset < policy.length && policy[offset] != '}') @@ -246,28 +289,75 @@ // return multiple permissions with simple actions. This step is // to be removed when APIs support composite actions String[] actions = split(pActionList,","); + if (unconfirmedSettings != null + && unconfirmedSettings.getCurrentInteractionMode() + == UserSecuritySettings.UNDEFINED_INTERACTION_MODE) + { + // discard the settings since they are not vald + unconfirmedSettings = null; + } if (actions != null) { for (int i=0; i + // if found then use those settings, otherwise use the unconfirmed settings + for(int i=0; iGetArrayLength(aArgs); char** installerArgs = new char*[args]; diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/build/eswtqtwebkit/build.xml --- a/javauis/eswt_qt/build/eswtqtwebkit/build.xml Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/build/eswtqtwebkit/build.xml Wed Jun 23 18:07:10 2010 +0300 @@ -26,7 +26,7 @@ - + diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/eswtuitestutils/javasrc/com/nokia/mj/impl/uitestutils/S60Utils.java --- a/javauis/eswt_qt/eswtuitestutils/javasrc/com/nokia/mj/impl/uitestutils/S60Utils.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/eswtuitestutils/javasrc/com/nokia/mj/impl/uitestutils/S60Utils.java Wed Jun 23 18:07:10 2010 +0300 @@ -6,7 +6,7 @@ static { // Should use vmport, this is CDC/J2SE API //System.loadLibrary("s60uitestutils"); - org.eclipse.swt.internal.Library.loadLibrary("s60uitestutils"); + org.eclipse.swt.internal.Library.loadLibrary("eswtuitestutils"); } /** diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.me/build.xml --- a/javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.me/build.xml Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.me/build.xml Wed Jun 23 18:07:10 2010 +0300 @@ -263,7 +263,7 @@ - + diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.se/build.xml --- a/javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.se/build.xml Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt.qt.linux.x86.se/build.xml Wed Jun 23 18:07:10 2010 +0300 @@ -244,7 +244,7 @@ - + diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/org.eclipse.swt/Eclipse SWT Browser/qt/org/eclipse/swt/browser/QtWebKit.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT Browser/qt/org/eclipse/swt/browser/QtWebKit.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT Browser/qt/org/eclipse/swt/browser/QtWebKit.java Wed Jun 23 18:07:10 2010 +0300 @@ -12,7 +12,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.internal.qt.OS; -import org.eclipse.swt.internal.qt.webkit.OS_webkit; +import org.eclipse.swt.internal.qt.webkit.WebkitOS; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; @@ -39,7 +39,7 @@ // At this point, browser.handle is the view port of QScrollArea, set by Composite int scrollAreaHandle = Internal_PackageSupport.topHandle(browser); int viewPortHandle = Internal_PackageSupport.handle(browser); - webViewHandle = OS_webkit.QWebView_new(); + webViewHandle = WebkitOS.QWebView_new(); OS.QWidget_setParent(webViewHandle, scrollAreaHandle); int layout = OS.QVBoxLayout_new(0); @@ -111,10 +111,10 @@ * @see WebBrowser */ public boolean back() { - if (OS_webkit.QWebView_swt_canGoBack(webViewHandle)) { + if (WebkitOS.QWebView_swt_canGoBack(webViewHandle)) { if (sendLocationEventChanging((int)System.currentTimeMillis(), - OS_webkit.QWebView_swt_backUrl(webViewHandle))) { - OS_webkit.QWebView_back(webViewHandle); + WebkitOS.QWebView_swt_backUrl(webViewHandle))) { + WebkitOS.QWebView_back(webViewHandle); return true; } } @@ -125,17 +125,17 @@ * @see WebBrowser */ public boolean execute(String script) { - return OS_webkit.QWebView_swt_evaluateJavaScript(webViewHandle, script); + return WebkitOS.QWebView_swt_evaluateJavaScript(webViewHandle, script); } /** * @see WebBrowser */ public boolean forward() { - if (OS_webkit.QWebView_swt_canGoForward(webViewHandle)) { + if (WebkitOS.QWebView_swt_canGoForward(webViewHandle)) { if (sendLocationEventChanging((int)System.currentTimeMillis(), - OS_webkit.QWebView_swt_forwardUrl(webViewHandle))) { - OS_webkit.QWebView_forward(webViewHandle); + WebkitOS.QWebView_swt_forwardUrl(webViewHandle))) { + WebkitOS.QWebView_forward(webViewHandle); return true; } } @@ -160,21 +160,21 @@ * @see WebBrowser */ public String getUrl() { - return OS_webkit.QWebView_url(webViewHandle); + return WebkitOS.QWebView_url(webViewHandle); } /** * @see WebBrowser */ public boolean isBackEnabled() { - return OS_webkit.QWebView_swt_canGoBack(webViewHandle); + return WebkitOS.QWebView_swt_canGoBack(webViewHandle); } /** * @see WebBrowser */ public boolean isForwardEnabled() { - return OS_webkit.QWebView_swt_canGoForward(webViewHandle); + return WebkitOS.QWebView_swt_canGoForward(webViewHandle); } /** @@ -182,8 +182,8 @@ */ public void refresh() { if (sendLocationEventChanging((int)System.currentTimeMillis(), - OS_webkit.QWebView_url(webViewHandle))) { - OS_webkit.QWebView_reload(webViewHandle); + WebkitOS.QWebView_url(webViewHandle))) { + WebkitOS.QWebView_reload(webViewHandle); } } @@ -192,7 +192,7 @@ */ public boolean setText(String html) { if (sendLocationEventChanging((int)System.currentTimeMillis(), "about:blank")) { - OS_webkit.QWebView_setHtml(webViewHandle, html); + WebkitOS.QWebView_setHtml(webViewHandle, html); return true; } else { @@ -205,7 +205,7 @@ */ public boolean setUrl(String url) { if (sendLocationEventChanging((int)System.currentTimeMillis(), url)) { - OS_webkit.QWebView_setUrl(webViewHandle, url); + WebkitOS.QWebView_setUrl(webViewHandle, url); return true; } else { @@ -217,7 +217,7 @@ * @see WebBrowser */ public void stop() { - OS_webkit.QWebView_stop(webViewHandle); + WebkitOS.QWebView_stop(webViewHandle); } final boolean eventProcess( int widgetHandle, int eventType, int time, diff -r 85266cc22c7f -r f40128debb5d javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/ercp/swt/mobile/MobileDevice.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/ercp/swt/mobile/MobileDevice.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/ercp/swt/mobile/MobileDevice.java Wed Jun 23 18:07:10 2010 +0300 @@ -44,521 +44,524 @@ */ public class MobileDevice { - private static int handleMobileDevice; - private Vector mobileDeviceListeners; - private Screen[] screens; - private Input[] inputs; - private int alertLevel; - private boolean isOpen; - private static int desktopWidgetHandle; + private static int handleMobileDevice; + private Vector mobileDeviceListeners; + private Screen[] screens; + private Input[] inputs; + private int alertLevel; + private boolean isOpen; + private static int desktopWidgetHandle; static MobileDevice currentMobileDevice; - private int activeScreenId; + private int activeScreenId; /** * feature which is permanently attached to the mobile device and always available - */ + */ public static final int LOCAL = 0; - /** - * local feature which is only available when mobile device is opened - */ - public static final int INTERNAL = 1; + /** + * local feature which is only available when mobile device is opened + */ + public static final int INTERNAL = 1; - /** - * local feature which is only available when mobile device is closed - */ - public static final int EXTERNAL = 2; - - /** - * feature which is not part of the mobile device unless connected via wire or wireless signal - */ - public static final int REMOTE = 3; - - /** - * alert level indicating simple notification (ex. e-mail arrival) - */ - public static final int ALERT_LOW_IMPORTANCE = 1; - - /** - * alert level indicating user attention desired (ex. instant message arrival) - */ - public static final int ALERT_HIGH_IMPORTANCE = 2; - - /** - * alert level indicating immediate attention is required (ex. battery level at 1%) - */ - public static final int ALERT_CRITICAL = 3; + /** + * local feature which is only available when mobile device is closed + */ + public static final int EXTERNAL = 2; + + /** + * feature which is not part of the mobile device unless connected via wire or wireless signal + */ + public static final int REMOTE = 3; + + /** + * alert level indicating simple notification (ex. e-mail arrival) + */ + public static final int ALERT_LOW_IMPORTANCE = 1; + + /** + * alert level indicating user attention desired (ex. instant message arrival) + */ + public static final int ALERT_HIGH_IMPORTANCE = 2; + + /** + * alert level indicating immediate attention is required (ex. battery level at 1%) + */ + public static final int ALERT_CRITICAL = 3; /** * virtual keyboard status indicating normal show and hide operation */ - public static final int VK_NORMAL = 1; + public static final int VK_NORMAL = 1; - /** - * virtual keyboard status indicating keyboard is always visible - */ - public static final int VK_ALWAYS_ON = 2; + /** + * virtual keyboard status indicating keyboard is always visible + */ + public static final int VK_ALWAYS_ON = 2; - /** - * virtual keyboard status indicating keyboard is always hidden - */ - public static final int VK_ALWAYS_OFF = 3; - - /** - * Constructs a new instance of this class. Non-public to prevent - * instantiation outside this package. - * - */ - MobileDevice () { - - (getDisplay()).syncExec(new Runnable() { - public void run() { - handleMobileDevice = Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance()); - OS.MobileDevice_createFlipWatch(handleMobileDevice); - } - }); - mobileDeviceListeners = new Vector(); - isOpen = true; - } - - private static Display getDisplay(){ - Display display = Internal_PackageSupport.getDisplayInstance(); - - // Following if-statement (getting default display) should be removed - // if agreed that MobileDevice shouldn't create the display. - if(display==null){ - display = Display.getDefault(); - } - - if(display == null || display.isDisposed()){ - SWT.error(SWT.ERROR_DEVICE_DISPOSED); - } - return display; - } - - private void sendMobileDeviceChangedEvent(int eventType) { - // MobileDevice changed event for open and closed - int count = mobileDeviceListeners.size(); - for (int i = 0; i 0 && activeScreenId aCount){ - // screen removed - int screenHandle = 0; - for(int j=0; j + + + + PostEvent(event, CMMAEvent::EEventPriority); + //} + iFullScreen = aFullScreen; + if (iContainerVisible) { - CMMADCFullScreenEvent* event = - new(ELeave)CMMADCFullScreenEvent(iGUIObject, aFullScreen); - iEventSource->PostEvent(event, CMMAEvent::EEventPriority); + RemoveClippingRegion(); + + if (aFullScreen) + { + // use new scaled rect + // iWindow->SetDrawRect(ScaleToFullScreen(fullScreenSize, iSourceSize)); + LOG2(EJavaMMAPI, EInfo, "CMMADCDisplay::SetFullscreen iFullScreenSize.Width = %d iFullscreenSize.Height = %d", + iFullScreenSize.iWidth, iFullScreenSize.iHeight); + + iWindow->SetWindowRect(ScaleToFullScreen(iFullScreenSize, iSourceSize), MMMADisplay::EUiThread); + iWindow->SetRWindowRect(ScaleToFullScreen(iFullScreenSize, iSourceSize), MMMADisplay::EUiThread); + iWindow->SetDrawRectThread(ScaleToFullScreen(iFullScreenSize, iSourceSize)); + //iWindow->SetDrawRect(ScaleToFullScreen(iFullScreenSize, iSourceSize)); + } + else + { + // use size set from java + //iWindow->SetDrawRect(iUserRect); + iWindow->SetDrawRectThread(iUserRect); + } + + AddClippingRegion(); } } +/* +void CMMADCDisplay::SetFullScreenL(TBool aFullScreen) +{ + LOG(EJavaMMAPI, EInfo, "CMMADCDisplay::SetFullscreenL() +"); + + // TSize canvasSize(aJavaControlWidth, aJavaControlHeight); + iSourceSize = SourceSize(); + //iSourceSize=canvasSize; + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SetFullscreenL() asourcesize %d",iSourceSize ); + #ifdef RD_JAVA_NGA_Enabled + if(iWindow) + { + iWindow->SetVideoCropRegion( TRect(iUserRect.iTl, iSourceSize)); + } + #endif + // TSize canvasSize(aJavaControlWidth, aJavaControlHeight); + //chnaged + + //TSize canvasSize(iFullScreenSize.iWidth, iFullScreenSize.iHeight); + //TSize iUser(iUserRect.Width(),iUserRect.Height()); + //iFullScreenSize = canvasSize; + // iFullScreenSize=iUser; + // if(aFullScreen) + // { + // iFullScreenSize = canvasSize; + // } + TBool sourceIsBigger = (iSourceSize.iWidth > iFullScreenSize.iWidth || + iSourceSize.iHeight > iFullScreenSize.iHeight); + + if(sourceIsBigger) + { + + iWindow->SetWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetRWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetDrawRect(ScaleToFullScreen(iFullScreenSize, iSourceSize)); + } + else + { + iWindow->SetWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetRWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + //iWindow->SetVideoCropRegion( TRect(iUserRect.iTl,iFullScreenSize)); + //;iWindow->SetDrawRect( TRect(iUserRect.iTl, iSourceSize)); + iWindow->SetDrawRect( TRect(iUserRect.iTl,iFullScreenSize)); + + } + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()1 - %d",iUserRect.Size()); + SetClippingRegion(); + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()2 -%d",iUserRect.Size()); + if(iUserRect.IsEmpty()) + { + iUserRect = iWindow->DrawRect(); + + if(!sourceIsBigger) + { + iUserRect = TRect(iUserRect.Size()); + } + } + LOG(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged() -"); + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()3 -%d",iUserRect.Size()); +}*/ // interface MMMADisplay void CMMADCDisplay::SourceSizeChanged(const TSize& aSourceSize) @@ -154,8 +245,57 @@ } } } -void CMMADCDisplay::SourceSizeChanged(TInt /*aJavaControlWidth*/, TInt /*aJavaControlHeight*/,TInt /*x*/, TInt /*y*/, TRect /*aBoundsRect*/) + + +void CMMADCDisplay::SourceSizeChanged(TInt aJavaControlWidth, TInt aJavaControlHeight,TInt /*x*/, TInt /*y*/, TRect /*aBoundsRect*/) { + LOG(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged() +"); + LOG2(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged() aJavaControlWidth=%d aJavaControlHeight=%d", aJavaControlWidth, aJavaControlHeight); + // TSize canvasSize(aJavaControlWidth, aJavaControlHeight); + iSourceSize = SourceSize(); + //iSourceSize=canvasSize; + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged() asourcesize %d",iSourceSize); +#ifdef RD_JAVA_NGA_Enabled + if (iWindow) + { + iWindow->SetVideoCropRegion(TRect(iUserRect.iTl, iSourceSize)); + } +#endif + // TSize canvasSize(aJavaControlWidth, aJavaControlHeight); + //chnaged + TSize canvasSize(aJavaControlWidth, aJavaControlHeight); + iFullScreenSize = canvasSize; + + TBool sourceIsBigger = (iSourceSize.iWidth > iFullScreenSize.iWidth || + iSourceSize.iHeight > iFullScreenSize.iHeight); + + if (sourceIsBigger) + { + iWindow->SetWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetRWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetDrawRect(ScaleToFullScreen(iFullScreenSize, iSourceSize)); + } + else + { + iWindow->SetWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + iWindow->SetRWindowRect(iFullScreenSize,MMMADisplay::EMmaThread); + //;iWindow->SetDrawRect( TRect(iUserRect.iTl, iSourceSize)); + iWindow->SetDrawRect(TRect(iUserRect.iTl,iFullScreenSize)); + } + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()1 - %d",iUserRect.Size()); + SetClippingRegion(); + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()2 -%d",iUserRect.Size()); + if (iUserRect.IsEmpty()) + { + iUserRect = iWindow->DrawRect(); + + if (!sourceIsBigger) + { + iUserRect = TRect(iUserRect.Size()); + } + } + LOG(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged() -"); + LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SourceSizeChanged()3 -%d",iUserRect.Size()); } // interface MMMADisplay diff -r 85266cc22c7f -r f40128debb5d javauis/mmapi_qt/volumekeys/src/cmmaforeground.cpp --- a/javauis/mmapi_qt/volumekeys/src/cmmaforeground.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/mmapi_qt/volumekeys/src/cmmaforeground.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -63,7 +63,7 @@ eikEnv->RemoveForegroundObserver(*this); LOG( EJavaMMAPI, EInfo, "CMMAForeground::~CMMAForeground() : eikEnv RemoveForegroundObserver -"); } - */ + if (iEventPoster && iDeleteRefEvent) { iEventPoster->PostEvent(iDeleteRefEvent); @@ -71,7 +71,8 @@ else { delete iDeleteRefEvent; - } + }*/ + //TODO MemoryLeak need to delete the above object. delete iForegroundEvent; delete iActiveScheduler; LOG(EJavaMMAPI, EInfo, "CMMAForeground::~CMMAForeground() - "); diff -r 85266cc22c7f -r f40128debb5d javauis/mmapi_qt/volumekeys/src/cmmavolumekeyslistener.cpp --- a/javauis/mmapi_qt/volumekeys/src/cmmavolumekeyslistener.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/mmapi_qt/volumekeys/src/cmmavolumekeyslistener.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -63,11 +63,12 @@ iJavaRemConManager = NULL; } */ + /* if (NULL != iTimer) { iTimer->Cancel(); delete iTimer; - } + }*/ LOG(EJavaMMAPI, EInfo, "CMMAVolumeKeysListener::~CMMAVolumeKeysListener() -"); } @@ -83,7 +84,8 @@ iJavaRemConManager->SetObserverL(*iJavaRemConObserver); */ // Timer for implementing Pressed/Released/Clicked feature. - iTimer = CPeriodic::NewL(CActive::EPriorityStandard); + //TODO For Mediakey(Hard VolumeKey) + //iTimer = CPeriodic::NewL(CActive::EPriorityStandard); iListener = aListener; LOG(EJavaMMAPI, EInfo, "CMMAVolumeKeysListener::ConstructL -"); diff -r 85266cc22c7f -r f40128debb5d javauis/nokiasound/src/cmidsound.cpp --- a/javauis/nokiasound/src/cmidsound.cpp Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/nokiasound/src/cmidsound.cpp Wed Jun 23 18:07:10 2010 +0300 @@ -201,8 +201,8 @@ TInt CMIDSound::Play(TInt aLoop) { JELOG2(EJavaUI); - TInt err; - CallMethodL(err, this, &CMIDSound::DoPlay, aLoop, this); + TInt err = 0; + CallMethod(err, this, &CMIDSound::DoPlay, aLoop, this); return err; } @@ -256,8 +256,8 @@ TInt CMIDSound::SoundVolume() { JELOG2(EJavaUI); - TInt result; - CallMethodL(result, this, &CMIDSound::Volume, this); + TInt result = 0; + CallMethod(result, this, &CMIDSound::Volume, this); return result; } @@ -289,8 +289,8 @@ TInt CMIDSound::PlayerState() { JELOG2(EJavaUI); - TInt result; - CallMethodL(result, this, &CMIDSound::State, this); + TInt result = 0; + CallMethod(result, this, &CMIDSound::State, this); return result; } diff -r 85266cc22c7f -r f40128debb5d javauis/runtimeui_qt/tsrc.s60/javasrc/com/nokia/mj/impl/rt/ui/qt/RuntimeUiQtTests.java --- a/javauis/runtimeui_qt/tsrc.s60/javasrc/com/nokia/mj/impl/rt/ui/qt/RuntimeUiQtTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/runtimeui_qt/tsrc.s60/javasrc/com/nokia/mj/impl/rt/ui/qt/RuntimeUiQtTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -82,7 +82,6 @@ private void doTest(RuntimeUi runtimeUi) { - System.out.println("+doTest()"); // error message with details -> make sure both are available to the user ExceptionBase exc = new ExceptionBase( new ShortErrorMessage(), @@ -103,13 +102,6 @@ null, 0, null /* no params for detailed msg */); - System.out.println("3"); - - runtimeUi.error("MyApplication", exc); - - // Test no crash happen. - runtimeUi.error("NullException", null); - boolean answerAvailable = false; @@ -130,6 +122,5 @@ runtimeUi.confirm("Null Application", nullConf); runtimeUi.destroy(); - System.out.println("-doTest()"); } } diff -r 85266cc22c7f -r f40128debb5d javauis/tsrc/fute/lcdui/Midp_Alert_01/build.xml --- a/javauis/tsrc/fute/lcdui/Midp_Alert_01/build.xml Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/tsrc/fute/lcdui/Midp_Alert_01/build.xml Wed Jun 23 18:07:10 2010 +0300 @@ -28,7 +28,7 @@ - + diff -r 85266cc22c7f -r f40128debb5d javauis/tsrc/fute/lcdui/Midp_Alert_01/src/AlertTests.java --- a/javauis/tsrc/fute/lcdui/Midp_Alert_01/src/AlertTests.java Fri Jun 11 13:33:44 2010 +0300 +++ b/javauis/tsrc/fute/lcdui/Midp_Alert_01/src/AlertTests.java Wed Jun 23 18:07:10 2010 +0300 @@ -156,6 +156,14 @@ errorAlert.setTimeout(Alert.FOREVER); Display.getDisplay(parent).setCurrent(errorAlert); } + catch (IllegalArgumentException e) + { + System.out.println("Exception: " + e.toString()); + Alert errorAlert = new Alert("Exception", e.toString(), null, + AlertType.ERROR); + errorAlert.setTimeout(Alert.FOREVER); + Display.getDisplay(parent).setCurrent(errorAlert); + } } else if (c == cmdExit) { diff -r 85266cc22c7f -r f40128debb5d rom/java_2_1.iby --- a/rom/java_2_1.iby Fri Jun 11 13:33:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,362 +0,0 @@ -/* -* 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: -* Image-description file of the Java package for ROFS1. -*/ - -#ifndef __JAVA_IBY__ -#define __JAVA_IBY__ - -#include - -// Helper defines -define JAVA_RES_BLD ABI_DIR\BUILD_DIR\z\resource\java -define JAVA_RES_IMG RESOURCE_FILES_DIR\java -define JAVA_VM_RES_BLD JAVA_RES_BLD\jvm\lib\jrt -define JAVA_VM_RES_IMG JAVA_RES_IMG\jvm\lib\jrt -define JAVA_POLICY_BLD ABI_DIR\BUILD_DIR\z\resource\java\security\policies -define JAVA_POLICY_IMG RESOURCE_FILES_DIR\java\security\policies - - -//////////////////////////// -// Java Manager collection// -//////////////////////////// - -// stub sis -data=ZSYSTEM\install\java.sis System\Install\java.sis - - -// AppMngr plugin -ECOM_PLUGIN( appmngr2midletplugin.dll, appmngr2midletplugin.rsc ) -data=ZRESOURCE\plugins\appmngr2midletplugin.rsc ECOM_RESOURCE_DIR\appmngr2midletplugin.rsc - -// Captain -file=ABI_DIR\BUILD_DIR\javacaptain_ext_btdeviceclassmanager.dll SHARED_LIB_DIR\javacaptain_ext_btdeviceclassmanager.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_config.dll SHARED_LIB_DIR\javacaptain_ext_config.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_ondemand_2.dll SHARED_LIB_DIR\javacaptain_ext_ondemand_2.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_ondemand_7.dll SHARED_LIB_DIR\javacaptain_ext_ondemand_7.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_preinstallerstarter.dll SHARED_LIB_DIR\javacaptain_ext_preinstallerstarter.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_pushregistryplugin.dll SHARED_LIB_DIR\javacaptain_ext_pushregistryplugin.dll -file=ABI_DIR\BUILD_DIR\javacaptain_ext_storageserverplugin.dll SHARED_LIB_DIR\javacaptain_ext_storageserverplugin.dll -file=ABI_DIR\BUILD_DIR\javacaptain.exe PROGRAMS_DIR\javacaptain.exe - -// Registry -file=ABI_DIR\BUILD_DIR\javaregistryclient.dll SHARED_LIB_DIR\javaregistryclient.dll -file=ABI_DIR\BUILD_DIR\javasizehelperclient.dll SHARED_LIB_DIR\javasizehelperclient.dll -file=ABI_DIR\BUILD_DIR\javasizehelperserver.dll SHARED_LIB_DIR\javasizehelperserver.dll - -// Installer -ECOM_PLUGIN(ifeui.dll,ifeui.rsc) -data=ZRESOURCE\plugins\ifeui.rsc ECOM_RESOURCE_DIR\ifeui.rsc -data=ZPRIVATE\10003a3f\apps\javainstaller_reg.rsc \private\10003a3f\import\apps\javainstaller_reg.rsc -data=ZRESOURCE\apps\javainstaller_loc.rsc APP_RESOURCE_DIR\javainstaller_loc.rsc -data=ZRESOURCE\apps\javainstaller_icon.mif APP_BITMAP_DIR\javainstaller_icon.mif -file=ABI_DIR\BUILD_DIR\javainstaller.dll SHARED_LIB_DIR\javainstaller.dll -data=JAVA_VM_RES_BLD\javainstallerui.odc JAVA_VM_RES_IMG\javainstallerui.odc -file=ABI_DIR\BUILD_DIR\javainstallerui.dll SHARED_LIB_DIR\javainstallerui.dll -data=JAVA_VM_RES_BLD\javainstaller.odc JAVA_VM_RES_IMG\javainstaller.odc -file=ABI_DIR\BUILD_DIR\javainstallerstarter.dll PROGRAMS_DIR\javainstallerstarter.dll -file=ABI_DIR\BUILD_DIR\javapreinstaller.dll PROGRAMS_DIR\javapreinstaller.dll -data=ZRESOURCE\java\java_app_92.mif JAVA_RES_IMG\java_app.mif -data=ZRESOURCE\java\java_trusted.png JAVA_RES_IMG\java_trusted.png -data=ZRESOURCE\java\java_untrusted.png JAVA_RES_IMG\java_untrusted.png -data=DATAZ_\private\102033E6\installer\inst_plugins.cfg \private\102033E6\installer\inst_plugins.cfg - -// Launchers -file=ABI_DIR\BUILD_DIR\javalauncher.exe PROGRAMS_DIR\javalauncher.exe -ECOM_PLUGIN(javaappschemeplugin.dll,javaappschemeplugin.rsc) -data=ZRESOURCE\plugins\javaappschemeplugin.rsc ECOM_RESOURCE_DIR\javaappschemeplugin.rsc - -// SID Checker -ECOM_PLUGIN(javasidchecker.dll,10281FBE.rsc) -data=ZRESOURCE\plugins\javasidchecker.rsc ECOM_RESOURCE_DIR\javasidchecker.rsc - -// Recognizers -ECOM_PLUGIN(recjar.dll, 102031FB.rsc) -data=ZRESOURCE\plugins\recjar.rsc ECOM_RESOURCE_DIR\recjar.rsc - -// Backup & Restore -file=ABI_DIR\BUILD_DIR\javabackup.exe PROGRAMS_DIR\javabackup.exe -ECOM_PLUGIN(midp2backupplugin.dll,10282474.rsc) -data=ZRESOURCE\plugins\midp2backupplugin.rsc ECOM_RESOURCE_DIR\midp2backupplugin.rsc -data=DATAZ_\private\1028246F\backup_registration.xml \private\1028246F\backup_registration.xml -data=DATAZ_\private\102033E6\backup_registration.xml \private\102033E6\backup_registration.xml - - -///////////////////////// -// Java UIs collection // -///////////////////////// - -// CoreUi -file=ABI_DIR\BUILD_DIR\javacoreui.dll SHARED_LIB_DIR\javacoreui.dll -data=JAVA_VM_RES_BLD\javacoreui.odc JAVA_VM_RES_IMG\javacoreui.odc - -// eSWT -file=ABI_DIR\BUILD_DIR\eswt.dll SHARED_LIB_DIR\eswt.dll -data=JAVA_VM_RES_BLD\eswt.odc JAVA_VM_RES_IMG\eswt.odc -file=ABI_DIR\BUILD_DIR\eswtphysics.dll SHARED_LIB_DIR\eswtphysics.dll -file=ABI_DIR\BUILD_DIR\eswtapifacade.dll SHARED_LIB_DIR\eswtapifacade.dll -file=ABI_DIR\BUILD_DIR\eswtdirectcontent.dll SHARED_LIB_DIR\eswtdirectcontent.dll -data=JAVA_VM_RES_BLD\eswtdirectcontent.odc JAVA_VM_RES_IMG\eswtdirectcontent.odc -data=ZPRIVATE\10003a3f\apps\eswt_reg.rsc \private\10003a3f\import\apps\eswt_reg.rsc - -// LCDUI -file=ABI_DIR\BUILD_DIR\javalcdui.dll SHARED_LIB_DIR\javalcdui.dll -data=JAVA_VM_RES_BLD\javalcdui.odc JAVA_VM_RES_IMG\javalcdui.odc -file=ABI_DIR\BUILD_DIR\lcdui.dll SHARED_LIB_DIR\lcdui.dll -file=ABI_DIR\BUILD_DIR\lcdgr.dll SHARED_LIB_DIR\lcdgr.dll -file=ABI_DIR\BUILD_DIR\lcdgdrv.dll SHARED_LIB_DIR\lcdgdrv.dll -file=ABI_DIR\BUILD_DIR\lcdgdrvi.dll SHARED_LIB_DIR\lcdgdrvi.dll -file=ABI_DIR\BUILD_DIR\lcduiphysicswrap.dll SHARED_LIB_DIR\lcduiphysicswrap.dll -ECOM_PLUGIN(LCDC4K.dll, 10208164.rsc) -ECOM_PLUGIN(LCDC64K.dll, 10208162.rsc) -ECOM_PLUGIN(LCDC16MU.dll, 10208166.rsc) -ECOM_PLUGIN(LCDC16MA.dll, 10208168.rsc) -data=ZRESOURCE\java\lcdgr.rsc JAVA_RES_IMG\lcdgr.rsc -data=ZPRIVATE\10003a3f\apps\lcdui_reg.rsc \private\10003a3f\import\apps\lcdui_reg.rsc - -SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,lcdui) - -// AMMS API -file=ABI_DIR\BUILD_DIR\javaamms.dll SHARED_LIB_DIR\javaamms.dll -data=JAVA_VM_RES_BLD\javaamms.odc JAVA_VM_RES_IMG\javaamms.odc - -// Mobile Media API -file=ABI_DIR\BUILD_DIR\javamobilemedia.dll SHARED_LIB_DIR\javamobilemedia.dll -data=JAVA_VM_RES_BLD\javamobilemedia.odc JAVA_VM_RES_IMG\javamobilemedia.odc -data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaCapture.wav \System\Sounds\Digital\CamcorderJavaCapture.wav -data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaStart.wav \System\Sounds\Digital\CamcorderJavaStart.wav - -// MobInfo API -file=ABI_DIR\BUILD_DIR\javamobinfo.dll SHARED_LIB_DIR\javamobinfo.dll -data=JAVA_VM_RES_BLD\javamobinfo.odc JAVA_VM_RES_IMG\javamobinfo.odc - -// GlobalIndicators API -file=ABI_DIR\BUILD_DIR\javaglobalindicators.dll SHARED_LIB_DIR\javaglobalindicators.dll -data=JAVA_VM_RES_BLD\javaglobalindicators.odc JAVA_VM_RES_IMG\javaglobalindicators.odc - -// SoftNotification API -file=ABI_DIR\BUILD_DIR\javasoftnotification.dll SHARED_LIB_DIR\javasoftnotification.dll -data=JAVA_VM_RES_BLD\javasoftnotification.odc JAVA_VM_RES_IMG\javasoftnotification.odc - -// 2G API -file=ABI_DIR\BUILD_DIR\javam2g.dll SHARED_LIB_DIR\javam2g.dll -data=JAVA_VM_RES_BLD\javam2g.odc JAVA_VM_RES_IMG\javam2g.odc - -// 3G API -file=ABI_DIR\BUILD_DIR\javam3g.dll SHARED_LIB_DIR\javam3g.dll -data=JAVA_VM_RES_BLD\javam3g.odc JAVA_VM_RES_IMG\javam3g.odc - -// Nokia Sound API -file=ABI_DIR\BUILD_DIR\javanokiasound.dll SHARED_LIB_DIR\javanokiasound.dll -data=JAVA_VM_RES_BLD\javanokiasound.odc JAVA_VM_RES_IMG\javanokiasound.odc - -// Remote Connection Observer -file=ABI_DIR\BUILD_DIR\javaremconobserver.dll SHARED_LIB_DIR\javaremconobserver.dll - -// Legacy utilities -file=ABI_DIR\BUILD_DIR\javalegacyutils.dll SHARED_LIB_DIR\javalegacyutils.dll -data=JAVA_VM_RES_BLD\javalegacyutils.odc JAVA_VM_RES_IMG\javalegacyutils.odc - - -///////////////////////////// -// Java Runtimes collection // -///////////////////////////// - -// Runtime utilities -file=ABI_DIR\BUILD_DIR\javaruntimeui.dll SHARED_LIB_DIR\javaruntimeui.dll -data=JAVA_VM_RES_BLD\javaruntimeui.odc JAVA_VM_RES_IMG\javaruntimeui.odc -file=ABI_DIR\BUILD_DIR\javaruntimestarterutils.dll SHARED_LIB_DIR\javaruntimestarterutils.dll - -// MIDP runtime -file=ABI_DIR\BUILD_DIR\javamidp.exe PROGRAMS_DIR\javamidp.exe -file=ABI_DIR\BUILD_DIR\javamidpstarter.dll SHARED_LIB_DIR\javamidpstarter.dll -file=ABI_DIR\BUILD_DIR\javamidpruntime.dll SHARED_LIB_DIR\javamidpruntime.dll -data=JAVA_VM_RES_BLD\javamidpruntime.odc JAVA_VM_RES_IMG\javamidpruntime.odc - -// An empty JVM argument modifier (to prevent 3rd parties from installing a DLL with this name) -// To enable JVM argument modifier - comment 1st line below and uncomment 2nd line below -file=ABI_DIR\BUILD_DIR\javajvmargsmodifier.dll SHARED_LIB_DIR\javajvmargsmodifier.dll -//file=ABI_DIR\BUILD_DIR\javajvmargsmodifierfile.dll SHARED_LIB_DIR\javajvmargsmodifier.dll - - -///////////////////////////// -// Java Commons collection // -///////////////////////////// - -// J9 JVM -file=ABI_DIR\BUILD_DIR\j9.dll SHARED_LIB_DIR\j9.dll -file=ABI_DIR\BUILD_DIR\j9vmall23.dll SHARED_LIB_DIR\j9vmall23.dll -file=ABI_DIR\BUILD_DIR\j9mjit23.dll SHARED_LIB_DIR\j9mjit23.dll -file=ABI_DIR\BUILD_DIR\jclcldc11_23.dll SHARED_LIB_DIR\jclcldc11_23.dll -file=ABI_DIR\BUILD_DIR\jclcdc11_23.dll SHARED_LIB_DIR\jclcdc11_23.dll -file=ABI_DIR\BUILD_DIR\j9fdm23.dll SHARED_LIB_DIR\j9fdm23.dll -file=ABI_DIR\BUILD_DIR\JvmNativePort.dll SHARED_LIB_DIR\JvmNativePort.dll -data=JAVA_RES_BLD\jvm\bin\java.properties JAVA_RES_IMG\jvm\bin\java.properties -data=JAVA_RES_BLD\jvm\lib\security\java.policy JAVA_RES_IMG\jvm\lib\security\java.policy -data=JAVA_RES_BLD\jvm\lib\security\java.security JAVA_RES_IMG\jvm\lib\security\java.security - -// Utilities -file=ABI_DIR\BUILD_DIR\javautils.dll SHARED_LIB_DIR\javautils.dll -data=JAVA_VM_RES_BLD\javautils.odc JAVA_VM_RES_IMG\javautils.odc -file=ABI_DIR\BUILD_DIR\javacomms.dll SHARED_LIB_DIR\javacomms.dll -data=JAVA_VM_RES_BLD\javacomms.odc JAVA_VM_RES_IMG\javacomms.odc -file=ABI_DIR\BUILD_DIR\javaipc.dll SHARED_LIB_DIR\javaipc.dll -file=ABI_DIR\BUILD_DIR\javafileutils.dll SHARED_LIB_DIR\javafileutils.dll -data=JAVA_VM_RES_BLD\javafileutils.odc JAVA_VM_RES_IMG\javafileutils.odc -file=ABI_DIR\BUILD_DIR\javadebugapi.dll SHARED_LIB_DIR\javadebugapi.dll - -// Security dlls -file=ABI_DIR\BUILD_DIR\javasecurity.dll SHARED_LIB_DIR\javasecurity.dll -data=JAVA_VM_RES_BLD\javasecurity.odc JAVA_VM_RES_IMG\javasecurity.odc -ECOM_PLUGIN(javaunicertstoreplugin.dll,200213A3.rsc) -data=ZRESOURCE\plugins\javaunicertstoreplugin.rsc ECOM_RESOURCE_DIR\javaunicertstoreplugin.rsc - -// Security certs & policies -data=JAVA_POLICY_BLD\s60_manufacturer.ser JAVA_POLICY_IMG\s60_manufacturer.ser -data=JAVA_POLICY_BLD\s60_operator.ser JAVA_POLICY_IMG\s60_operator.ser -data=JAVA_POLICY_BLD\s60_trustedthirdparty.ser JAVA_POLICY_IMG\s60_trustedthirdparty.ser -data=JAVA_POLICY_BLD\s60_untrusted.ser JAVA_POLICY_IMG\s60_untrusted.ser -data=JAVA_POLICY_BLD\msa_manufacturer.ser JAVA_POLICY_IMG\msa_manufacturer.ser -data=JAVA_POLICY_BLD\msa_operator.ser JAVA_POLICY_IMG\msa_operator.ser -data=JAVA_POLICY_BLD\msa_trustedthirdparty.ser JAVA_POLICY_IMG\msa_trustedthirdparty.ser -data=JAVA_POLICY_BLD\msa_untrusted.ser JAVA_POLICY_IMG\msa_untrusted.ser -data=JAVA_POLICY_BLD\att_manufacturer.ser JAVA_POLICY_IMG\att_manufacturer.ser -data=JAVA_POLICY_BLD\att_operator.ser JAVA_POLICY_IMG\att_operator.ser -data=JAVA_POLICY_BLD\att_operatorextra.ser JAVA_POLICY_IMG\att_operatorextra.ser -data=JAVA_POLICY_BLD\att_trustedthirdparty.ser JAVA_POLICY_IMG\att_trustedthirdparty.ser -data=JAVA_POLICY_BLD\att_untrusted.ser JAVA_POLICY_IMG\att_untrusted.ser -data=JAVA_POLICY_BLD\all.ser JAVA_POLICY_IMG\all.ser - - -// Java environment info -file=ABI_DIR\BUILD_DIR\javaenvinfo.dll SHARED_LIB_DIR\javaenvinfo.dll -data=ABI_DIR\BUILD_DIR\Z\Resource\versions\java.txt RESOURCE_FILES_DIR\versions\java.txt - -// Storage -file=ABI_DIR\BUILD_DIR\javastorage.dll SHARED_LIB_DIR\javastorage.dll -data=JAVA_VM_RES_BLD\javastorage.odc JAVA_VM_RES_IMG\javastorage.odc - -// GCF base -file=ABI_DIR\BUILD_DIR\javagcf.dll SHARED_LIB_DIR\javagcf.dll -data=JAVA_VM_RES_BLD\javagcf.odc JAVA_VM_RES_IMG\javagcf.odc - -// Connection Manager -file=ABI_DIR\BUILD_DIR\javaconnectionmanager.dll SHARED_LIB_DIR\javaconnectionmanager.dll -data=JAVA_VM_RES_BLD\javaconnectionmanager.odc JAVA_VM_RES_IMG\javaconnectionmanager.odc - -// Http & https protocols -file=ABI_DIR\BUILD_DIR\javahttp.dll SHARED_LIB_DIR\javahttp.dll -file=ABI_DIR\BUILD_DIR\javahttps.dll SHARED_LIB_DIR\javahttps.dll -data=JAVA_VM_RES_BLD\javahttp.odc JAVA_VM_RES_IMG\javahttp.odc -data=JAVA_VM_RES_BLD\javahttps.odc JAVA_VM_RES_IMG\javahttps.odc - -// Socket protocol -file=ABI_DIR\BUILD_DIR\javasocket.dll SHARED_LIB_DIR\javasocket.dll -file=ABI_DIR\BUILD_DIR\javasocketscplugin.dll SHARED_LIB_DIR\javasocketscplugin.dll -data=JAVA_VM_RES_BLD\javasocket.odc JAVA_VM_RES_IMG\javasocket.odc - -// Secure socket protocol -file=ABI_DIR\BUILD_DIR\javassl.dll SHARED_LIB_DIR\javassl.dll -data=JAVA_VM_RES_BLD\javassl.odc JAVA_VM_RES_IMG\javassl.odc - - -//////////////////////////////// -// Java Extensions collection // -//////////////////////////////// - -// Push -file=ABI_DIR\BUILD_DIR\javapushcontroller.dll SHARED_LIB_DIR\javapushcontroller.dll -file=ABI_DIR\BUILD_DIR\javapushregistry.dll SHARED_LIB_DIR\javapushregistry.dll -data=JAVA_VM_RES_BLD\javapushregistry.odc JAVA_VM_RES_IMG\javapushregistry.odc - -// Bluetooth -file=ABI_DIR\BUILD_DIR\javabluecove.dll SHARED_LIB_DIR\javabluecove.dll -file=ABI_DIR\BUILD_DIR\javabluetooth.dll SHARED_LIB_DIR\javabluetooth.dll -file=ABI_DIR\BUILD_DIR\javabluetoothcommons.dll SHARED_LIB_DIR\javabluetoothcommons.dll -file=ABI_DIR\BUILD_DIR\javabtgoepscplugin.dll SHARED_LIB_DIR\javabtgoepscplugin.dll -file=ABI_DIR\BUILD_DIR\javabtl2capscplugin.dll SHARED_LIB_DIR\javabtl2capscplugin.dll -file=ABI_DIR\BUILD_DIR\javabtsppscplugin.dll SHARED_LIB_DIR\javabtsppscplugin.dll -data=JAVA_VM_RES_BLD\javabluecove.odc JAVA_VM_RES_IMG\javabluecove.odc -data=JAVA_VM_RES_BLD\javabluetooth.odc JAVA_VM_RES_IMG\javabluetooth.odc -data=JAVA_VM_RES_BLD\javabluetoothcommons.odc JAVA_VM_RES_IMG\javabluetoothcommons.odc - -// WMA -file=ABI_DIR\BUILD_DIR\javawma.dll SHARED_LIB_DIR\javawma.dll -file=ABI_DIR\BUILD_DIR\javawmamms.dll SHARED_LIB_DIR\javawmamms.dll -file=ABI_DIR\BUILD_DIR\javacbsscplugin.dll SHARED_LIB_DIR\javacbsscplugin.dll -file=ABI_DIR\BUILD_DIR\javammsscplugin.dll SHARED_LIB_DIR\javammsscplugin.dll -file=ABI_DIR\BUILD_DIR\javasmsscplugin.dll SHARED_LIB_DIR\javasmsscplugin.dll -data=JAVA_VM_RES_BLD\javawma.odc JAVA_VM_RES_IMG\javawma.odc -data=JAVA_VM_RES_BLD\javawmamms.odc JAVA_VM_RES_IMG\javawmamms.odc - -// Comm -file=ABI_DIR\BUILD_DIR\javacomm.dll SHARED_LIB_DIR\javacomm.dll -data=JAVA_VM_RES_BLD\javacomm.odc JAVA_VM_RES_IMG\javacomm.odc - -// Datagram -file=ABI_DIR\BUILD_DIR\javadatagram.dll SHARED_LIB_DIR\javadatagram.dll -file=ABI_DIR\BUILD_DIR\javadatagramscplugin.dll SHARED_LIB_DIR\javadatagramscplugin.dll -data=JAVA_VM_RES_BLD\javadatagram.odc JAVA_VM_RES_IMG\javadatagram.odc - -// Location API -file=ABI_DIR\BUILD_DIR\javalocation.dll SHARED_LIB_DIR\javalocation.dll -data=JAVA_VM_RES_BLD\javalocation.odc JAVA_VM_RES_IMG\javalocation.odc - -// Sensor API -file=ABI_DIR\BUILD_DIR\javasensor.dll SHARED_LIB_DIR\javasensor.dll -data=JAVA_VM_RES_BLD\javasensor.odc JAVA_VM_RES_IMG\javasensor.odc - -// Web services API -file=ABI_DIR\BUILD_DIR\javawebservices.dll SHARED_LIB_DIR\javawebservices.dll -data=JAVA_VM_RES_BLD\javawebservices.odc JAVA_VM_RES_IMG\javawebservices.odc - -// PIM API -file=ABI_DIR\BUILD_DIR\javapim.dll SHARED_LIB_DIR\javapim.dll -data=JAVA_VM_RES_BLD\javapim.odc JAVA_VM_RES_IMG\javapim.odc - -// RMS API -file=ABI_DIR\BUILD_DIR\javarms.dll SHARED_LIB_DIR\javarms.dll -data=JAVA_VM_RES_BLD\javarms.odc JAVA_VM_RES_IMG\javarms.odc - -// SATSA API -file=ABI_DIR\BUILD_DIR\javasatsa.dll SHARED_LIB_DIR\javasatsa.dll -data=JAVA_VM_RES_BLD\javasatsa.odc JAVA_VM_RES_IMG\javasatsa.odc - -// File API -file=ABI_DIR\BUILD_DIR\javafile.dll SHARED_LIB_DIR\javafile.dll -data=JAVA_VM_RES_BLD\javafile.odc JAVA_VM_RES_IMG\javafile.odc - -// IAP Info API -file=ABI_DIR\BUILD_DIR\javaiapinfo.dll SHARED_LIB_DIR\javaiapinfo.dll -data=JAVA_VM_RES_BLD\javaiapinfo.odc JAVA_VM_RES_IMG\javaiapinfo.odc - - -/////////////////// -// Miscellaneous // -/////////////////// - -// Generated localization file resources -data=JAVA_VM_RES_BLD\resources.jar JAVA_VM_RES_IMG\resources.jar - -// ODC list files -data=ZRESOURCE\java\midpOdcList JAVA_RES_IMG\midpodclist -data=ZRESOURCE\java\installerOdcList JAVA_RES_IMG\installerodclist -data=ZRESOURCE\java\tckRunnerOdcList JAVA_RES_IMG\tckrunnerodclist -data=ZRESOURCE\java\javacontrolpanelodclist JAVA_RES_IMG\javacontrolpanelodclist - -// trust roots list -data=ZRESOURCE\java\security\trustroots\midprootslist JAVA_RES_IMG\security\trustroots\midprootslist - -#endif diff -r 85266cc22c7f -r f40128debb5d rom/java_2_2.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rom/java_2_2.iby Wed Jun 23 18:07:10 2010 +0300 @@ -0,0 +1,363 @@ +/* +* 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: +* Image-description file of the Java package for ROFS1. +*/ + +#ifndef __JAVA_IBY__ +#define __JAVA_IBY__ + +#include + +// Helper defines +define JAVA_RES_BLD ABI_DIR\BUILD_DIR\z\resource\java +define JAVA_RES_IMG RESOURCE_FILES_DIR\java +define JAVA_VM_RES_BLD JAVA_RES_BLD\jvm\lib\jrt +define JAVA_VM_RES_IMG JAVA_RES_IMG\jvm\lib\jrt +define JAVA_POLICY_BLD ABI_DIR\BUILD_DIR\z\resource\java\security\policies +define JAVA_POLICY_IMG RESOURCE_FILES_DIR\java\security\policies + + +//////////////////////////// +// Java Manager collection// +//////////////////////////// + +// stub sis +data=ZSYSTEM\install\java.sis System\Install\java.sis + + +// AppMngr plugin +ECOM_PLUGIN( appmngr2midletplugin.dll, appmngr2midletplugin.rsc ) +data=ZRESOURCE\plugins\appmngr2midletplugin.rsc ECOM_RESOURCE_DIR\appmngr2midletplugin.rsc + +// Captain +file=ABI_DIR\BUILD_DIR\javacaptain_ext_autostarter.dll SHARED_LIB_DIR\javacaptain_ext_autostarter.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_btdeviceclassmanager.dll SHARED_LIB_DIR\javacaptain_ext_btdeviceclassmanager.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_config.dll SHARED_LIB_DIR\javacaptain_ext_config.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_ondemand_2.dll SHARED_LIB_DIR\javacaptain_ext_ondemand_2.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_ondemand_7.dll SHARED_LIB_DIR\javacaptain_ext_ondemand_7.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_preinstallerstarter.dll SHARED_LIB_DIR\javacaptain_ext_preinstallerstarter.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_pushregistryplugin.dll SHARED_LIB_DIR\javacaptain_ext_pushregistryplugin.dll +file=ABI_DIR\BUILD_DIR\javacaptain_ext_storageserverplugin.dll SHARED_LIB_DIR\javacaptain_ext_storageserverplugin.dll +file=ABI_DIR\BUILD_DIR\javacaptain.exe PROGRAMS_DIR\javacaptain.exe + +// Registry +file=ABI_DIR\BUILD_DIR\javaregistryclient.dll SHARED_LIB_DIR\javaregistryclient.dll +file=ABI_DIR\BUILD_DIR\javasizehelperclient.dll SHARED_LIB_DIR\javasizehelperclient.dll +file=ABI_DIR\BUILD_DIR\javasizehelperserver.dll SHARED_LIB_DIR\javasizehelperserver.dll + +// Installer +ECOM_PLUGIN(ifeui.dll,ifeui.rsc) +data=ZRESOURCE\plugins\ifeui.rsc ECOM_RESOURCE_DIR\ifeui.rsc +data=ZPRIVATE\10003a3f\apps\javainstaller_reg.rsc \private\10003a3f\import\apps\javainstaller_reg.rsc +data=ZRESOURCE\apps\javainstaller_loc.rsc APP_RESOURCE_DIR\javainstaller_loc.rsc +data=ZRESOURCE\apps\javainstaller_icon.mif APP_BITMAP_DIR\javainstaller_icon.mif +file=ABI_DIR\BUILD_DIR\javainstaller.dll SHARED_LIB_DIR\javainstaller.dll +data=JAVA_VM_RES_BLD\javainstallerui.odc JAVA_VM_RES_IMG\javainstallerui.odc +file=ABI_DIR\BUILD_DIR\javainstallerui.dll SHARED_LIB_DIR\javainstallerui.dll +data=JAVA_VM_RES_BLD\javainstaller.odc JAVA_VM_RES_IMG\javainstaller.odc +file=ABI_DIR\BUILD_DIR\javainstallerstarter.dll PROGRAMS_DIR\javainstallerstarter.dll +file=ABI_DIR\BUILD_DIR\javapreinstaller.dll PROGRAMS_DIR\javapreinstaller.dll +data=ZRESOURCE\java\java_app_92.mif JAVA_RES_IMG\java_app.mif +data=ZRESOURCE\java\java_trusted.png JAVA_RES_IMG\java_trusted.png +data=ZRESOURCE\java\java_untrusted.png JAVA_RES_IMG\java_untrusted.png +data=DATAZ_\private\102033E6\installer\inst_plugins.cfg \private\102033E6\installer\inst_plugins.cfg + +// Launchers +file=ABI_DIR\BUILD_DIR\javalauncher.exe PROGRAMS_DIR\javalauncher.exe +ECOM_PLUGIN(javaappschemeplugin.dll,javaappschemeplugin.rsc) +data=ZRESOURCE\plugins\javaappschemeplugin.rsc ECOM_RESOURCE_DIR\javaappschemeplugin.rsc + +// SID Checker +ECOM_PLUGIN(javasidchecker.dll,10281FBE.rsc) +data=ZRESOURCE\plugins\javasidchecker.rsc ECOM_RESOURCE_DIR\javasidchecker.rsc + +// Recognizers +ECOM_PLUGIN(recjar.dll, 102031FB.rsc) +data=ZRESOURCE\plugins\recjar.rsc ECOM_RESOURCE_DIR\recjar.rsc + +// Backup & Restore +file=ABI_DIR\BUILD_DIR\javabackup.exe PROGRAMS_DIR\javabackup.exe +ECOM_PLUGIN(midp2backupplugin.dll,10282474.rsc) +data=ZRESOURCE\plugins\midp2backupplugin.rsc ECOM_RESOURCE_DIR\midp2backupplugin.rsc +data=DATAZ_\private\1028246F\backup_registration.xml \private\1028246F\backup_registration.xml +data=DATAZ_\private\102033E6\backup_registration.xml \private\102033E6\backup_registration.xml + + +///////////////////////// +// Java UIs collection // +///////////////////////// + +// CoreUi +file=ABI_DIR\BUILD_DIR\javacoreui.dll SHARED_LIB_DIR\javacoreui.dll +data=JAVA_VM_RES_BLD\javacoreui.odc JAVA_VM_RES_IMG\javacoreui.odc + +// eSWT +file=ABI_DIR\BUILD_DIR\eswt.dll SHARED_LIB_DIR\eswt.dll +data=JAVA_VM_RES_BLD\eswt.odc JAVA_VM_RES_IMG\eswt.odc +file=ABI_DIR\BUILD_DIR\eswtphysics.dll SHARED_LIB_DIR\eswtphysics.dll +file=ABI_DIR\BUILD_DIR\eswtapifacade.dll SHARED_LIB_DIR\eswtapifacade.dll +file=ABI_DIR\BUILD_DIR\eswtdirectcontent.dll SHARED_LIB_DIR\eswtdirectcontent.dll +data=JAVA_VM_RES_BLD\eswtdirectcontent.odc JAVA_VM_RES_IMG\eswtdirectcontent.odc +data=ZPRIVATE\10003a3f\apps\eswt_reg.rsc \private\10003a3f\import\apps\eswt_reg.rsc + +// LCDUI +file=ABI_DIR\BUILD_DIR\javalcdui.dll SHARED_LIB_DIR\javalcdui.dll +data=JAVA_VM_RES_BLD\javalcdui.odc JAVA_VM_RES_IMG\javalcdui.odc +file=ABI_DIR\BUILD_DIR\lcdui.dll SHARED_LIB_DIR\lcdui.dll +file=ABI_DIR\BUILD_DIR\lcdgr.dll SHARED_LIB_DIR\lcdgr.dll +file=ABI_DIR\BUILD_DIR\lcdgdrv.dll SHARED_LIB_DIR\lcdgdrv.dll +file=ABI_DIR\BUILD_DIR\lcdgdrvi.dll SHARED_LIB_DIR\lcdgdrvi.dll +file=ABI_DIR\BUILD_DIR\lcduiphysicswrap.dll SHARED_LIB_DIR\lcduiphysicswrap.dll +ECOM_PLUGIN(LCDC4K.dll, 10208164.rsc) +ECOM_PLUGIN(LCDC64K.dll, 10208162.rsc) +ECOM_PLUGIN(LCDC16MU.dll, 10208166.rsc) +ECOM_PLUGIN(LCDC16MA.dll, 10208168.rsc) +data=ZRESOURCE\java\lcdgr.rsc JAVA_RES_IMG\lcdgr.rsc +data=ZPRIVATE\10003a3f\apps\lcdui_reg.rsc \private\10003a3f\import\apps\lcdui_reg.rsc + +SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,lcdui) + +// AMMS API +file=ABI_DIR\BUILD_DIR\javaamms.dll SHARED_LIB_DIR\javaamms.dll +data=JAVA_VM_RES_BLD\javaamms.odc JAVA_VM_RES_IMG\javaamms.odc + +// Mobile Media API +file=ABI_DIR\BUILD_DIR\javamobilemedia.dll SHARED_LIB_DIR\javamobilemedia.dll +data=JAVA_VM_RES_BLD\javamobilemedia.odc JAVA_VM_RES_IMG\javamobilemedia.odc +data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaCapture.wav \System\Sounds\Digital\CamcorderJavaCapture.wav +data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaStart.wav \System\Sounds\Digital\CamcorderJavaStart.wav + +// MobInfo API +file=ABI_DIR\BUILD_DIR\javamobinfo.dll SHARED_LIB_DIR\javamobinfo.dll +data=JAVA_VM_RES_BLD\javamobinfo.odc JAVA_VM_RES_IMG\javamobinfo.odc + +// GlobalIndicators API +file=ABI_DIR\BUILD_DIR\javaglobalindicators.dll SHARED_LIB_DIR\javaglobalindicators.dll +data=JAVA_VM_RES_BLD\javaglobalindicators.odc JAVA_VM_RES_IMG\javaglobalindicators.odc + +// SoftNotification API +file=ABI_DIR\BUILD_DIR\javasoftnotification.dll SHARED_LIB_DIR\javasoftnotification.dll +data=JAVA_VM_RES_BLD\javasoftnotification.odc JAVA_VM_RES_IMG\javasoftnotification.odc + +// 2G API +file=ABI_DIR\BUILD_DIR\javam2g.dll SHARED_LIB_DIR\javam2g.dll +data=JAVA_VM_RES_BLD\javam2g.odc JAVA_VM_RES_IMG\javam2g.odc + +// 3G API +file=ABI_DIR\BUILD_DIR\javam3g.dll SHARED_LIB_DIR\javam3g.dll +data=JAVA_VM_RES_BLD\javam3g.odc JAVA_VM_RES_IMG\javam3g.odc + +// Nokia Sound API +file=ABI_DIR\BUILD_DIR\javanokiasound.dll SHARED_LIB_DIR\javanokiasound.dll +data=JAVA_VM_RES_BLD\javanokiasound.odc JAVA_VM_RES_IMG\javanokiasound.odc + +// Remote Connection Observer +file=ABI_DIR\BUILD_DIR\javaremconobserver.dll SHARED_LIB_DIR\javaremconobserver.dll + +// Legacy utilities +file=ABI_DIR\BUILD_DIR\javalegacyutils.dll SHARED_LIB_DIR\javalegacyutils.dll +data=JAVA_VM_RES_BLD\javalegacyutils.odc JAVA_VM_RES_IMG\javalegacyutils.odc + + +///////////////////////////// +// Java Runtimes collection // +///////////////////////////// + +// Runtime utilities +file=ABI_DIR\BUILD_DIR\javaruntimeui.dll SHARED_LIB_DIR\javaruntimeui.dll +data=JAVA_VM_RES_BLD\javaruntimeui.odc JAVA_VM_RES_IMG\javaruntimeui.odc +file=ABI_DIR\BUILD_DIR\javaruntimestarterutils.dll SHARED_LIB_DIR\javaruntimestarterutils.dll + +// MIDP runtime +file=ABI_DIR\BUILD_DIR\javamidp.exe PROGRAMS_DIR\javamidp.exe +file=ABI_DIR\BUILD_DIR\javamidpstarter.dll SHARED_LIB_DIR\javamidpstarter.dll +file=ABI_DIR\BUILD_DIR\javamidpruntime.dll SHARED_LIB_DIR\javamidpruntime.dll +data=JAVA_VM_RES_BLD\javamidpruntime.odc JAVA_VM_RES_IMG\javamidpruntime.odc + +// An empty JVM argument modifier (to prevent 3rd parties from installing a DLL with this name) +// To enable JVM argument modifier - comment 1st line below and uncomment 2nd line below +file=ABI_DIR\BUILD_DIR\javajvmargsmodifier.dll SHARED_LIB_DIR\javajvmargsmodifier.dll +//file=ABI_DIR\BUILD_DIR\javajvmargsmodifierfile.dll SHARED_LIB_DIR\javajvmargsmodifier.dll + + +///////////////////////////// +// Java Commons collection // +///////////////////////////// + +// J9 JVM +file=ABI_DIR\BUILD_DIR\j9.dll SHARED_LIB_DIR\j9.dll +file=ABI_DIR\BUILD_DIR\j9vmall23.dll SHARED_LIB_DIR\j9vmall23.dll +file=ABI_DIR\BUILD_DIR\j9mjit23.dll SHARED_LIB_DIR\j9mjit23.dll +file=ABI_DIR\BUILD_DIR\jclcldc11_23.dll SHARED_LIB_DIR\jclcldc11_23.dll +file=ABI_DIR\BUILD_DIR\jclcdc11_23.dll SHARED_LIB_DIR\jclcdc11_23.dll +file=ABI_DIR\BUILD_DIR\j9fdm23.dll SHARED_LIB_DIR\j9fdm23.dll +file=ABI_DIR\BUILD_DIR\JvmNativePort.dll SHARED_LIB_DIR\JvmNativePort.dll +data=JAVA_RES_BLD\jvm\bin\java.properties JAVA_RES_IMG\jvm\bin\java.properties +data=JAVA_RES_BLD\jvm\lib\security\java.policy JAVA_RES_IMG\jvm\lib\security\java.policy +data=JAVA_RES_BLD\jvm\lib\security\java.security JAVA_RES_IMG\jvm\lib\security\java.security + +// Utilities +file=ABI_DIR\BUILD_DIR\javautils.dll SHARED_LIB_DIR\javautils.dll +data=JAVA_VM_RES_BLD\javautils.odc JAVA_VM_RES_IMG\javautils.odc +file=ABI_DIR\BUILD_DIR\javacomms.dll SHARED_LIB_DIR\javacomms.dll +data=JAVA_VM_RES_BLD\javacomms.odc JAVA_VM_RES_IMG\javacomms.odc +file=ABI_DIR\BUILD_DIR\javaipc.dll SHARED_LIB_DIR\javaipc.dll +file=ABI_DIR\BUILD_DIR\javafileutils.dll SHARED_LIB_DIR\javafileutils.dll +data=JAVA_VM_RES_BLD\javafileutils.odc JAVA_VM_RES_IMG\javafileutils.odc +file=ABI_DIR\BUILD_DIR\javadebugapi.dll SHARED_LIB_DIR\javadebugapi.dll + +// Security dlls +file=ABI_DIR\BUILD_DIR\javasecurity.dll SHARED_LIB_DIR\javasecurity.dll +data=JAVA_VM_RES_BLD\javasecurity.odc JAVA_VM_RES_IMG\javasecurity.odc +ECOM_PLUGIN(javaunicertstoreplugin.dll,200213A3.rsc) +data=ZRESOURCE\plugins\javaunicertstoreplugin.rsc ECOM_RESOURCE_DIR\javaunicertstoreplugin.rsc + +// Security certs & policies +data=JAVA_POLICY_BLD\s60_manufacturer.ser JAVA_POLICY_IMG\s60_manufacturer.ser +data=JAVA_POLICY_BLD\s60_operator.ser JAVA_POLICY_IMG\s60_operator.ser +data=JAVA_POLICY_BLD\s60_trustedthirdparty.ser JAVA_POLICY_IMG\s60_trustedthirdparty.ser +data=JAVA_POLICY_BLD\s60_untrusted.ser JAVA_POLICY_IMG\s60_untrusted.ser +data=JAVA_POLICY_BLD\msa_manufacturer.ser JAVA_POLICY_IMG\msa_manufacturer.ser +data=JAVA_POLICY_BLD\msa_operator.ser JAVA_POLICY_IMG\msa_operator.ser +data=JAVA_POLICY_BLD\msa_trustedthirdparty.ser JAVA_POLICY_IMG\msa_trustedthirdparty.ser +data=JAVA_POLICY_BLD\msa_untrusted.ser JAVA_POLICY_IMG\msa_untrusted.ser +data=JAVA_POLICY_BLD\att_manufacturer.ser JAVA_POLICY_IMG\att_manufacturer.ser +data=JAVA_POLICY_BLD\att_operator.ser JAVA_POLICY_IMG\att_operator.ser +data=JAVA_POLICY_BLD\att_operatorextra.ser JAVA_POLICY_IMG\att_operatorextra.ser +data=JAVA_POLICY_BLD\att_trustedthirdparty.ser JAVA_POLICY_IMG\att_trustedthirdparty.ser +data=JAVA_POLICY_BLD\att_untrusted.ser JAVA_POLICY_IMG\att_untrusted.ser +data=JAVA_POLICY_BLD\all.ser JAVA_POLICY_IMG\all.ser + + +// Java environment info +file=ABI_DIR\BUILD_DIR\javaenvinfo.dll SHARED_LIB_DIR\javaenvinfo.dll +data=ABI_DIR\BUILD_DIR\Z\Resource\versions\java.txt RESOURCE_FILES_DIR\versions\java.txt + +// Storage +file=ABI_DIR\BUILD_DIR\javastorage.dll SHARED_LIB_DIR\javastorage.dll +data=JAVA_VM_RES_BLD\javastorage.odc JAVA_VM_RES_IMG\javastorage.odc + +// GCF base +file=ABI_DIR\BUILD_DIR\javagcf.dll SHARED_LIB_DIR\javagcf.dll +data=JAVA_VM_RES_BLD\javagcf.odc JAVA_VM_RES_IMG\javagcf.odc + +// Connection Manager +file=ABI_DIR\BUILD_DIR\javaconnectionmanager.dll SHARED_LIB_DIR\javaconnectionmanager.dll +data=JAVA_VM_RES_BLD\javaconnectionmanager.odc JAVA_VM_RES_IMG\javaconnectionmanager.odc + +// Http & https protocols +file=ABI_DIR\BUILD_DIR\javahttp.dll SHARED_LIB_DIR\javahttp.dll +file=ABI_DIR\BUILD_DIR\javahttps.dll SHARED_LIB_DIR\javahttps.dll +data=JAVA_VM_RES_BLD\javahttp.odc JAVA_VM_RES_IMG\javahttp.odc +data=JAVA_VM_RES_BLD\javahttps.odc JAVA_VM_RES_IMG\javahttps.odc + +// Socket protocol +file=ABI_DIR\BUILD_DIR\javasocket.dll SHARED_LIB_DIR\javasocket.dll +file=ABI_DIR\BUILD_DIR\javasocketscplugin.dll SHARED_LIB_DIR\javasocketscplugin.dll +data=JAVA_VM_RES_BLD\javasocket.odc JAVA_VM_RES_IMG\javasocket.odc + +// Secure socket protocol +file=ABI_DIR\BUILD_DIR\javassl.dll SHARED_LIB_DIR\javassl.dll +data=JAVA_VM_RES_BLD\javassl.odc JAVA_VM_RES_IMG\javassl.odc + + +//////////////////////////////// +// Java Extensions collection // +//////////////////////////////// + +// Push +file=ABI_DIR\BUILD_DIR\javapushcontroller.dll SHARED_LIB_DIR\javapushcontroller.dll +file=ABI_DIR\BUILD_DIR\javapushregistry.dll SHARED_LIB_DIR\javapushregistry.dll +data=JAVA_VM_RES_BLD\javapushregistry.odc JAVA_VM_RES_IMG\javapushregistry.odc + +// Bluetooth +file=ABI_DIR\BUILD_DIR\javabluecove.dll SHARED_LIB_DIR\javabluecove.dll +file=ABI_DIR\BUILD_DIR\javabluetooth.dll SHARED_LIB_DIR\javabluetooth.dll +file=ABI_DIR\BUILD_DIR\javabluetoothcommons.dll SHARED_LIB_DIR\javabluetoothcommons.dll +file=ABI_DIR\BUILD_DIR\javabtgoepscplugin.dll SHARED_LIB_DIR\javabtgoepscplugin.dll +file=ABI_DIR\BUILD_DIR\javabtl2capscplugin.dll SHARED_LIB_DIR\javabtl2capscplugin.dll +file=ABI_DIR\BUILD_DIR\javabtsppscplugin.dll SHARED_LIB_DIR\javabtsppscplugin.dll +data=JAVA_VM_RES_BLD\javabluecove.odc JAVA_VM_RES_IMG\javabluecove.odc +data=JAVA_VM_RES_BLD\javabluetooth.odc JAVA_VM_RES_IMG\javabluetooth.odc +data=JAVA_VM_RES_BLD\javabluetoothcommons.odc JAVA_VM_RES_IMG\javabluetoothcommons.odc + +// WMA +file=ABI_DIR\BUILD_DIR\javawma.dll SHARED_LIB_DIR\javawma.dll +file=ABI_DIR\BUILD_DIR\javawmamms.dll SHARED_LIB_DIR\javawmamms.dll +file=ABI_DIR\BUILD_DIR\javacbsscplugin.dll SHARED_LIB_DIR\javacbsscplugin.dll +file=ABI_DIR\BUILD_DIR\javammsscplugin.dll SHARED_LIB_DIR\javammsscplugin.dll +file=ABI_DIR\BUILD_DIR\javasmsscplugin.dll SHARED_LIB_DIR\javasmsscplugin.dll +data=JAVA_VM_RES_BLD\javawma.odc JAVA_VM_RES_IMG\javawma.odc +data=JAVA_VM_RES_BLD\javawmamms.odc JAVA_VM_RES_IMG\javawmamms.odc + +// Comm +file=ABI_DIR\BUILD_DIR\javacomm.dll SHARED_LIB_DIR\javacomm.dll +data=JAVA_VM_RES_BLD\javacomm.odc JAVA_VM_RES_IMG\javacomm.odc + +// Datagram +file=ABI_DIR\BUILD_DIR\javadatagram.dll SHARED_LIB_DIR\javadatagram.dll +file=ABI_DIR\BUILD_DIR\javadatagramscplugin.dll SHARED_LIB_DIR\javadatagramscplugin.dll +data=JAVA_VM_RES_BLD\javadatagram.odc JAVA_VM_RES_IMG\javadatagram.odc + +// Location API +file=ABI_DIR\BUILD_DIR\javalocation.dll SHARED_LIB_DIR\javalocation.dll +data=JAVA_VM_RES_BLD\javalocation.odc JAVA_VM_RES_IMG\javalocation.odc + +// Sensor API +file=ABI_DIR\BUILD_DIR\javasensor.dll SHARED_LIB_DIR\javasensor.dll +data=JAVA_VM_RES_BLD\javasensor.odc JAVA_VM_RES_IMG\javasensor.odc + +// Web services API +file=ABI_DIR\BUILD_DIR\javawebservices.dll SHARED_LIB_DIR\javawebservices.dll +data=JAVA_VM_RES_BLD\javawebservices.odc JAVA_VM_RES_IMG\javawebservices.odc + +// PIM API +file=ABI_DIR\BUILD_DIR\javapim.dll SHARED_LIB_DIR\javapim.dll +data=JAVA_VM_RES_BLD\javapim.odc JAVA_VM_RES_IMG\javapim.odc + +// RMS API +file=ABI_DIR\BUILD_DIR\javarms.dll SHARED_LIB_DIR\javarms.dll +data=JAVA_VM_RES_BLD\javarms.odc JAVA_VM_RES_IMG\javarms.odc + +// SATSA API +file=ABI_DIR\BUILD_DIR\javasatsa.dll SHARED_LIB_DIR\javasatsa.dll +data=JAVA_VM_RES_BLD\javasatsa.odc JAVA_VM_RES_IMG\javasatsa.odc + +// File API +file=ABI_DIR\BUILD_DIR\javafile.dll SHARED_LIB_DIR\javafile.dll +data=JAVA_VM_RES_BLD\javafile.odc JAVA_VM_RES_IMG\javafile.odc + +// IAP Info API +file=ABI_DIR\BUILD_DIR\javaiapinfo.dll SHARED_LIB_DIR\javaiapinfo.dll +data=JAVA_VM_RES_BLD\javaiapinfo.odc JAVA_VM_RES_IMG\javaiapinfo.odc + + +/////////////////// +// Miscellaneous // +/////////////////// + +// Generated localization file resources +data=JAVA_VM_RES_BLD\resources.jar JAVA_VM_RES_IMG\resources.jar + +// ODC list files +data=ZRESOURCE\java\midpOdcList JAVA_RES_IMG\midpodclist +data=ZRESOURCE\java\installerOdcList JAVA_RES_IMG\installerodclist +data=ZRESOURCE\java\tckRunnerOdcList JAVA_RES_IMG\tckrunnerodclist +data=ZRESOURCE\java\javacontrolpanelodclist JAVA_RES_IMG\javacontrolpanelodclist + +// trust roots list +data=ZRESOURCE\java\security\trustroots\midprootslist JAVA_RES_IMG\security\trustroots\midprootslist + +#endif diff -r 85266cc22c7f -r f40128debb5d rom/java_3_1.iby --- a/rom/java_3_1.iby Fri Jun 11 13:33:44 2010 +0300 +++ b/rom/java_3_1.iby Wed Jun 23 18:07:10 2010 +0300 @@ -41,6 +41,7 @@ data=DATAZ_\resource\qt\plugins\appsettings\javaapplicationsettingsview.qtplugin resource\qt\plugins\appsettings\javaapplicationsettingsview.qtplugin // Captain +file=ABI_DIR\BUILD_DIR\javacaptain_ext_autostarter.dll SHARED_LIB_DIR\javacaptain_ext_autostarter.dll file=ABI_DIR\BUILD_DIR\javacaptain_ext_btdeviceclassmanager.dll SHARED_LIB_DIR\javacaptain_ext_btdeviceclassmanager.dll file=ABI_DIR\BUILD_DIR\javacaptain_ext_config.dll SHARED_LIB_DIR\javacaptain_ext_config.dll file=ABI_DIR\BUILD_DIR\javacaptain_ext_ondemand_2.dll SHARED_LIB_DIR\javacaptain_ext_ondemand_2.dll @@ -78,10 +79,6 @@ ECOM_PLUGIN(javaappschemeplugin.dll,javaappschemeplugin.rsc) data=ZRESOURCE\plugins\javaappschemeplugin.rsc ECOM_RESOURCE_DIR\javaappschemeplugin.rsc -// SID Checker -ECOM_PLUGIN(javasidchecker.dll,javasidchecker.rsc) -data=ZRESOURCE\plugins\javasidchecker.rsc ECOM_RESOURCE_DIR\javasidchecker.rsc - #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK // Usif installer plugin ECOM_PLUGIN(javasifplugin.dll,javasifplugin.rsc) @@ -119,18 +116,7 @@ // LCDUI file=ABI_DIR\BUILD_DIR\openlcdui.dll SHARED_LIB_DIR\openlcdui.dll data=JAVA_VM_RES_BLD\openlcdui.odc JAVA_VM_RES_IMG\openlcdui.odc -// AMMS API -/* -file=ABI_DIR\BUILD_DIR\javaamms.dll SHARED_LIB_DIR\javaamms.dll -data=JAVA_VM_RES_BLD\javaamms.odc JAVA_VM_RES_IMG\javaamms.odc -*/ -// Mobile Media API -/* -file=ABI_DIR\BUILD_DIR\javamobilemedia.dll SHARED_LIB_DIR\javamobilemedia.dll -data=JAVA_VM_RES_BLD\javamobilemedia.odc JAVA_VM_RES_IMG\javamobilemedia.odc -data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaCapture.wav \System\Sounds\Digital\CamcorderJavaCapture.wav -data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaStart.wav \System\Sounds\Digital\CamcorderJavaStart.wav -*/ + // MobInfo API file=ABI_DIR\BUILD_DIR\javamobinfo.dll SHARED_LIB_DIR\javamobinfo.dll data=JAVA_VM_RES_BLD\javamobinfo.odc JAVA_VM_RES_IMG\javamobinfo.odc @@ -341,6 +327,15 @@ file=ABI_DIR\BUILD_DIR\javaiapinfo.dll SHARED_LIB_DIR\javaiapinfo.dll data=JAVA_VM_RES_BLD\javaiapinfo.odc JAVA_VM_RES_IMG\javaiapinfo.odc +// MMAPI +file=ABI_DIR\BUILD_DIR\javamobilemedia.dll SHARED_LIB_DIR\javamobilemedia.dll +data=JAVA_VM_RES_BLD\javamobilemedia.odc JAVA_VM_RES_IMG\javamobilemedia.odc +data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaCapture.wav \System\Sounds\Digital\CamcorderJavaCapture.wav +data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\CamcorderJavaStart.wav \System\Sounds\Digital\CamcorderJavaStart.wav + +// AMMS +file=ABI_DIR\BUILD_DIR\javaamms.dll SHARED_LIB_DIR\javaamms.dll +data=JAVA_VM_RES_BLD\javaamms.odc JAVA_VM_RES_IMG\javaamms.odc /////////////////// // Miscellaneous //