--- 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
--- 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
--- 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:
--- 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)
--- 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
--- 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
--- /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 @@
+<!--
+#
+# 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: Configuration file for the Carbine CodeScanner, to
+# scan only high-priority issues.
+#
+-->
+<codescannerConfig>
+ <sources>
+ <!-- source files matching any of the exclude patterns below will not be scanned -->
+
+ <!-- binary files -->
+ <exclude>.*\.au</exclude>
+ <exclude>.*\.avi</exclude>
+ <exclude>.*\.bmp</exclude>
+ <exclude>.*\.dll</exclude>
+ <exclude>.*\.doc</exclude>
+ <exclude>.*\.exe</exclude>
+ <exclude>.*\.gif</exclude>
+ <exclude>.*\.jpg</exclude>
+ <exclude>.*\.mbm</exclude>
+ <exclude>.*\.mp3</exclude>
+ <exclude>.*\.mpg</exclude>
+ <exclude>.*\.png</exclude>
+ <exclude>.*\.raw</exclude>
+ <exclude>.*\.rtf</exclude>
+ <exclude>.*\.tif</exclude>
+ <exclude>.*\.wav</exclude>
+ <exclude>.*\.wbmp</exclude>
+ <exclude>.*\.wmf</exclude>
+ <exclude>.*\.xls</exclude>
+ <!-- typical test directory names -->
+ <exclude>.*\\ts_.*</exclude>
+ <exclude>.*\\tsrc\\.*</exclude>
+ <exclude>.*\\tsrc.s60\\.*</exclude>
+ <exclude>.*\\test\\.*</exclude>
+ <exclude>.*\\internal\\.*</exclude>
+ <exclude>.*\\Internal\\.*</exclude>
+ <exclude>.*\\.svn\\.*</exclude>
+ <exclude>\\tools\\.*</exclude>
+ </sources>
+ <severities>
+ <!-- Group scripts based on severity level: -->
+ <!-- enable="true" or "false" -->
+
+ <high enable="true"/>
+ <medium enable="false"/>
+ <low enable="false"/>
+ </severities>
+</codescannerConfig>
--- 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
Binary file build/loc/resources.jar has changed
Binary file build/loc/resources_qt.jar has changed
--- 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
--- /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
--- 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
--- 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
--- 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"
--- 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
--- 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
--- 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
--- 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
--- 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);
--- 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;
+
+
}
// ---------------------------------------------------------------------------
--- 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
}
--- 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";
}
/**
--- 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;
}
/**
--- 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
}
--- 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)
--- 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)
--- 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)
--- 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)
--- 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 <domain/osextensions/platform_paths.hrh>
-//SYSTEMINCLUDE /epoc32/include
-
USERINCLUDE ../../../inc
USERINCLUDE ../../../../tools/cpputest/include/cpputest
USERINCLUDE ../../../../tools/cpputest/include/platforms/symbian
--- 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 <platform_paths.hrh>
-SYSTEMINCLUDE /epoc32/include
+APP_LAYER_SYSTEMINCLUDE
USERINCLUDE ../../../inc
USERINCLUDE ../../../../../tools/cpputest/include/cpputest
--- 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
--- 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\"" \
-}
--- 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;
}
--- 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
--- 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;
}
--- 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;
}
--- 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";
}
--- 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";
}
--- 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;
}
--- 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;
}
--- 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";
}
--- 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";
}
--- 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<policyPermissions.length; i++)
{
if (policyPermissions[i].getType()
- == PolicyBasedPermission.ASSIGNED_TYPE)
+ == PolicyBasedPermission.ASSIGNED_TYPE
+ || policyPermissions[i].getType()
+ == PolicyBasedPermission.USER_ASSIGNED_TYPE)
{
PolicyBasedPermissionImpl p1 = new PolicyBasedPermissionImpl(
policyPermissions[i]);
@@ -609,6 +612,7 @@
policyPermissions[i].getName(),
policyPermissions[i].getTarget(),
policyPermissions[i].getActionList(),
+ policyPermissions[i].getType(),
policyPermissions[i].getUserSecuritySettings()));
}
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicy.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicy.java Wed Jun 23 18:07:10 2010 +0300
@@ -132,13 +132,14 @@
int domainLength = buf[index];
index++;
protectionDomain = new String(buf, index, domainLength);
+ boolean activeSettings = true;
index+= domainLength;
int permissions = buf[index];
index++;
policyPermissions = new SecurityPolicyPermission[permissions];
for (int i=0; i<permissions; i++)
{
- policyPermissions[i] = SecurityPolicyPermission.getFromBytes(buf);
+ policyPermissions[i] = SecurityPolicyPermission.getFromBytes(buf, activeSettings);
}
}
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermission.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermission.java Wed Jun 23 18:07:10 2010 +0300
@@ -52,12 +52,13 @@
String name,
String target,
String actionList,
+ int type,
SecurityPolicyPermissionSettings settings)
{
this.name = name;
this.target = target;
this.actionList = actionList;
- this.type = USER_TYPE;
+ this.type = type;
this.settings = settings;
}
@@ -65,13 +66,18 @@
String name,
String target,
String actionList,
+ SecurityPolicyPermissionSettings settings)
+ {
+ this(name, target, actionList, USER_TYPE, settings);
+ }
+
+ public SecurityPolicyPermission(
+ String name,
+ String target,
+ String actionList,
int type)
{
- this.name = name;
- this.target = target;
- this.actionList = actionList;
- // Check type
- this.type = type;
+ this(name, target, actionList, type, null);
}
public int getType()
@@ -145,7 +151,7 @@
return oStream.toByteArray();
}
- public static SecurityPolicyPermission getFromBytes(byte[] buf)
+ public static SecurityPolicyPermission getFromBytes(byte[] buf, boolean activeSettings)
{
int type = buf[SecurityPolicy.index];
SecurityPolicy.index++;
@@ -155,10 +161,12 @@
SecurityPolicy.index += nameLen;
String target = readString(buf);
String actionList = readString(buf);
- if (type == USER_TYPE)
+ if (type == USER_TYPE || type == USER_ASSIGNED_TYPE)
{
- return new SecurityPolicyPermission(name, target, actionList,
- SecurityPolicyPermissionSettings.getFromBytes(buf));
+ return new SecurityPolicyPermission(
+ name, target, actionList, type,
+ SecurityPolicyPermissionSettings.getFromBytes(
+ buf, activeSettings));
}
return new SecurityPolicyPermission(name, target, actionList, type);
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermissionSettings.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermissionSettings.java Wed Jun 23 18:07:10 2010 +0300
@@ -30,15 +30,37 @@
private String name;
private int currentInteractionMode;
private int[] allowedInteractionModes;
+ private boolean active;
+
+ public SecurityPolicyPermissionSettings(
+ String name)
+ {
+ this(name, UNDEFINED_INTERACTION_MODE, null, true);
+ }
public SecurityPolicyPermissionSettings(
String name,
int currentInteractionMode,
int[] allowedInteractionModes)
{
+ this(name, currentInteractionMode, allowedInteractionModes, true);
+ }
+
+ public SecurityPolicyPermissionSettings(
+ String name,
+ int currentInteractionMode,
+ int[] allowedInteractionModes,
+ boolean activeSettings)
+ {
this.name = name;
this.currentInteractionMode = currentInteractionMode;
this.allowedInteractionModes = allowedInteractionModes;
+ this.active = activeSettings;
+ }
+
+ public boolean isActive()
+ {
+ return active;
}
public String getName()
@@ -166,7 +188,7 @@
return oStream.toByteArray();
}
- public static SecurityPolicyPermissionSettings getFromBytes(byte[] buf)
+ public static SecurityPolicyPermissionSettings getFromBytes(byte[] buf, boolean activeSettings)
{
int nameLen = buf[SecurityPolicy.index];
SecurityPolicy.index++;
@@ -181,7 +203,7 @@
allowedInteractionModes[i] = buf[SecurityPolicy.index];
SecurityPolicy.index++;
}
- return new SecurityPolicyPermissionSettings(name, currentInteractionMode, allowedInteractionModes);
+ return new SecurityPolicyPermissionSettings(name, currentInteractionMode, allowedInteractionModes, activeSettings);
}
}
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Wed Jun 23 18:07:10 2010 +0300
@@ -21,6 +21,7 @@
import java.util.Vector;
import java.security.AccessControlException;
import com.nokia.mj.impl.utils.Uid;
+import com.nokia.mj.impl.security.midp.common.PolicyBasedPermission;
import com.nokia.mj.impl.security.midp.common.PolicyBasedPermissionImpl;
import com.nokia.mj.impl.security.midp.common.UserPermission;
import com.nokia.mj.impl.security.midp.common.UserSecuritySettings;
@@ -256,7 +257,7 @@
*/
private void handleUserPermission(
Permission checkedPermission,
- UserPermission resolvedPermission,
+ PolicyBasedPermissionImpl resolvedPermission,
SecurityStorage storage)
{
UserSecuritySettings settings = resolvedPermission
@@ -300,6 +301,14 @@
new java.security.AccessControlException(
"Permission " + checkedPermission + " not allowed"));
}
+
+ // if the permission was assigned or the settings were not active,
+ // then activate the user settings
+ if (resolvedPermission.getType() != PolicyBasedPermission.USER_TYPE
+ || !settings.isActive())
+ {
+ storage.activateUserSecuritySettings(iAppUID, resolvedPermission);
+ }
// if settings have not changed, still do one check on the current
// interaction mode: if it's blanket, mark down that the prompt in
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java Wed Jun 23 18:07:10 2010 +0300
@@ -203,7 +203,9 @@
// add new settings
newPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(
- p.getPermissionInstance(), newSettings));
+ p.getPermissionInstance(),
+ p.getType(),
+ newSettings));
}
else
{
@@ -240,6 +242,7 @@
getResolvedPermission(
requestedPermission,
policyPermission,
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -274,6 +277,7 @@
PolicyBasedPermissionImpl permission1 =
getResolvedPermission(requestedPermission,
policyPermission,
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -307,6 +311,7 @@
// the combined actions
resolvedPermissions.setElementAt(getResolvedPermission(
permission1.getPromptDetails(),
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -358,6 +363,7 @@
(PermisionInstanceAndSettings)tmp.elementAt(0);
tmp.removeElementAt(0);
Permission permission1 = (Permission)instance1.getPermissionInstance();
+ int type = instance1.getType();
UserSecuritySettings settings1 = instance1.getSettings();
String compositeAction = "";
// put the individual actions into a vector so that the composite
@@ -423,6 +429,7 @@
getResolvedPermission(
requestedPermission,
permission1,
+ type,
settings1,
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -452,6 +459,7 @@
private static PolicyBasedPermissionImpl getResolvedPermission(
PermissionBase securityPromptDetails,
+ int type,
UserSecuritySettings userSettings,
String permissionName,
String targetName,
@@ -479,6 +487,7 @@
permissionName,
targetName,
actionList,
+ type,
userSettings,
securityPromptDetails2);
}
@@ -486,6 +495,7 @@
private static PolicyBasedPermissionImpl getResolvedPermission(
Permission requestedPermission,
Object policyPermission,
+ int type,
UserSecuritySettings userSettings,
String permissionName,
String targetName,
@@ -514,6 +524,7 @@
permissionName,
targetName,
actionList,
+ type,
userSettings,
securityPromptDetails);
}
@@ -545,7 +556,8 @@
policyPermissions[i].getActionList());
policyPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(p,
- policyPermissions[i].getUserSecuritySettings()));
+ policyPermissions[i].getType(),
+ policyPermissions[i].getUserSecuritySettings()));
}
catch (InstantiationException e)
{
@@ -590,7 +602,8 @@
grantedPermission.getActionList());
grantedPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(p,
- grantedPermission.getUserSecuritySettings()));
+ grantedPermission.getType(),
+ grantedPermission.getUserSecuritySettings()));
}
catch (InstantiationException e)
{
@@ -703,11 +716,13 @@
private static class PermisionInstanceAndSettings
{
private Object permissionObject;
+ private int type;
private UserSecuritySettings settings;
- public PermisionInstanceAndSettings(Object permissionObject, UserSecuritySettings settings)
+ public PermisionInstanceAndSettings(Object permissionObject, int type, UserSecuritySettings settings)
{
this.permissionObject = permissionObject;
+ this.type = type;
this.settings = settings;
}
@@ -720,5 +735,10 @@
{
return settings;
}
+
+ public int getType()
+ {
+ return type;
+ }
}
}
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPromptHandler.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPromptHandler.java Wed Jun 23 18:07:10 2010 +0300
@@ -23,6 +23,7 @@
import com.nokia.mj.impl.security.midp.common.UserPermission;
import com.nokia.mj.impl.security.common.PermissionBase;
import com.nokia.mj.impl.security.utils.SecurityPromptMessage;
+import com.nokia.mj.impl.security.utils.Logger;
import com.nokia.mj.impl.rt.ui.RuntimeUiFactory;
import com.nokia.mj.impl.rt.ui.RuntimeUi;
import com.nokia.mj.impl.rt.ui.ConfirmData;
@@ -171,6 +172,12 @@
.getSecurityPromptQuestion(currentInteractionMode);
break;
}
+ if (promptText == null)
+ {
+ // no text to show -> 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(
--- 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(
--- 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();
--- 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()
--- 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);
--- 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()
--- 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;
+ }
}
--- 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 <registryinfov2.rh>
+#include <ecom/registryinfov2.rh>
#include <ct/interfaceuid.hrh>
// Some defines of useful values for attributes to simplify
--- 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
--- 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 <MUserSecurityPreferencesTable.h>
-#include <MSecurityPolicyV2.h>
+#include "MUserSecurityPreferencesTable.h"
+#include "j2me/midp2/security/MSecurityPolicyV2.h"
#include "SecurityPreferences.h"
#include "javauid.h"
--- 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 <platform_paths.hrh>
-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
--- 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 <midp2permissiondb.h>
+#include "j2me/midp2/security/midp2permissiondb.h"
using namespace MIDP;
using namespace java::storage;
--- 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 <msecuritypolicyv2.h>
+#include "j2me/midp2/security/msecuritypolicyv2.h"
using namespace MIDP;
--- 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 <muserpreferences.h>
-#include <mmidletsuiteuserpreferencesiterator.h>
-#include <mmidletsuiteuserpreferences.h>
-#include <mmidletsuitecustomattributes.h>
-#include <msecuritypolicyv2.h>
+#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;
--- 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()
{
--- 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
--- 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 <openssl/err.h>
#include <openssl/rsa.h>
#include <openssl/sha.h>
-#include <sys/time.h>
#include <string.h>
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,
--- 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;
--- 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()
{
--- 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";
}
--- 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;
}
--- 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;
}
--- 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";
+}
--- 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";
+}
--- /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;
+}
--- /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;
+}
--- /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
--- /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
--- /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
--- 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
--- 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
--- 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://*
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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=="));
--- 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;
}
--- 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
--- 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<perms1.size(); i++)
{
- String[] permTokens = Tokenizer.split((String)perms1.get(i), ",");
+ String[] permTokens = Tokenizer.split((String)perms1.get(i), "?");
int currentToken = 0;
int type = getType(permTokens[currentToken]);
currentToken++;
@@ -344,7 +344,7 @@
String name = null;
String target = null;
String actionList = null;
- if (type == PolicyBasedPermission.USER_TYPE)
+ if (permTokens.length == 3)
{
String[] settingsProps = Tokenizer.split(permTokens[currentToken],":");
String settingsName = settingsProps[0];
@@ -361,30 +361,33 @@
settings = new UserSecuritySettingsImpl(settingsName, currentInteractionMode, allowedInteractionModes);
currentToken++;
}
- name = permTokens[currentToken];
+ String[] permDetails = Tokenizer.split(permTokens[currentToken], ",");
+ currentToken = 0;
+ name = permDetails[currentToken];
MIDPPermission mappedPerm = PermissionMappingTable.get(name);
if (mappedPerm != null)
{
name = mappedPerm.getName();
}
currentToken++;
- if (permTokens.length > 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<perms2.length; j++)
{
PolicyBasedPermissionImpl perm2 = new PolicyBasedPermissionImpl(
perms2[j].getName(),
perms2[j].getTarget(),
perms2[j].getActionList(),
+ perms2[j].getType(),
(perms2[j].getUserSecuritySettings() != null ?
(new UserSecuritySettingsImpl(
perms2[j].getUserSecuritySettings().getName(),
@@ -420,6 +423,10 @@
{
return PolicyBasedPermission.ASSIGNED_TYPE;
}
+ else if (sType.equalsIgnoreCase("user_assigned"))
+ {
+ return PolicyBasedPermission.USER_ASSIGNED_TYPE;
+ }
return -1;
}
--- a/javacommons/utils/build/build.xml Fri Jun 11 13:33:44 2010 +0300
+++ b/javacommons/utils/build/build.xml Wed Jun 23 18:07:10 2010 +0300
@@ -30,6 +30,7 @@
com.nokia.mj.impl.properties.common.Locale,
com.nokia.mj.impl.properties.common.Platform,
com.nokia.mj.impl.utils.Formatter,
+ com.nokia.mj.impl.utils.InstallerErrorMessage,
com.nokia.mj.impl.utils.ResourceLoader"/>
<target name="system.properties">
--- 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);
}
--- 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 <avkon.rsg>
#include <memory>
#include <stringresourcereader.h>
+#include <aknutils.h>
#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;
+}
--- 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);
--- 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);
--- 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)
--- 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)
--- 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;
}
--- 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;
}
--- 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";
--- 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;
--- 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;
}
--- 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:
{
--- 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
--- 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
--- 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 <abclient.h>
+#include <connect/abclient.h>
namespace java
{
--- 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
--- 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++;
}
--- 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 <sbdefs.h>
+#include <connect/sbdefs.h>
#include <s32mem.h>
#include <s32file.h>
#include <f32file.h>
--- 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
--- 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 <RegistryInfoV2.rh>
+#include <ecom/RegistryInfoV2.rh>
#include <ct/InterfaceUID.hrh>
// True
--- 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 <usif/scr/scr.h>
-#include <usif/scr/screntries.h>
-
-#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
--- 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 <string> //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;
-}
--- 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 <apgcli.h>
-#include <e32base.h>
-#include <f32file.h>
-
-#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<TComponentId> 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<TApaAppUpdateInfo> 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<TUid> 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<TComponentId> 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<TApaAppUpdateInfo> 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<TUid> 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<TComponentId> 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
--- /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 <string> //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;
+}
--- /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 <apgcli.h>
+#include <e32base.h>
+#include <f32file.h>
+
+#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<TComponentId> 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<TApaAppUpdateInfo> 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<TUid> 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<TComponentId> 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<TApaAppUpdateInfo> 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<TUid> 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<TComponentId> 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
--- /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 <usif/scr/scr.h>
+#include <usif/scr/screntries.h>
+
+#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
--- 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
--- 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 += \
--- 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()
--- 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);
}
--- 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;
}
/**
--- 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.
--- 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;
+ }
}
--- 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);
--- 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.
+ * <p>
+ * InstallerResultMessage contains name-value pairs: name is a string,
+ * value can be either a string or an int. Message syntax:
+ * <p>
+ * <pre>
+ * 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>
+ * </pre>
+ * <p>
*/
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());
}
}
--- 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;
}
--- 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 &&
--- 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);
}
--- 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();
--- 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());
}
--- 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)
{
--- 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");
--- 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);
+ }
+ }
+ }
+ }
}
--- 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";
}
/**
--- 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.
--- 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<RApaLsSession*>(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
--- 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 <usif/sif/sifnotification.h>
#include <usif/usifcommon.h>
-// 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
--- 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 <w32std.h>
#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 <usif/scr/scr.h>
#include <usif/scr/screntries.h>
-#ifdef RD_JAVA_USIF_APP_REG
#include <usif/scr/appreginfo.h>
-#endif // RD_JAVA_USIF_APP_REG
+#include <usif/usiferror.h>
#include <xqappmgr.h>
// 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<RSoftwareComponentRegistry*>(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<RSoftwareComponentRegistry*>(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<HBufC> 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<TUid> 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
--- 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
--- 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);
}
--- 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=<address>:<port> 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.
--- 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++)
--- 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()
--- 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=<address>:<port> 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",
--- 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=<address>:<port> 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;
}
--- 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);
+ }
}
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000019.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000046.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000058.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000070.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000090.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000150.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000172.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000175.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000182.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000189.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000250.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000305.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000390.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000500.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000582.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000618.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/00000703.jar has changed
--- /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
--- /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
--- /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
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/BCExchanger.zip has changed
--- /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=
--- /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
--- /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
--- /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
+
+
--- /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=
--- /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
+
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/SimpleRMS8.jar has changed
--- /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
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/SunShines3D_DEMO_nokia_N900_EN_IGP_ATandT_901.zip has changed
--- /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:
--- /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:
--- /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
--- /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
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/calc2_en_de_es_ES_fr_it_tr_TR_nl_NL_pt_PT.zip has changed
--- /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
+
+
+
--- /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
+
+
+
--- /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
+
+
+
--- /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
+
+
--- /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
+
+
--- /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
+
+
+
--- /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
+
+
--- /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
+
+
--- /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
+
+
+
--- /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
+
+
+
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut03.jad has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut04.jad has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut08.jad has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/ceut09.jad has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/einstein_EN_FR_IT_DE_ES_N97_v2942.jar has changed
Binary file javamanager/javainstaller/installer/tsrc/testdata/utils/javahelper.mif has changed
--- /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
--- /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
--- /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 @@
+<!--
+#
+# 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:
+#
+-->
+<project name="InstallerTestServer" default="dist" basedir="..">
+ <property name="catalina.home" value="C:/apps/apache-tomcat-6.0.26"/>
+ <property name="build" value="${basedir}/build"/>
+ <property name="java.build" value="${build}/javabuild"/>
+ <property name="classes" value="${java.build}/WEB-INF/classes"/>
+ <property name="src" value="${basedir}/javasrc"/>
+ <property name="web" value="${basedir}/content"/>
+
+ <path id="compile.classpath">
+ <fileset dir="${catalina.home}/bin">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${catalina.home}/lib"/>
+ <fileset dir="${catalina.home}/lib">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <target name="compile">
+ <mkdir dir="${classes}"/>
+ <javac source="1.5" target="1.5" destdir="${classes}" srcdir="${src}">
+ <classpath refid="compile.classpath"/>
+ </javac>
+ </target>
+
+ <target name="dist" depends="compile">
+ <jar jarfile="${build}/installertest.war" basedir="${java.build}"
+ manifest="${web}/META-INF/MANIFEST.MF"/>
+ <jar jarfile="${build}/installertest.war" basedir="${web}"
+ update="true"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="${java.build}"/>
+ <delete file="${build}/installertest.war"/>
+ </target>
+</project>
--- /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:
+
+ <property name="catalina.home" value="C:/apps/apache-tomcat-6.0.26"/>
+
+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.
--- /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
Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld.jar has changed
--- /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://<SERVER><CONTEXT>/notify?tID=900_success
+MIDlet-Delete-Notify: http://<SERVER><CONTEXT>/notify?tID=912_deletion
Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_8mb.jar has changed
--- /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://<SERVER><CONTEXT>/notify?tID=900_success
+MIDlet-Delete-Notify: http://<SERVER><CONTEXT>/notify?tID=912_deletion
--- /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://<SERVER><CONTEXT>/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://<SERVER><CONTEXT>/notify?tID=900_success
Binary file javamanager/javainstaller/installer/tsrc/testserver/content/HelloWorld_redirect.jar has changed
--- /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:
+
--- /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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+#
+# 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:
+#
+-->
+<Context docBase="installertest" path="/installertest">
+</Context>
\ No newline at end of file
--- /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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+#
+# 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:
+#
+-->
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
+ <display-name>installertest</display-name>
+
+ <servlet>
+ <description></description>
+ <display-name>redirect</display-name>
+ <servlet-name>redirect</servlet-name>
+ <servlet-class>com.nokia.mj.impl.installer.testserver.RedirectServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>redirect</servlet-name>
+ <url-pattern>/redirect</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <description></description>
+ <display-name>jad</display-name>
+ <servlet-name>jad</servlet-name>
+ <servlet-class>com.nokia.mj.impl.installer.testserver.JadServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>jad</servlet-name>
+ <url-pattern>*.jad</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <description></description>
+ <display-name>notify</display-name>
+ <servlet-name>notify</servlet-name>
+ <servlet-class>com.nokia.mj.impl.installer.testserver.NotifyServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>notify</servlet-name>
+ <url-pattern>/notify</url-pattern>
+ </servlet-mapping>
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name></web-resource-name>
+ <url-pattern>/httpauth/*</url-pattern>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>guest</role-name>
+ </auth-constraint>
+ </security-constraint>
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ <realm-name>httpauth</realm-name>
+ </login-config>
+
+ <security-role>
+ <role-name>guest</role-name>
+ </security-role>
+
+</web-app>
--- /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
Binary file javamanager/javainstaller/installer/tsrc/testserver/content/httpauth/HelloWorld_http_auth.jar has changed
--- /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("<SERVER>", request.getServerName()
+ + ":" + request.getServerPort());
+ line = line.replaceAll("<CONTEXT>",
+ 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);
+ }
+
+}
--- /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);
+ }
+
+}
--- /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);
+ }
+
+}
--- 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
--- 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;
}
--- 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()
--- 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)
--- 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);
- }
- }
}
--- 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;
}
--- 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;
}
--- 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
--- 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
--- 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
--- 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 <e32property.h>
#include <charconv.h>
#include <data_caging_path_literals.hrh>
-#include <usiferror.h>
+#include <usif/usiferror.h>
#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)
--- 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 <iostream>
#include <unistd.h>
-#include <usiferror.h>
+#include <usif/usiferror.h>
#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();
--- 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;
}
--- 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"
--- 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
--- 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
--- 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;
--- 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)
{
--- 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);
}
--- 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
--- 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<IndexedSettingsName> allSecuritySettings = readFromStorage(FUNCTION_GROUP, MIDP_FUNC_GRP_SETTINGS_TABLE);
+ vector<IndexedSettingsName> 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<QString, int> settingsIndexes;
@@ -965,7 +965,7 @@
return value;
}
-vector<IndexedSettingsName> JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::string& aTableName)
+vector<IndexedSettingsName> JavaApplicationSettingsViewPrivate::readFromStorage(const std::wstring& aColumnName, const std::string& aPrimaryTableName, const std::string& aSecondaryTableName)
{
vector<IndexedSettingsName> 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);
}
}
}
--- 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<IndexedSettingsName> readFromStorage(const std::wstring& aColumnName, const std::string& aTableName);
+ std::vector<IndexedSettingsName> 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);
--- 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 <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_MMPFILES
-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 <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-#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
--- 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 <ecom/registryinfov2.rh>
-#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;
- }
- };
- }
- };
-}
--- 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 <apsidchecker.h>
-#include <javaregistryincludes.h>
-
-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
--- 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 <e32std.h>
-#include <ecom/implementationproxy.h>
-#include <appversion.h>
-
-#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;
-}
--- 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)
--- 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"
--- 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 <apgcli.h>
-#include <apacmdln.h>
-#include <apmstd.h>
-#include <bacline.h>
-#include <e32cmn.h>
-#include <s32mem.h>
-#include <unistd.h>
-
-#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<KArgumentValueMaxLen> 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
- * <other_args>;file=YYY;<other_args>
- * @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;<other_args>
- * @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=<Uid>;file=<full_path_to_installation_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;
-}
-
--- 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
--- 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"
--- 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
}
--- 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
--- 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);
}
--- 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)
--- /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)
Binary file javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar has changed
--- 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<actions.length; i++)
{
- perms.add(getPermission(pName,
- pTarget, actions[i], type, settings));
+ if (unconfirmedSettings == null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ pName, pTarget, actions[i], type, settings));
+ }
+ else
+ {
+ unconfirmedPerms.add(getSecurityPolicyPermission(
+ pName, pTarget, actions[i], type, unconfirmedSettings));
+ }
}
}
else
{
- perms.add(getPermission(pName,
- pTarget, pActionList, type, settings));
+ if (unconfirmedSettings == null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ pName, pTarget, pActionList, type, settings));
+ }
+ else
+ {
+ unconfirmedPerms.add(getSecurityPolicyPermission(
+ pName, pTarget, pActionList, type, unconfirmedSettings));
+ }
}
find("permission");
}
find("grant", true);
}
- if (perms.size() == 0)
+ if (perms.size() == 0 && unconfirmedPerms.size() == 0)
{
throw new IllegalArgumentException(
"Invalid security policy - missing/invalid permissions information");
}
+ // confirm the unconfirmed permissions: look for settings in the perms ->
+ // if found then use those settings, otherwise use the unconfirmed settings
+ for(int i=0; i<unconfirmedPerms.size(); i++)
+ {
+ SecurityPolicyPermission unconfirmedPerm =
+ (SecurityPolicyPermission) unconfirmedPerms
+ .elementAt(i);
+ SecurityPolicyPermissionSettings confirmedSettings =
+ (SecurityPolicyPermissionSettings)allSettings
+ .get(unconfirmedPerm.getUserSecuritySettings().getName());
+ if (confirmedSettings != null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ unconfirmedPerm.getName(),
+ unconfirmedPerm.getTarget(),
+ unconfirmedPerm.getActionList(),
+ unconfirmedPerm.getType(),
+ confirmedSettings));
+ }
+ else
+ {
+ perms.add(unconfirmedPerm);
+ }
+ }
SecurityPolicyPermission[] permissions
= new SecurityPolicyPermission[perms.size()];
perms.copyInto(permissions);
@@ -463,22 +553,18 @@
tokens.copyInto(strTokens);
return strTokens;
}
-
- private SecurityPolicyPermission getPermission(String pName,
- String pTarget,
- String pAction,
- int pType,
- SecurityPolicyPermissionSettings pSettings)
+
+ private SecurityPolicyPermission getSecurityPolicyPermission(
+ String name,
+ String target,
+ String actionList,
+ int type,
+ SecurityPolicyPermissionSettings settings)
{
- if (pSettings == null)
+ if (settings == null && type == PolicyBasedPermission.USER_ASSIGNED_TYPE)
{
- return new SecurityPolicyPermission(
- pName, pTarget, pAction, pType);
+ return new SecurityPolicyPermission(name, target, actionList, PolicyBasedPermission.ASSIGNED_TYPE);
}
- else
- {
- return new SecurityPolicyPermission(
- pName, pTarget, pAction, pSettings);
- }
+ return new SecurityPolicyPermission(name, target, actionList, type, settings);
}
}
--- a/javatools/tckrunner/runner/src/tckrunnernative.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javatools/tckrunner/runner/src/tckrunnernative.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -58,12 +58,13 @@
{
int rc = 0;
- const char* av[MAX_PARAMS + 5];
+ const char* av[MAX_PARAMS + 6];
int index = 0;
av[index++] = java::runtime::JAVA_PROCESS;
av[index++] = java::runtime::JAVA_INSTALLER_STARTER_DLL;
av[index++] = "poll";
av[index++] = "-address=tck";
+ av[index++] = "-drive=C";
int args = aEnv->GetArrayLength(aArgs);
char** installerArgs = new char*[args];
--- 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 @@
<target name="init.component.properties">
<property name="java.src.paths" value="../../org.eclipse.swt/Eclipse_SWT_PI/webkit"/>
- <property name="javah.classnames" value="org.eclipse.swt.internal.qt.webkit.OS_webkit"/>
+ <property name="javah.classnames" value="org.eclipse.swt.internal.qt.webkit.WebkitOS"/>
<echo message="java.src.paths = ${java.src.paths}"/>
<echo message="javah.classnames = ${javah.classnames}"/>
</target>
--- 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");
}
/**
--- 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 @@
<target name="build.lib.common.webkit" depends="init" description="params: config">
<javah destdir="${lib.path}/${generated.native.dir.webkit}/" classpath="${plugin.dir}/bin" verbose="yes">
- <class name="org.eclipse.swt.internal.qt.webkit.OS_webkit"/>
+ <class name="org.eclipse.swt.internal.qt.webkit.WebkitOS"/>
</javah>
<antcall target="qmake">
<param name="qmake.dir" value="${lib.path}/webkit"/>
--- 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 @@
<target name="build.lib.common.webkit" depends="init" description="params: config">
<javah destdir="${lib.path}/${generated.native.dir.webkit}/" classpath="${plugin.dir}/bin" verbose="yes">
- <class name="org.eclipse.swt.internal.qt.webkit.OS_webkit"/>
+ <class name="org.eclipse.swt.internal.qt.webkit.WebkitOS"/>
</javah>
<antcall target="qmake">
<param name="qmake.dir" value="${lib.path}/webkit"/>
--- 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,
--- 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 <count; ++i) {
- MobileDeviceEvent event = new MobileDeviceEvent(this);
- event.type = eventType;
- MobileDeviceListener listener = (MobileDeviceListener) mobileDeviceListeners.elementAt(i);
- listener.deviceChanged(event);
- }
- }
-
- void qt_swt_event_mobiledevice_changed(boolean aStatus) {
- // update MobileDevice status to opened/closed
- isOpen = aStatus;
-
- if(isOpen){
- sendMobileDeviceChangedEvent(MobileDeviceEvent.OPENED);
- }else{
- sendMobileDeviceChangedEvent(MobileDeviceEvent.CLOSED);
- }
- }
-
- void qt_swt_event_mobiledevice_screen_activate(boolean aStatus) {
-
- if(screens.length > 0 && activeScreenId<screens.length){
- if(aStatus){
- // update the active screen
- activeScreenId = OS.getScreenDeviceNumber();
- //forward to screen activated event to new active screen
- screens[activeScreenId].internal_sendScreenEventActivated();
- }else {
- //forward to screen deactivated event to old active screen
- screens[activeScreenId].internal_sendScreenEventDeactivated();
- }
- }
- }
-
- void qt_swt_event_mobiledevice_orientationchanged() {
- activeScreenId = OS.getScreenDeviceNumber();
- if(activeScreenId<screens.length){
- // forward to orientation change event to active screen
- screens[activeScreenId].internal_sendOrientationScreenChanged();
- }
- }
-
- private void sendMobileDeviceScreenChangedEvent(int eventType, Screen screen) {
- int count = mobileDeviceListeners.size();
- for (int i = 0; i <count; ++i) {
- MobileDeviceEvent event = new MobileDeviceEvent(this);
- event.type = eventType;
- event.data = screen;
- event.feature = screen;
- MobileDeviceListener listener = (MobileDeviceListener) mobileDeviceListeners.elementAt(i);
- listener.screenChanged(event);
- }
- }
-
- void qt_signal_screen_changed(int aCount) {
- int type = 0;
- Screen screen = null;
- Screen []newScreens = new Screen[aCount];
-
- // if getScreen is not called and if still want
- // screen changed event in the MobileDevice
- if(screens.length==0){
- getScreens();
- }
-
- if(screens.length > aCount){
- // screen removed
- int screenHandle = 0;
- for(int j=0; j<screens.length; j++) {
- // found removed screen
- boolean found = false;
- for(int i=0; i<aCount; i++) {
- screenHandle = OS.QDesktopWidget_screen(desktopWidgetHandle, i);
- if(screens[j].screenHandle== screenHandle){
- newScreens[i] = screens[j];
- newScreens[i].id = i;
- found = true;
- break;
- }
- }
- if(!found){
- screen = screens[j];
- screens[j].internal_dispose();
- }
- }
- screens = new Screen[aCount];
- // remove detached screen from 'screens'
- System.arraycopy(newScreens, 0, screens, 0, aCount);
- type = MobileDeviceEvent.REMOVED;
- } else if( screens.length < aCount){
- // screen attached
- for(int i=0; i<aCount; i++) {
- // found added screen
- int screenHandle = OS.QDesktopWidget_screen(desktopWidgetHandle, i);
- boolean found=false;
- for(int j=0; j<screens.length; j++) {
- if(screens[j].screenHandle== screenHandle){
- newScreens[i] = screens[j];
- newScreens[i].id = i;
- found = true;
- break;
- }
- }
- if(!found){
- screen = screens[i];
- newScreens[i] = new Screen(i, desktopWidgetHandle);
- }
- }
- screens = new Screen[aCount];
- // add attached screen to 'screens'
- System.arraycopy(newScreens, 0, screens, 0, aCount);
- type = MobileDeviceEvent.ADDED;
- }
- sendMobileDeviceScreenChangedEvent(type, screen);
- activeScreenId = OS.getScreenDeviceNumber();
- }
-
- private static void hookEvents() {
- int screenSignalProxy = OS.SignalHandler_new(desktopWidgetHandle, OS.QSIGNAL_QDESKTOPWIDGET_SCREENCOUNTCHANGED);
- OS.QObject_connectOrThrow(desktopWidgetHandle, "screenCountChanged(int)", screenSignalProxy,
- "widgetSignal(int)", OS.QT_AUTOCONNECTION);
- }
+ /**
+ * 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());
+ if (handleMobileDevice == 0) {
+ SWT.error(SWT.ERROR_NO_HANDLES);
+ }
+ 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 <count; ++i) {
+ MobileDeviceEvent event = new MobileDeviceEvent(this);
+ event.type = eventType;
+ MobileDeviceListener listener = (MobileDeviceListener) mobileDeviceListeners.elementAt(i);
+ listener.deviceChanged(event);
+ }
+ }
+
+ void qt_swt_event_mobiledevice_changed(boolean aStatus) {
+ // update MobileDevice status to opened/closed
+ isOpen = aStatus;
+
+ if(isOpen){
+ sendMobileDeviceChangedEvent(MobileDeviceEvent.OPENED);
+ }else{
+ sendMobileDeviceChangedEvent(MobileDeviceEvent.CLOSED);
+ }
+ }
+
+ void qt_swt_event_mobiledevice_screen_activate(boolean aStatus) {
+
+ if(screens.length > 0 && activeScreenId<screens.length){
+ if(aStatus){
+ // update the active screen
+ activeScreenId = OS.getScreenDeviceNumber();
+ //forward to screen activated event to new active screen
+ screens[activeScreenId].internal_sendScreenEventActivated();
+ }else {
+ //forward to screen deactivated event to old active screen
+ screens[activeScreenId].internal_sendScreenEventDeactivated();
+ }
+ }
+ }
+
+ void qt_swt_event_mobiledevice_orientationchanged() {
+ activeScreenId = OS.getScreenDeviceNumber();
+ if(activeScreenId<screens.length){
+ // forward to orientation change event to active screen
+ screens[activeScreenId].internal_sendOrientationScreenChanged();
+ }
+ }
+
+ private void sendMobileDeviceScreenChangedEvent(int eventType, Screen screen) {
+ int count = mobileDeviceListeners.size();
+ for (int i = 0; i <count; ++i) {
+ MobileDeviceEvent event = new MobileDeviceEvent(this);
+ event.type = eventType;
+ event.data = screen;
+ event.feature = screen;
+ MobileDeviceListener listener = (MobileDeviceListener) mobileDeviceListeners.elementAt(i);
+ listener.screenChanged(event);
+ }
+ }
+
+ void qt_signal_screen_changed(int aCount) {
+ int type = 0;
+ Screen screen = null;
+ Screen []newScreens = new Screen[aCount];
+
+ // if getScreen is not called and if still want
+ // screen changed event in the MobileDevice
+ if(screens.length==0){
+ getScreens();
+ }
+
+ if(screens.length > aCount){
+ // screen removed
+ int screenHandle = 0;
+ for(int j=0; j<screens.length; j++) {
+ // found removed screen
+ boolean found = false;
+ for(int i=0; i<aCount; i++) {
+ screenHandle = OS.QDesktopWidget_screen(desktopWidgetHandle, i);
+ if(screens[j].screenHandle== screenHandle){
+ newScreens[i] = screens[j];
+ newScreens[i].id = i;
+ found = true;
+ break;
+ }
+ }
+ if(!found){
+ screen = screens[j];
+ screens[j].internal_dispose();
+ }
+ }
+ screens = new Screen[aCount];
+ // remove detached screen from 'screens'
+ System.arraycopy(newScreens, 0, screens, 0, aCount);
+ type = MobileDeviceEvent.REMOVED;
+ } else if( screens.length < aCount){
+ // screen attached
+ for(int i=0; i<aCount; i++) {
+ // found added screen
+ int screenHandle = OS.QDesktopWidget_screen(desktopWidgetHandle, i);
+ boolean found=false;
+ for(int j=0; j<screens.length; j++) {
+ if(screens[j].screenHandle== screenHandle){
+ newScreens[i] = screens[j];
+ newScreens[i].id = i;
+ found = true;
+ break;
+ }
+ }
+ if(!found){
+ screen = screens[i];
+ newScreens[i] = new Screen(i, desktopWidgetHandle);
+ }
+ }
+ screens = new Screen[aCount];
+ // add attached screen to 'screens'
+ System.arraycopy(newScreens, 0, screens, 0, aCount);
+ type = MobileDeviceEvent.ADDED;
+ }
+ sendMobileDeviceScreenChangedEvent(type, screen);
+ activeScreenId = OS.getScreenDeviceNumber();
+ }
+
+ private static void hookEvents() {
+ int screenSignalProxy = OS.SignalHandler_new(desktopWidgetHandle, OS.QSIGNAL_QDESKTOPWIDGET_SCREENCOUNTCHANGED);
+ OS.QObject_connectOrThrow(desktopWidgetHandle, "screenCountChanged(int)", screenSignalProxy,
+ "widgetSignal(int)", OS.QT_AUTOCONNECTION);
+ }
- /**
- * Adds the listener to the collection of listeners who will be notified when a device
- * configuration change occurs, by calling one of the methods defined in the
- * <code>MobileDeviceListener</code> interface.
- * <p>
- * <code>screenChanged</code> is called when a monitor configuration changes.<br>
- * <code>inputChanged</code> is called when an input configuration changes.<br>
- * <code>deviceChanged</code> is called when the device is opened or closed.<br>
- *
- * @param listener instance called when device events occur
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
- * </ul>
- * @exception SWTError <ul>
- * <li>ERROR_ITEM_NOT_ADDED - if the operation fails because of an operating system failure</li>
- * </ul>
- *
- * @see #removeMobileDeviceListener
- * @see MobileDeviceListener
- */
- public void addMobileDeviceListener(MobileDeviceListener listener) {
- if (listener == null) {
- SWT.error (SWT.ERROR_NULL_ARGUMENT);
- }
- mobileDeviceListeners.addElement(listener);
- }
-
-
- /**
- * Alerts the user using device specific mechanisms such as sounds, flashing, or
- * vibration. <code>Level</code> must be one of ALERT_LOW_IMPORTANCE,
- * ALERT_HIGH_IMPORTANCE, or ALERT_CRITICAL. The method maps these levels to
- * device specific features that may also be dependent upon user configuration
- * or current profile.
- *
- * @param level
- * constant describing the importance of the alert
- *
- * @exception IllegalArgumentException
- * <ul>
- * <li>ERROR_INVALID_ARGUMENT - if level is not one of the
- * allowed class constants</li>
- * </ul>
- *
- * @see #ALERT_LOW_IMPORTANCE
- * @see #ALERT_HIGH_IMPORTANCE
- * @see #ALERT_CRITICAL
- */
- public void alert(int level) {
- if ( level != ALERT_LOW_IMPORTANCE &&
- level != ALERT_HIGH_IMPORTANCE &&
- level != ALERT_CRITICAL) {
- SWT.error(SWT.ERROR_INVALID_ARGUMENT);
- }
- alertLevel = level;
- (getDisplay()).syncExec(new Runnable() {
- public void run() {
- if(alertLevel == ALERT_LOW_IMPORTANCE){
- OS.QApplication_beep();
- }else if(alertLevel == ALERT_HIGH_IMPORTANCE){
- OS.MobileDevice_flashLights(handleMobileDevice, 3000);
- OS.MobileDevice_vibration(handleMobileDevice, 3000);
- }else if(alertLevel == ALERT_CRITICAL){
- OS.QApplication_beep();
- OS.MobileDevice_flashLights(handleMobileDevice, 3000);
- OS.MobileDevice_vibration(handleMobileDevice, 3000);
- }
-
- }
- });
- }
-
-
- /**
- * Returns an array of Input objects describing the input features available to the device.
- * The return value may be <code>null</code> if there are no input features available.
- *
- * @exception SWTError <ul>
- * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because
- * of an operating system failure</li>
- * </ul>
- *
- * @see Input
- */
- public Input[] getInputs() {
- if(inputs == null) {
- try {
- (getDisplay()).syncExec(new Runnable() {
- public void run() {
- int mask = OS.getHwInputs();
- int nbInputs = 0;
-
- // finding out number of keyboards available
- if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
- nbInputs+=2;
- }
-
- if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
- nbInputs+=2;
- }
- // create java counter part of Inputs and
- // add location and type
- inputs = new Input[nbInputs];
- int i=0;
- int location;
- if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
- if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
- location = MobileDevice.INTERNAL;
- } else {
- location = MobileDevice.LOCAL;
- }
- inputs[i] = new Input(i);
- inputs[i].setLocation(location);
- inputs[i].setType(Input.SOFTKEYS);
- i+=1;
- inputs[i] = new Input(i);
- inputs[i].setLocation(location);
- inputs[i].setType(Input.FULL_KEYBOARD);
- i+=1;
- }
-
- if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
- if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
- location = MobileDevice.EXTERNAL;
- } else {
- location = MobileDevice.LOCAL;
- }
- inputs[i] = new Input(i);
- inputs[i].setLocation(location);
- inputs[i].setType(Input.SOFTKEYS);
- i+=1;
- inputs[i] = new Input(i);
- inputs[i].setLocation(location);
- inputs[i].setType(Input.KEYPAD);
- }
- }
- });
- } catch(Throwable e) {
- SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
- }
- }
- return inputs;
- }
-
-
- /**
- * Returns an array of Screen objects describing the display features available to the device.
- * The return value may be <code>null</code> if there are no display screens available.
- *
- * @exception SWTError <ul>
- * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because
- * of an operating system failure</li>
- * </ul>
- *
- * @see Screen
- */
- public Screen[] getScreens() {
- if(screens == null) {
- try {
- (getDisplay()).syncExec(new Runnable() {
- public void run() {
- int nbScreens = OS.QDesktopWidget_screenCount(desktopWidgetHandle);
- activeScreenId = OS.getScreenDeviceNumber();
- screens = new Screen[nbScreens];
- for(int i=0; i<nbScreens; i++) {
- screens[i] = new Screen(i, desktopWidgetHandle);
- }
- }
- });
- } catch(Throwable e) {
- SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
- }
- }
- return screens;
- }
-
-
- /**
- * Returns singleton instance of MobileDevice class.
- *
- * @return singleton of MobileDevice class. Must not be Null.
- *
- * @exception SWTError <ul>
- * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because of
- * an operating system failure</li>
- * </ul>
- */
- public static MobileDevice getMobileDevice() {
- if(currentMobileDevice == null) {
- try {
- currentMobileDevice = new MobileDevice();
- Internal_PackageSupport.setMobileDevice(getDisplay(),currentMobileDevice);
- desktopWidgetHandle = OS.QApplication_desktop();
- hookEvents();
- } catch (Throwable e) {
- SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
- }
- }
- return currentMobileDevice;
- }
-
-
- /**
- * Returns whether device is opened. For devices that have no internal screens
- * or input features, the method always returns <code>true</code>.
- */
- public boolean isOpen() {
- getDisplay();
+ /**
+ * Adds the listener to the collection of listeners who will be notified when a device
+ * configuration change occurs, by calling one of the methods defined in the
+ * <code>MobileDeviceListener</code> interface.
+ * <p>
+ * <code>screenChanged</code> is called when a monitor configuration changes.<br>
+ * <code>inputChanged</code> is called when an input configuration changes.<br>
+ * <code>deviceChanged</code> is called when the device is opened or closed.<br>
+ *
+ * @param listener instance called when device events occur
+ *
+ * @exception IllegalArgumentException <ul>
+ * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTError <ul>
+ * <li>ERROR_ITEM_NOT_ADDED - if the operation fails because of an operating system failure</li>
+ * </ul>
+ *
+ * @see #removeMobileDeviceListener
+ * @see MobileDeviceListener
+ */
+ public void addMobileDeviceListener(MobileDeviceListener listener) {
+ if (listener == null) {
+ SWT.error (SWT.ERROR_NULL_ARGUMENT);
+ }
+ mobileDeviceListeners.addElement(listener);
+ }
+
+
+ /**
+ * Alerts the user using device specific mechanisms such as sounds, flashing, or
+ * vibration. <code>Level</code> must be one of ALERT_LOW_IMPORTANCE,
+ * ALERT_HIGH_IMPORTANCE, or ALERT_CRITICAL. The method maps these levels to
+ * device specific features that may also be dependent upon user configuration
+ * or current profile.
+ *
+ * @param level
+ * constant describing the importance of the alert
+ *
+ * @exception IllegalArgumentException
+ * <ul>
+ * <li>ERROR_INVALID_ARGUMENT - if level is not one of the
+ * allowed class constants</li>
+ * </ul>
+ *
+ * @see #ALERT_LOW_IMPORTANCE
+ * @see #ALERT_HIGH_IMPORTANCE
+ * @see #ALERT_CRITICAL
+ */
+ public void alert(int level) {
+ if ( level != ALERT_LOW_IMPORTANCE &&
+ level != ALERT_HIGH_IMPORTANCE &&
+ level != ALERT_CRITICAL) {
+ SWT.error(SWT.ERROR_INVALID_ARGUMENT);
+ }
+ alertLevel = level;
+ (getDisplay()).syncExec(new Runnable() {
+ public void run() {
+ if(alertLevel == ALERT_LOW_IMPORTANCE){
+ OS.QApplication_beep();
+ }else if(alertLevel == ALERT_HIGH_IMPORTANCE){
+ OS.MobileDevice_flashLights(handleMobileDevice, 3000);
+ OS.MobileDevice_vibration(handleMobileDevice, 3000);
+ }else if(alertLevel == ALERT_CRITICAL){
+ OS.QApplication_beep();
+ OS.MobileDevice_flashLights(handleMobileDevice, 3000);
+ OS.MobileDevice_vibration(handleMobileDevice, 3000);
+ }
+
+ }
+ });
+ }
+
+
+ /**
+ * Returns an array of Input objects describing the input features available to the device.
+ * The return value may be <code>null</code> if there are no input features available.
+ *
+ * @exception SWTError <ul>
+ * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because
+ * of an operating system failure</li>
+ * </ul>
+ *
+ * @see Input
+ */
+ public Input[] getInputs() {
+ if(inputs == null) {
+ try {
+ (getDisplay()).syncExec(new Runnable() {
+ public void run() {
+ int mask = OS.getHwInputs();
+ int nbInputs = 0;
+
+ // finding out number of keyboards available
+ if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
+ nbInputs+=2;
+ }
+
+ if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
+ nbInputs+=2;
+ }
+ // create java counter part of Inputs and
+ // add location and type
+ inputs = new Input[nbInputs];
+ int i=0;
+ int location;
+ if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
+ if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
+ location = MobileDevice.INTERNAL;
+ } else {
+ location = MobileDevice.LOCAL;
+ }
+ inputs[i] = new Input(i);
+ inputs[i].setLocation(location);
+ inputs[i].setType(Input.SOFTKEYS);
+ i+=1;
+ inputs[i] = new Input(i);
+ inputs[i].setLocation(location);
+ inputs[i].setType(Input.FULL_KEYBOARD);
+ i+=1;
+ }
+
+ if((mask & OS.SYMBIAN_KEYBOARD_KEYPAD)!=0){
+ if((mask & OS.SYMBIAN_KEYBOARD_FULL)!=0){
+ location = MobileDevice.EXTERNAL;
+ } else {
+ location = MobileDevice.LOCAL;
+ }
+ inputs[i] = new Input(i);
+ inputs[i].setLocation(location);
+ inputs[i].setType(Input.SOFTKEYS);
+ i+=1;
+ inputs[i] = new Input(i);
+ inputs[i].setLocation(location);
+ inputs[i].setType(Input.KEYPAD);
+ }
+ }
+ });
+ } catch(Throwable e) {
+ SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
+ }
+ }
+ return inputs;
+ }
+
+
+ /**
+ * Returns an array of Screen objects describing the display features available to the device.
+ * The return value may be <code>null</code> if there are no display screens available.
+ *
+ * @exception SWTError <ul>
+ * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because
+ * of an operating system failure</li>
+ * </ul>
+ *
+ * @see Screen
+ */
+ public Screen[] getScreens() {
+ if(screens == null) {
+ try {
+ (getDisplay()).syncExec(new Runnable() {
+ public void run() {
+ int nbScreens = OS.QDesktopWidget_screenCount(desktopWidgetHandle);
+ activeScreenId = OS.getScreenDeviceNumber();
+ screens = new Screen[nbScreens];
+ for(int i=0; i<nbScreens; i++) {
+ screens[i] = new Screen(i, desktopWidgetHandle);
+ }
+ }
+ });
+ } catch(Throwable e) {
+ SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
+ }
+ }
+ return screens;
+ }
+
+
+ /**
+ * Returns singleton instance of MobileDevice class.
+ *
+ * @return singleton of MobileDevice class. Must not be Null.
+ *
+ * @exception SWTError <ul>
+ * <li>ERROR_CANNOT_GET_SELECTION - if the operation fails because of
+ * an operating system failure</li>
+ * </ul>
+ */
+ public static MobileDevice getMobileDevice() {
+ if(currentMobileDevice == null) {
+ try {
+ currentMobileDevice = new MobileDevice();
+ Internal_PackageSupport.setMobileDevice(getDisplay(),currentMobileDevice);
+ desktopWidgetHandle = OS.QApplication_desktop();
+ hookEvents();
+ } catch (Throwable e) {
+ SWT.error(SWT.ERROR_CANNOT_GET_SELECTION);
+ }
+ }
+ return currentMobileDevice;
+ }
+
+
+ /**
+ * Returns whether device is opened. For devices that have no internal screens
+ * or input features, the method always returns <code>true</code>.
+ */
+ public boolean isOpen() {
+ getDisplay();
- return isOpen;
- }
+ return isOpen;
+ }
-
- /**
- * Call to dispose the Screen object.
- *
- */
- void internal_dispose() {
- if (inputs != null) {
- for (int i = 0; i < inputs.length; i++) {
- if (inputs[i] != null) {
- inputs[i].internal_dispose();
- }
- }
- }
+
+ /**
+ * Call to dispose the Screen object.
+ *
+ */
+ void internal_dispose() {
+ if (inputs != null) {
+ for (int i = 0; i < inputs.length; i++) {
+ if (inputs[i] != null) {
+ inputs[i].internal_dispose();
+ }
+ }
+ }
- if (screens != null) {
- for (int i = 0; i < screens.length; i++) {
- if (screens[i] != null) {
- screens[i].internal_dispose();
- }
- }
- }
- // actual native counter part is deleted in display
- currentMobileDevice = null;
- handleMobileDevice = 0;
- inputs = null;
- screens = null;
- desktopWidgetHandle = 0;
- }
-
-
- /**
- * Removes the listener from the collection of listeners who will be notified when a device
- * configuration change occurs.
- *
- * @param listener instance called when device events occur
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
- * </ul>
- * @exception SWTError <ul>
- * <li>ERROR_ITEM_NOT_REMOVED - if the operation fails because
- * of an operating system failure</li>
- * </ul>
- *
- * @see #addMobileDeviceListener
- * @see MobileDeviceListener
- */
- public void removeMobileDeviceListener(MobileDeviceListener listener) {
- if (listener == null) {
- SWT.error (SWT.ERROR_NULL_ARGUMENT);
- }
+ if (screens != null) {
+ for (int i = 0; i < screens.length; i++) {
+ if (screens[i] != null) {
+ screens[i].internal_dispose();
+ }
+ }
+ }
+ // actual native counter part is deleted in display
+ currentMobileDevice = null;
+ handleMobileDevice = 0;
+ inputs = null;
+ screens = null;
+ desktopWidgetHandle = 0;
+ }
+
+
+ /**
+ * Removes the listener from the collection of listeners who will be notified when a device
+ * configuration change occurs.
+ *
+ * @param listener instance called when device events occur
+ *
+ * @exception IllegalArgumentException <ul>
+ * <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTError <ul>
+ * <li>ERROR_ITEM_NOT_REMOVED - if the operation fails because
+ * of an operating system failure</li>
+ * </ul>
+ *
+ * @see #addMobileDeviceListener
+ * @see MobileDeviceListener
+ */
+ public void removeMobileDeviceListener(MobileDeviceListener listener) {
+ if (listener == null) {
+ SWT.error (SWT.ERROR_NULL_ARGUMENT);
+ }
- //remove listener
- //Remove method of Vector class never fails,
- //so ERROR_ITEM_NOT_REMOVED could never be thrown.
- mobileDeviceListeners.removeElement(listener);
- }
-
- /**
- * Sets the status of the system virtual keyboard (if one is available).
- * By default, or when status is set to VK_NORMAL, a system virtual keyboard
- * is displayed when a widget capable of text input gains focus and is
- * hidden when that widget looses focus. However, there are cases where
- * an application may wish to continuously display the virtual keyboard
- * or always keep it hidden. Setting the status to VK_ALWAYS_ON or VK_ALWAYS_OFF
- * will accomplish this and the effect is immediate. Changing focus will
- * then have no affect on the virtual keyboard. Note: By default, widgets which
- * normally accept input but are set to <i>read only</i> do not cause the
- * the virtual keyboard to display.
- *
- * @param status virtual keyboard mode. One of VK_NORMAL, VK_ALWAYS_ON, VK_ALWAYS_OFF
- *
- * @exception IllegalArgumentException <ul>
- * <li>ERROR_INVALID_ARGUMENT - if the status parameter is not valid</li>
- * </ul>
- *
- * @see #VK_NORMAL
- * @see #VK_ALWAYS_ON
- * @see #VK_ALWAYS_OFF
- */
- public void setVKStatus(int status){
-
- }
+ //remove listener
+ //Remove method of Vector class never fails,
+ //so ERROR_ITEM_NOT_REMOVED could never be thrown.
+ mobileDeviceListeners.removeElement(listener);
+ }
+
+ /**
+ * Sets the status of the system virtual keyboard (if one is available).
+ * By default, or when status is set to VK_NORMAL, a system virtual keyboard
+ * is displayed when a widget capable of text input gains focus and is
+ * hidden when that widget looses focus. However, there are cases where
+ * an application may wish to continuously display the virtual keyboard
+ * or always keep it hidden. Setting the status to VK_ALWAYS_ON or VK_ALWAYS_OFF
+ * will accomplish this and the effect is immediate. Changing focus will
+ * then have no affect on the virtual keyboard. Note: By default, widgets which
+ * normally accept input but are set to <i>read only</i> do not cause the
+ * the virtual keyboard to display.
+ *
+ * @param status virtual keyboard mode. One of VK_NORMAL, VK_ALWAYS_ON, VK_ALWAYS_OFF
+ *
+ * @exception IllegalArgumentException <ul>
+ * <li>ERROR_INVALID_ARGUMENT - if the status parameter is not valid</li>
+ * </ul>
+ *
+ * @see #VK_NORMAL
+ * @see #VK_ALWAYS_ON
+ * @see #VK_ALWAYS_OFF
+ */
+ public void setVKStatus(int status){
+
+ }
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Wed Jun 23 18:07:10 2010 +0300
@@ -510,7 +510,7 @@
return new Point (width, height);
}
-void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height) {
+void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height, boolean sendResizeEvent) {
if (isDisposed ()) return;
if((widgetHandle == handle) && isMirrored()) {
// In real coordinate system the children need to be moved so that they
@@ -533,7 +533,7 @@
}
}
}
- super.qt_swt_event_widgetResized_pp(widgetHandle, oldWidth, oldHeight, width, height);
+ super.qt_swt_event_widgetResized_pp(widgetHandle, oldWidth, oldHeight, width, height, sendResizeEvent);
if (layout != null) {
markLayout (false, false);
updateLayout (false);
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Wed Jun 23 18:07:10 2010 +0300
@@ -1977,10 +1977,10 @@
sendEvent(SWT.Move);
}
-void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height) {
+void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height, boolean sendResizeEvent) {
// Resize events are sent only for top native widget,
// as some Controls are made of multiple native widgets.
- if (widgetHandle == topHandle)
+ if (widgetHandle == topHandle && sendResizeEvent)
sendEvent(SWT.Resize);
}
@@ -2008,9 +2008,8 @@
Display.focusEvent = SWT.None;
}
}
- if(display != null && !display.isDisposed()) {
- Display.commandArranger.focusedControlChanged();
- }
+
+
}
void qt_swt_event_focusWasLost() {
try {
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Decorations.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Decorations.java Wed Jun 23 18:07:10 2010 +0300
@@ -902,6 +902,7 @@
boolean qt_event_windowActivate(int widgetHandle) {
if(widgetHandle == topHandle) {
+ display.commandArranger.shellActivityChanged();
sendEvent(SWT.Activate);
}
return false;
@@ -909,6 +910,7 @@
boolean qt_event_windowDeactivate(int widgetHandle) {
if(widgetHandle == topHandle) {
+ display.commandArranger.shellActivityChanged();
sendEvent(SWT.Deactivate);
saveFocus();
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Display.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Display.java Wed Jun 23 18:07:10 2010 +0300
@@ -1247,7 +1247,7 @@
if(widget.packageProxy != null) {
widget.packageProxy.qt_swt_event_widgetResized(widgetHandle, arg1, arg2, arg3, arg4);
} else {
- widget.qt_swt_event_widgetResized_pp(widgetHandle, arg1, arg2, arg3, arg4);
+ widget.qt_swt_event_widgetResized_pp(widgetHandle, arg1, arg2, arg3, arg4, true);
}
return false;
case OS.QSWTEVENT_WIDGETMOVED:
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Wed Jun 23 18:07:10 2010 +0300
@@ -141,6 +141,14 @@
WindowSurface windowSurface;
/**
+ * When QMainWindow/QDialog visibility is changed, Qt may send a resize event.
+ * eSWT application may have a Shell.setVisible() call in Shell's resize event
+ * handler, which would cause an infinite loop. To prevent this suppress resize
+ * events when Shell visibility is being changed.
+ */
+boolean suppressResizeEvent;
+
+/**
* Constructs a new instance of this class. This is equivalent
* to calling <code>Shell((Display) null)</code>.
*
@@ -467,11 +475,15 @@
Point size = computeSize(area.width, area.height, true);
size.x -= windowFrameTrim() * 2;
size.y -= windowTitleTrim() + windowFrameTrim();
+
+ // These values will be returned if the size is queried before the Shell
+ // is made visible (and they are not set again).
+ OS.QWidget_resize(topHandle, size.x, size.y);
+
if(OS.windowServer == OS.WS_SYMBIAN_S60 && parent == null) {
setRestoreState(OS.QT_WINDOWMAXIMIZED, false);
- } else {
- OS.QWidget_resize(topHandle, size.x, size.y);
}
+
return size;
}
@@ -991,7 +1003,15 @@
}
// This shell
- super.setVisible(visible);
+ try {
+ if (visible) {
+ suppressResizeEvent = true;
+ }
+ super.setVisible(visible);
+ } finally {
+ suppressResizeEvent = false;
+ }
+
if(isDisposed()) return;
// Dialog shells.
@@ -1132,6 +1152,10 @@
return defBounds;
}
+void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height, boolean sendResizeEvent) {
+ super.qt_swt_event_widgetResized_pp(widgetHandle, oldWidth, oldHeight, width, height, !suppressResizeEvent);
+}
+
WindowSurface getWindowSurface() {
checkWidget();
// Only top level shells have window surface
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Widget.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Widget.java Wed Jun 23 18:07:10 2010 +0300
@@ -869,7 +869,7 @@
void qt_swt_event_widgetPainted(int widgetHandle, int x, int y, int width, int height, int regionHandle) {
}
-void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height) {
+void qt_swt_event_widgetResized_pp(int widgetHandle, int oldWidth, int oldHeight, int width, int height, boolean sendResizeEvent) {
}
void register_pp () {
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/common_j2me/org/eclipse/swt/internal/ApplicationUidWrapper.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009,2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal;
-
-import com.nokia.mj.impl.rt.support.ApplicationInfo;
-
-
-public final class ApplicationUidWrapper {
-
- public static int uid() {
- int midletUid = -1;
- try{
- String uidS = ApplicationInfo.getInstance().getUid().getStringValue();
- // In Symbian the UID is in format '[<uid>]' where <uid> is in hex
- // format. So wee need to take the brackets away.
- // Long is needed in conversion because UIDs greater than 0x80000000
- // would fail if Integer would be used. However typecast from long
- // to int is safe since UID in Symbian is 32 bit.
- long uidL = Long.parseLong(uidS.substring(1,uidS.length()-1), 16);
- return (int)uidL;
- }
- catch (Throwable t) {/* Not handled*/ }
- return midletUid;
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/common_j2me/org/eclipse/swt/internal/CommandPresentationStrategyWrapper.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal;
-
-public final class CommandPresentationStrategyWrapper {
- public static org.eclipse.swt.internal.qt.CommandPresentationStrategy createStrategy() {
- return new org.eclipse.swt.internal.qt.s60.S60CommandPresentationStrategy();
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/common_j2se/org/eclipse/swt/internal/ApplicationUidWrapper.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal;
-
-public final class ApplicationUidWrapper {
- public static int uid() {
- return 0;
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/common_j2se/org/eclipse/swt/internal/CommandPresentationStrategyWrapper.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal;
-
-public final class CommandPresentationStrategyWrapper {
- public static org.eclipse.swt.internal.qt.CommandPresentationStrategy createStrategy() {
- return new org.eclipse.swt.internal.qt.DesktopCommandPresentationStrategy();
- }
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/linux/org/eclipse/swt/internal/ApplicationUidWrapper.java Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nokia Corporation - initial implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal;
+
+public final class ApplicationUidWrapper {
+ public static int uid() {
+ return 0;
+ }
+}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/linux/org/eclipse/swt/internal/qt/s60/S60CommandPresentationStrategy.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-package org.eclipse.swt.internal.qt.s60;
-
-import org.eclipse.ercp.swt.mobile.Command;
-import org.eclipse.swt.internal.qt.CommandPresentationStrategy;
-import org.eclipse.swt.internal.qt.CommandUtils;
-import org.eclipse.swt.internal.qt.OS;
-import org.eclipse.swt.internal.qt.CommandArranger.CommandCollection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Internal_PackageSupport;
-import org.eclipse.swt.widgets.Widget;
-
-public class S60CommandPresentationStrategy extends CommandPresentationStrategy {
- private Command[] positiveKeyCommands;
- private Command negativeKeyCommand;
- private Command defaultCommand;
-
- public S60CommandPresentationStrategy() {
- super();
- }
-
- protected void dispose() {
- positiveKeyCommands = null;
- negativeKeyCommand = null;
- defaultCommand =null;
- }
-
-
- protected void handleCommandListChange(Command added, Command removed,
- CommandCollection commands) {
- cleanNegativeCommand();
- cleanPositiveCommands();
- updateCommandPositions(commands.getCommands(null));
- placeNegativeCommand();
- placePositiveCommands();
- }
-
- protected void handleDefaultCommandChange(Command defaultCommand) {
- this.defaultCommand = defaultCommand;
- cleanPositiveCommands();
- placePositiveCommands();
- }
-
-
- protected void handleFocusChange(Control focused,
- CommandCollection oldCommands, CommandCollection commands) {
-
- //Clean-up the existing commands
- cleanPositiveCommands();
- cleanNegativeCommand();
- //determine where the commands go
- if( commands != null && commands.getSize()>0 ){
- Command[] add = commands.getCommands(null);
- updateCommandPositions(add);
- }
- //Place them to their places
- placePositiveCommands();
- placeNegativeCommand();
-
- }
-
- private void updateCommandPositions(Command[] commands) {
- positiveKeyCommands = new Command[commands.length];
- int positiveKeyIndex=0;
- for (int i = 0; i < commands.length; i++) {
- Command cmd = commands[i];
- if ( cmd.isDefaultCommand()){
- defaultCommand = cmd;
- continue;
- }
- if( CommandUtils.isNegativeType(cmd.type) ){
- if (negativeKeyCommand == null || negativeKeyCommand.isDisposed()){
- negativeKeyCommand = cmd;
- }else
- if( negativeKeyCommand.getPriority() <= cmd.getPriority() ){
- positiveKeyCommands[positiveKeyIndex] = negativeKeyCommand;
- positiveKeyIndex++;
- negativeKeyCommand = cmd;
- }else{
- positiveKeyCommands[positiveKeyIndex] = cmd;
- positiveKeyIndex++;
- }
- continue;
- }
- positiveKeyCommands[positiveKeyIndex]=cmd;
- positiveKeyIndex++;
- }
- if ((positiveKeyIndex) < positiveKeyCommands.length ){// needs to shrink
- Command[] rightSized = new Command[positiveKeyIndex];
- System.arraycopy(positiveKeyCommands, 0, rightSized, 0, rightSized.length);
- positiveKeyCommands = rightSized;
- }
- }
-
-
- private void cleanPositiveCommands() {
- boolean useBar = false;
- if ( (positiveKeyCommands != null && positiveKeyCommands.length >1) ||
- (defaultCommand != null && positiveKeyCommands != null) ){
- useBar = true;
- }
- if (defaultCommand != null && !defaultCommand.isDisposed()
- && !defaultCommand.control.isDisposed()) {
- if (useBar) {
- OS.QWidget_removeAction(defaultCommand.control.getShell()
- .internal_getOwnMenuBar(), topHandle(defaultCommand));
- }
- else{
- OS.QWidget_removeAction(topHandle(defaultCommand.control), topHandle(defaultCommand));
- }
- }
- if (positiveKeyCommands != null) {
- for (int i = 0; i < positiveKeyCommands.length; i++) {
- Command cmd = positiveKeyCommands[i];
- if (cmd == null || cmd.isDisposed() || cmd.control.isDisposed()){
- continue;
- }
- int handle = 0;
- if (useBar) {
- handle = cmd.control.getShell().internal_getOwnMenuBar();
- } else {
- handle = topHandle(positiveKeyCommands[0].control);
- }
- OS.QWidget_removeAction(handle, topHandle(cmd));
-
- }
- }
- }
-
- private void cleanNegativeCommand() {
- if(negativeKeyCommand != null && !negativeKeyCommand.isDisposed() && !negativeKeyCommand.control.isDisposed() ){
- OS.QWidget_removeAction(topHandle(negativeKeyCommand.control), topHandle(negativeKeyCommand));
- }
- }
-
- private void placeNegativeCommand() {
- if(negativeKeyCommand != null ){
- OS.QWidget_addAction(Internal_PackageSupport.topHandle(negativeKeyCommand.control),
- topHandle(negativeKeyCommand));
- }
- }
-
- private void placePositiveCommands() {
- if (defaultCommand != null ) {
- int defaultCmdHandle = topHandle(defaultCommand);
- if (positiveKeyCommands != null) {
- OS.QMenuBar_addAction(defaultCommand.control.getShell()
- .internal_getOwnMenuBar(), defaultCmdHandle);
- } else {
- OS.QWidget_addAction(Internal_PackageSupport
- .topHandle(defaultCommand.control), defaultCmdHandle);
- }
- }
- if (positiveKeyCommands != null) {
- if (positiveKeyCommands.length == 1 && defaultCommand == null) {
- OS.QWidget_addAction(Internal_PackageSupport
- .topHandle(positiveKeyCommands[0].control),
- topHandle(positiveKeyCommands[0]));
- } else {
- CommandUtils.sort(positiveKeyCommands);
- for (int i = 0; i < positiveKeyCommands.length; i++) {
- OS.QMenuBar_addAction(positiveKeyCommands[i].control
- .getShell().internal_getOwnMenuBar(),
- topHandle(positiveKeyCommands[i]));
- }
- }
- }
- }
-
- protected void handleMenuBarChanged(int newMenuBar,
- CommandCollection commands) {
- placePositiveCommands();
- }
-
-
- private static final int topHandle(Widget w) {
- return Internal_PackageSupport.topHandle(w);
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.h Wed Jun 23 18:07:10 2010 +0300
@@ -12,7 +12,7 @@
#define WINDOWSURFACEQT_H_
#include "graphics.h"
-#include "qwindowsurface_p.h"
+#include <QtGui/private/qwindowsurface_p.h>
namespace Java { namespace GFX {
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/os.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/os.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -11467,136 +11467,215 @@
//
JNIEXPORT jint JNICALL OS_NATIVE( MobileDevice_1new )
+#ifdef __SYMBIAN32__
+ (JNIEnv* aJniEnv, jclass)
+#else
(JNIEnv*, jclass)
+#endif
{
jint handle = 0;
#ifdef __SYMBIAN32__
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
handle = swtApp->initializeMobileDevice();
+ }
+ SWT_CATCH
#endif
return handle;
}
JNIEXPORT void JNICALL OS_NATIVE( MobileDevice_1createFlipWatch )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle)
+ (JNIEnv* aJniEnv, jclass, jint aHandle)
#else
-(JNIEnv*, jclass, jint)
+ (JNIEnv*, jclass, jint)
#endif
{
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- mobileDevice->CreateFlipWatchL();
-#endif
- }
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_1( "handle=%x", aHandle );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ mobileDevice->CreateFlipWatchL();
+ }
+ SWT_CATCH
+#endif
+ }
+
JNIEXPORT void JNICALL OS_NATIVE( MobileDevice_1destroy )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle)
+ (JNIEnv* aJniEnv, jclass, jint /*aHandle*/)
#else
-(JNIEnv*, jclass, jint)
+ (JNIEnv*, jclass, jint)
#endif
{
#ifdef __SYMBIAN32__
- swtApp->destroyMobileDevice();
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_1( "handle=%x", aHandle );
+ swtApp->destroyMobileDevice();
+ }
+ SWT_CATCH
#endif
}
JNIEXPORT jint JNICALL OS_NATIVE( MobileDevice_1getUserInactivityTime )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle)
+ (JNIEnv* aJniEnv, jclass, jint aHandle)
#else
-(JNIEnv*, jclass, jint)
+ (JNIEnv*, jclass, jint)
#endif
{
jint time=0;
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- time = mobileDevice->GetUserInactivityTime();
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_1( "handle=%x", aHandle );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ time = mobileDevice->GetUserInactivityTime();
+ }
+ SWT_CATCH
#endif
return time;
}
JNIEXPORT void JNICALL OS_NATIVE( MobileDevice_1resetUserInactivityTime )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle)
+ (JNIEnv* aJniEnv, jclass, jint aHandle)
#else
-(JNIEnv*, jclass, jint)
+ (JNIEnv*, jclass, jint)
#endif
{
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- mobileDevice->ResetUserInactivityTime();
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_1( "handle=%x", aHandle );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ mobileDevice->ResetUserInactivityTime();
+ }
+ SWT_CATCH
#endif
}
JNIEXPORT void JNICALL OS_NATIVE( MobileDevice_1setLight )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle, jint aDuration)
+ (JNIEnv* aJniEnv, jclass, jint aHandle, jint aDuration)
#else
-(JNIEnv*, jclass, jint, jint)
+ (JNIEnv*, jclass, jint, jint)
#endif
{
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- mobileDevice->SetLights(static_cast<TInt>(aDuration));
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_2( "handle=%x duration=%x", aHandle, aDuration );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ mobileDevice->SetLights(static_cast<TInt>(aDuration));
+ }
+ SWT_CATCH
#endif
}
JNIEXPORT jboolean JNICALL OS_NATIVE( MobileDevice_1flashLights )
#ifdef __SYMBIAN32__
- (JNIEnv *, jclass, jint aHandle, jint aDuration)
+ (JNIEnv* aJniEnv, jclass, jint aHandle, jint aDuration)
#else
-(JNIEnv*, jclass, jint, jint)
+ (JNIEnv*, jclass, jint, jint)
#endif
{
jboolean flashLights = JNI_FALSE;
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- TRAP_IGNORE(flashLights = mobileDevice->FlashBacklightL(static_cast<TInt>(aDuration)));
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_2( "handle=%x duration=%x", aHandle, aDuration );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ TRAP_IGNORE(flashLights = mobileDevice->FlashBacklightL(static_cast<TInt>(aDuration)));
+ }
+ SWT_CATCH
#endif
return ( flashLights ? JNI_TRUE : JNI_FALSE );
}
JNIEXPORT jboolean JNICALL OS_NATIVE( MobileDevice_1vibration )
#ifdef __SYMBIAN32__
- (JNIEnv*, jclass, jint aHandle, jint aDuration)
+ (JNIEnv* aJniEnv, jclass, jint aHandle, jint aDuration)
#else
-(JNIEnv*, jclass, jint, jint)
+ (JNIEnv*, jclass, jint, jint)
#endif
{
jboolean vibraSupport = JNI_FALSE;
#ifdef __SYMBIAN32__
- CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
- vibraSupport = mobileDevice->Vibrate((TTimeIntervalMicroSeconds32)static_cast<TInt>(aDuration));
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ SWT_LOG_DATA_2( "handle=%x duration=%x", aHandle, aDuration );
+ CSwtMobileDevice* mobileDevice = reinterpret_cast<CSwtMobileDevice*>(aHandle);
+ vibraSupport = mobileDevice->Vibrate((TTimeIntervalMicroSeconds32)static_cast<TInt>(aDuration));
+ }
+ SWT_CATCH
#endif
return ( vibraSupport ? JNI_TRUE : JNI_FALSE );
}
JNIEXPORT jint JNICALL OS_NATIVE( getScreenDeviceNumber )
+#ifdef __SYMBIAN32__
+ (JNIEnv* aJniEnv, jclass)
+#else
(JNIEnv*, jclass)
+#endif
{
jint screenNumber = -1;
#ifdef __SYMBIAN32__
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
screenNumber = SymbianUtils::GetScreenDeviceNumber();
+ }
+ SWT_CATCH
#endif
return screenNumber;
}
JNIEXPORT jint JNICALL OS_NATIVE( getColorDepth )
+#ifdef __SYMBIAN32__
+ (JNIEnv* aJniEnv, jclass)
+#else
(JNIEnv*, jclass)
+#endif
{
jint colorDepth = 24;
#ifdef __SYMBIAN32__
- colorDepth = SymbianUtils::GetColorDepth();
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
+ colorDepth = SymbianUtils::GetColorDepth();
+ }
+ SWT_CATCH
#endif
return colorDepth;
}
JNIEXPORT jint JNICALL OS_NATIVE( getHwInputs )
+#ifdef __SYMBIAN32__
+ (JNIEnv* aJniEnv, jclass)
+#else
(JNIEnv*, jclass)
+#endif
{
jint hwInputs = 0;
#ifdef __SYMBIAN32__
+ SWT_TRY
+ {
+ SWT_LOG_JNI_CALL();
hwInputs = SymbianUtils::GetHwInputs();
+ }
+ SWT_CATCH
#endif
return hwInputs;
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/swtapplication.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/swtapplication.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -123,7 +123,7 @@
SWT_LOG_FUNC_CALL();
int handle = 0;
#ifdef __SYMBIAN32__
- handle = reinterpret_cast<int>(CSwtMobileDevice::NewL());
+ TRAP_IGNORE(handle = reinterpret_cast<int>(CSwtMobileDevice::NewL()));
#endif
return handle;
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/swtmobiledevice.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/swtmobiledevice.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -146,7 +146,7 @@
{
if ((aLevel < 0) || (aLevel > KMIDMaxLightLevel))
{
- User::Leave(KErrArgument);
+ return;
}
if (!iHWRMLight)
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/webkit/os.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/webkit/os.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -15,13 +15,13 @@
#include <QWebHistory>
#endif
-#include "org_eclipse_swt_internal_qt_webkit_OS_0005fwebkit.h"
+#include "org_eclipse_swt_internal_qt_webkit_WebkitOS.h"
#include "swt.h"
#include "swtlog.h"
#include "swtapplication.h"
#include "jniutils.h"
-#define OS_NATIVE(func) Java_org_eclipse_swt_internal_qt_webkit_OS_1webkit_##func
+#define OS_NATIVE(func) Java_org_eclipse_swt_internal_qt_webkit_WebkitOS_##func
using namespace Java::eSWT;
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/CommandArranger.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/CommandArranger.java Wed Jun 23 18:07:10 2010 +0300
@@ -11,12 +11,14 @@
package org.eclipse.swt.internal.qt;
import org.eclipse.ercp.swt.mobile.Command;
-import org.eclipse.swt.internal.CommandPresentationStrategyWrapper;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Internal_PackageSupport;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Widget;
+
/**
* Manages the Command presentation cycle. This is a singleton object that gets
* notified about the events that can have an effect on the way the Commands are
@@ -24,298 +26,420 @@
* context with the help of {@link CommandCollection}. It also notifies the
* currently active {@link CommandPresentationStrategy} so that the presentation
* is updated if necessary.
- *
+ *
* @see Command
* @see CommandCollection
* @see CommandPresentationStrategy
*/
public class CommandArranger {
- Control focusedControl;
- /**
- * A helper for keeping an ordered list of {@link Command}s in the current focus context.
- * The Commands are ordered according to their proximity to the currently focused control.
- * The ordered list starts with Commands from the currently focused Control if any and ends with
- * the active Shell and includes all the Commands in between. If a Control has more
- * than one Command they are ordered among themselves according to creation order.
- */
- public class CommandCollection{
+/**
+ * A helper for keeping an ordered list of {@link Command}s in the current focus
+ * context. The Commands are ordered according to their proximity to the
+ * currently focused control. The ordered list starts with Commands from the
+ * currently focused Control if any and ends with the active Shell and includes
+ * all the Commands in between. If a Control has more than one Command they are
+ * ordered among themselves according to creation order.
+ */
+public class CommandCollection {
- private Command[] fCommands;
+private Command[] fCommands;
- CommandCollection(){
- super();
- }
+CommandCollection() {
+ super();
+}
- /**
- * Adds the command to the collection.
- * Warning: This does not make duplicate control.
- * @param command
- */
- void addCommand(Command command) {
- if (command == null)
- return;
- if (fCommands == null) {
- fCommands = new Command[1];
- fCommands[0] = command;
- return;
- }
- int size = fCommands.length + 1;
- Command[] newList = new Command[size];
- // find the insertion point so that the order is correct
- int insertPoint = 0;
- Shell activeShell = display.getActiveShell();
- Control ctrl = display.getFocusControl();
- while (ctrl != null && ctrl != activeShell) {
- if (ctrl == command.control) {
- // Adding a command to focused control increment by one.
- // adding Command.internal_getCommands(ctrl).length will
- // just duplicate the count for Commands already in array.
- insertPoint++;
- break;
- }
- insertPoint += Command.internal_getCommands(ctrl).length;
- ctrl = ctrl.getParent();
- }
- System.arraycopy(fCommands, 0, newList, 0, insertPoint);
- System.arraycopy(fCommands, insertPoint, newList, insertPoint + 1,
- fCommands.length - insertPoint);
- newList[insertPoint] = command;
- fCommands = newList;
+/**
+ * Adds the command to the collection. Warning: This does not make duplicate
+ * control.
+ *
+ * @param command
+ */
+void addCommand(Command command) {
+ if (command == null)
+ return;
+ if (fCommands == null) {
+ fCommands = new Command[1];
+ fCommands[0] = command;
+ return;
+ }
+ int size = fCommands.length + 1;
+ Command[] newList = new Command[size];
+ // find the insertion point so that the order is correct
+ int insertPoint = 0;
+ Shell activeShell = display.getActiveShell();
+ Control ctrl = display.getFocusControl();
+ while (ctrl != null && ctrl != activeShell) {
+ if (ctrl == command.control) {
+ // Adding a command to focused control increment by one.
+ // adding Command.internal_getCommands(ctrl).length will
+ // just duplicate the count for Commands already in array.
+ insertPoint++;
+ break;
}
+ insertPoint += Command.internal_getCommands(ctrl).length;
+ ctrl = ctrl.getParent();
+ }
+ System.arraycopy(fCommands, 0, newList, 0, insertPoint);
+ System.arraycopy(fCommands, insertPoint, newList, insertPoint + 1, fCommands.length
+ - insertPoint);
+ newList[insertPoint] = command;
+ fCommands = newList;
+}
- /**
- * Adds the list of Commands to the collection.
- * @param commands
- */
- void addCommand( Command[] commands ){
- if (commands == null || commands.length == 0 ) return;
- if (fCommands == null ){
- fCommands = new Command[ commands.length ];
- System.arraycopy(commands, 0, fCommands, 0, commands.length );
- return;
- }
- int size = commands.length + fCommands.length;
- Command[] newList = new Command[ size ];
- System.arraycopy(fCommands, 0, newList, 0, fCommands.length);
- System.arraycopy(commands, 0, newList, fCommands.length , commands.length );
- fCommands = newList;
+/**
+ * Adds the list of Commands to the collection.
+ *
+ * @param commands
+ */
+void addCommand(Command[] commands) {
+ if (commands == null || commands.length == 0)
+ return;
+ if (fCommands == null) {
+ fCommands = new Command[commands.length];
+ System.arraycopy(commands, 0, fCommands, 0, commands.length);
+ return;
+ }
+ int size = commands.length + fCommands.length;
+ Command[] newList = new Command[size];
+ System.arraycopy(fCommands, 0, newList, 0, fCommands.length);
+ System.arraycopy(commands, 0, newList, fCommands.length, commands.length);
+ fCommands = newList;
+}
+
+/**
+ * Removes the command from the list.
+ *
+ * @param command
+ */
+void removeCommand(Command command) {
+ if (command == null)
+ return;
+ if (fCommands == null || fCommands.length == 0)
+ return;
+ int removeIndex = -1;
+ for (int i = 0; i < fCommands.length; i++) {
+ if (fCommands[i] == command) {
+ removeIndex = i;
}
+ }
+ if (removeIndex == -1)
+ return;
+ Command[] newList = new Command[fCommands.length - 1];
+ System.arraycopy(fCommands, 0, newList, 0, removeIndex);
+ System.arraycopy(fCommands, removeIndex + 1, newList, removeIndex, (fCommands.length
+ - removeIndex - 1));
+ fCommands = newList;
+}
- /**
- * Removes the command from the list.
- * @param command
- */
- void removeCommand( Command command ){
- if ( command == null ) return;
- if (fCommands == null || fCommands.length == 0 ) return;
- int removeIndex = -1;
- for (int i = 0; i < fCommands.length; i++) {
- if(fCommands[i] == command ){
- removeIndex = i;
- }
+/**
+ * Returns the number of the Commands
+ *
+ * @return boolean
+ */
+int getSize() {
+ int size = 0;
+ if (fCommands != null)
+ size = fCommands.length;
+ return size;
+}
+
+/**
+ * Retrieves the Commands of the types indicated by the commandTypes array. The
+ * order of the commandTypes array has no significance. Passing a null parameter
+ * or an empty array retrieves all the available Commands.
+ *
+ * @param commandTypes
+ * @return Command list
+ */
+Command[] getCommands(int[] commandTypes) {
+ if (commandTypes == null || commandTypes.length == 0) {
+ return fCommands;
+ }
+ int size = getSize();
+ Command[] filteredCommands = new Command[size];
+ int index = 0;
+ for (int i = 0; i < fCommands.length; i++) {
+ for (int j = 0; j < commandTypes.length; j++) {
+ if (fCommands[i].type == commandTypes[j]) {
+ filteredCommands[index] = fCommands[i];
+ index++;
+ break;
}
- if ( removeIndex == -1 ) return;
- Command[] newList = new Command[ fCommands.length -1 ];
- System.arraycopy( fCommands, 0, newList, 0, removeIndex);
- System.arraycopy( fCommands, removeIndex + 1, newList, removeIndex, (fCommands.length - removeIndex -1) );
- fCommands = newList;
}
+ }
+ if (size > (index)) {// Some commands filtered resize the Array
+ Command[] shrunk = new Command[index];
+ System.arraycopy(filteredCommands, 0, shrunk, 0, index);
+ return shrunk;
+ }
+ return filteredCommands;
+}
- /**
- * Returns the number of the Commands
- *
- * @return boolean
- */
- public int getSize(){
- int size = 0;
- if (fCommands != null ) size = fCommands.length;
- return size;
- }
+}// CommandCollection
- /**
- * Retrieves the Commands of the types indicated by the commandTypes array.
- * The order of the commandTypes array has no significance. Passing a null parameter
- * or an empty array retrieves all the available Commands.
- *
- * @param commandTypes
- * @return Command list
- */
- public Command[] getCommands( int[] commandTypes ){
- if ( commandTypes == null || commandTypes.length == 0 ){
- return fCommands;
- }
- int size = getSize();
- Command[] filteredCommands = new Command[size];
- int index = 0;
- for (int i = 0; i < fCommands.length ; i++) {
- for(int j = 0; j<commandTypes.length; j++){
- if ( fCommands[i].type == commandTypes[j] ){
- filteredCommands[index]=fCommands[i];
- index++;
- break;
- }
- }
- }
- if( size > (index) ){// Some commands filtered resize the Array
- Command[] shrunk = new Command[index];
- System.arraycopy( filteredCommands, 0, shrunk, 0, index);
- return shrunk;
- }
- return filteredCommands;
- }
- }// CommandCollection
+private CommandCollection currentCommands;
+private Command defaultCommand;
+private Display display;
+Control focusedControl;
+Shell lastKnownActiveShell;
+private Command[] positiveKeyCommands;
+private Command negativeKeyCommand;
+
+
+public CommandArranger(Display display) {
+ super();
+ this.display = display;
+ currentCommands = new CommandCollection();
+}
- private CommandCollection currentCommands;
- private CommandPresentationStrategy strategy;
- private Command defaultCommand;
- private Display display;
+/**
+ * Called when the application changes the QMenuBar. This method does not handle
+ * the cases when the QMenuBar may change when the active top-level Shell
+ * changes. Since this does not cause a menu bar change on all platforms.
+ *
+ * @see org.eclipse.swt.widgets.Decorations#setMenuBar(Menu)
+ *
+ **/
+public void menuBarChanged(Decorations decorations) {
+ if (currentCommands == null || currentCommands.getSize() < 1)
+ return;
+ // if the changed menu bar is not on the active shell ignore and leave
+ // it to focus change.
+ if (decorations.getShell() != decorations.getDisplay().getActiveShell())
+ return;
+ // Call internal_getOwnMenuBar because the menu bar can be set to null
+ // in Decorations and
+ // we may need to create the internal one.
+ int menuBarHandle = decorations.internal_getOwnMenuBar();
- public CommandArranger(Display display){
- super();
- this.display = display;
- currentCommands = new CommandCollection();
- strategy = CommandPresentationStrategyWrapper.createStrategy();
+ handleMenuBarChanged(menuBarHandle, currentCommands);
+}
+
+/**
+ * Called when a new Shell becomes active.
+ *
+ * @see Control#qt_swt_event_focusWasGained() //TODO
+ */
+public void shellActivityChanged() {
+ Shell activeShell = display.getActiveShell();
+
+ if (activeShell == lastKnownActiveShell) {
+ return;
+ }
+ lastKnownActiveShell = activeShell;
+
+ cleanPositiveCommands();
+ cleanNegativeCommand();
+
+ currentCommands = new CommandCollection();
+
+ if (activeShell != null && Command.internal_getCommands(activeShell).length > 0) {
+ currentCommands.addCommand(Command.internal_getCommands(activeShell));
}
+ // Determine where the commands go
+ if (currentCommands.getSize() > 0) {
+ Command[] add = currentCommands.getCommands(null);
+ updateCommandPositions(add);
+ placePositiveCommands();
+ placeNegativeCommand();
+ }
+}
+
+/**
+ * Called when a new Command is created
+ *
+ * @param command
+ */
+public void commandAdded(Command command) {
+ if (isInFocusContext(command.control)) {
+ currentCommands.addCommand(command);
+ handleCommandListChange(command, null, currentCommands);
+ }
+}
+
+/**
+ * Called when a Command is disposed
+ *
+ * @param command
+ */
+public void commandRemoved(Command command) {
+ if (command == defaultCommand)
+ defaultCommand = null;
+ if (isInFocusContext(command.control)) {
+ currentCommands.removeCommand(command);
+ handleCommandListChange(null, command, currentCommands);
+ }
+}
+
+/**
+ * Called when the Display is getting disposed.
+ */
+public void dispose() {
+ currentCommands = null;
+ display = null;
+ positiveKeyCommands = null;
+ negativeKeyCommand = null;
+ defaultCommand = null;
+ lastKnownActiveShell = null;
+}
+
+/**
+ * Called when a Command is set default
+ *
+ * @param command
+ * @see Command#setDefaultCommand();
+ */
+public void setDefaultCommand(Command command) {
+ defaultCommand = command;
+ if (isInFocusContext(command.control)) {
+ handleDefaultCommandChange(command);
+ }
+}
+
+/**
+ * Returns the default command or null if there is none.
+ *
+ * @return
+ * @see Command#isDefaultCommand()
+ */
+public Command getDefaultCommand() {
+ return defaultCommand;
+}
- /**
- * Called when the application changes the QMenuBar.
- * This method does not handle the cases when the QMenuBar
- * may change when the active top-level Shell changes. Since
- * this does not cause a menu bar change on all platforms.
- *
- * @see org.eclipse.swt.widgets.Decorations#setMenuBar(Menu)
- *
- **/
- public void menuBarChanged( Decorations decorations ){
+private boolean isInFocusContext(Control control) {
+ Display display = control.getDisplay();
+ Shell activeShell = display.getActiveShell();
+ return control == activeShell;
+}
+
+private void handleCommandListChange(Command added, Command removed, CommandCollection commands) {
+ cleanNegativeCommand();
+ cleanPositiveCommands();
+ updateCommandPositions(commands.getCommands(null));
+ placeNegativeCommand();
+ placePositiveCommands();
+}
- if ( currentCommands == null || currentCommands.getSize() < 1 ) return;
- // if the changed menu bar is not on the active shell ignore and leave it to focus change.
- if (decorations.getShell() != decorations.getDisplay().getActiveShell() )return;
- // Call internal_getOwnMenuBar because the menu bar can be set to null in Decorations and
- // we may need to create the internal one.
- int menuBarHandle = decorations.internal_getOwnMenuBar();
-
- strategy.handleMenuBarChanged( menuBarHandle, currentCommands );
- }
+private void handleDefaultCommandChange(Command defaultCommand) {
+ this.defaultCommand = defaultCommand;
+ cleanPositiveCommands();
+ placePositiveCommands();
+}
- /**
- * Called when a new Control gains focus.
- *
- * @see Control#qt_swt_event_focusWasGained()
- */
- public void focusedControlChanged(){
- Control focusControl = display.getFocusControl();
- if (focusControl == focusedControl) {
- return;
+private void updateCommandPositions(Command[] commands) {
+ positiveKeyCommands = new Command[commands.length];
+ int positiveKeyIndex = 0;
+ for (int i = 0; i < commands.length; i++) {
+ Command cmd = commands[i];
+ if (cmd.isDefaultCommand()) {
+ defaultCommand = cmd;
+ continue;
}
- focusedControl = focusControl;
-
- Shell activeShell = display.getActiveShell();
- CommandCollection oldCollection = currentCommands;
- currentCommands = new CommandCollection();
-
- Control ctrl = focusControl;
- while ( ctrl!= null && ctrl != activeShell ){
- if ( Command.internal_getCommands(ctrl).length > 0 ){
- currentCommands.addCommand( Command.internal_getCommands(ctrl) );
+ if (CommandUtils.isNegativeType(cmd.type)) {
+ if (negativeKeyCommand == null || negativeKeyCommand.isDisposed()) {
+ negativeKeyCommand = cmd;
+ } else if (negativeKeyCommand.getPriority() <= cmd.getPriority()) {
+ positiveKeyCommands[positiveKeyIndex] = negativeKeyCommand;
+ positiveKeyIndex++;
+ negativeKeyCommand = cmd;
+ } else {
+ positiveKeyCommands[positiveKeyIndex] = cmd;
+ positiveKeyIndex++;
}
- ctrl = ctrl.getParent();
+ continue;
}
- if (activeShell != null && Command.internal_getCommands(activeShell).length > 0 ){
- currentCommands.addCommand( Command.internal_getCommands(activeShell) );
- }
-
- if (strategy != null) {
- strategy.handleFocusChange(focusControl, oldCollection, currentCommands);
- }
+ positiveKeyCommands[positiveKeyIndex] = cmd;
+ positiveKeyIndex++;
}
+ if ((positiveKeyIndex) < positiveKeyCommands.length) {// needs to shrink
+ Command[] rightSized = new Command[positiveKeyIndex];
+ System.arraycopy(positiveKeyCommands, 0, rightSized, 0, rightSized.length);
+ positiveKeyCommands = rightSized;
+ }
+}
- /**
- * Called when a new Command is created
- * @param command
- */
- public void commandAdded( Command command ){
- if( isInFocusContext(command.control)){
- currentCommands.addCommand(command);
- strategy.handleCommandListChange(command, null, currentCommands);
+private void cleanPositiveCommands() {
+ boolean useBar = false;
+ if ((positiveKeyCommands != null && positiveKeyCommands.length > 1)
+ || (defaultCommand != null && positiveKeyCommands != null)) {
+ useBar = true;
+ }
+ if (defaultCommand != null && !defaultCommand.isDisposed()
+ && !defaultCommand.control.isDisposed()) {
+ if (useBar) {
+ OS.QWidget_removeAction(defaultCommand.control.getShell().internal_getOwnMenuBar(),
+ topHandle(defaultCommand));
+ } else {
+ OS.QWidget_removeAction(topHandle(defaultCommand.control), topHandle(defaultCommand));
}
}
-
- /**
- * Called when a Command is disposed
- * @param command
- */
- public void commandRemoved( Command command ){
- if ( command == defaultCommand ) defaultCommand = null;
- if (isInFocusContext(command.control)){
- currentCommands.removeCommand( command );
- strategy.handleCommandListChange(null, command, currentCommands);
- }
- }
+ if (positiveKeyCommands != null) {
+ for (int i = 0; i < positiveKeyCommands.length; i++) {
+ Command cmd = positiveKeyCommands[i];
+ if (cmd == null || cmd.isDisposed() || cmd.control.isDisposed()) {
+ continue;
+ }
+ int handle = 0;
+ if (useBar) {
+ handle = cmd.control.getShell().internal_getOwnMenuBar();
+ } else {
+ handle = topHandle(positiveKeyCommands[0].control);
+ }
+ OS.QWidget_removeAction(handle, topHandle(cmd));
- /**
- * Called when the Display is getting disposed.
- */
- public void dispose(){
- strategy.dispose();
- strategy = null;
- currentCommands = null;
- display = null;
- }
- /**
- * Called when a Command is set default
- *
- * @param command
- * @see Command#setDefaultCommand();
- */
- public void setDefaultCommand(Command command ){
- defaultCommand = command;
- if(isInFocusContext(command.control)){
- strategy.handleDefaultCommandChange(command);
}
}
+}
- /**
- * Returns the default command or null if there is none.
- *
- * @return
- * @see Command#isDefaultCommand()
- */
- public Command getDefaultCommand(){
- return defaultCommand;
+private void cleanNegativeCommand() {
+ if (negativeKeyCommand != null && !negativeKeyCommand.isDisposed()
+ && !negativeKeyCommand.control.isDisposed()) {
+ OS.QWidget_removeAction(topHandle(negativeKeyCommand.control),
+ topHandle(negativeKeyCommand));
}
+}
- /**
- * Sets a new {@link CommandPresentationStrategy}. It also disposes to old one.
- *
- * @param commandPresentationStrategy
- */
- public void setPresentationStrategy( CommandPresentationStrategy commandPresentationStrategy ){
- CommandPresentationStrategy oldStrategy = strategy;
- strategy = commandPresentationStrategy;
- if (oldStrategy != null ){
- oldStrategy.dispose();
+private void placeNegativeCommand() {
+ if (negativeKeyCommand != null) {
+ OS.QWidget_addAction(Internal_PackageSupport.topHandle(negativeKeyCommand.control),
+ topHandle(negativeKeyCommand));
+ }
+}
+
+private void placePositiveCommands() {
+ if (defaultCommand != null) {
+ int defaultCmdHandle = topHandle(defaultCommand);
+ if (positiveKeyCommands != null) {
+ OS.QMenuBar_addAction(defaultCommand.control.getShell().internal_getOwnMenuBar(),
+ defaultCmdHandle);
+ } else {
+ OS.QWidget_addAction(Internal_PackageSupport.topHandle(defaultCommand.control),
+ defaultCmdHandle);
}
}
+ if (positiveKeyCommands != null) {
+ if (positiveKeyCommands.length == 1 && defaultCommand == null) {
+ OS.QWidget_addAction(Internal_PackageSupport.topHandle(positiveKeyCommands[0].control),
+ topHandle(positiveKeyCommands[0]));
+ } else {
+ CommandUtils.sort(positiveKeyCommands);
+ for (int i = 0; i < positiveKeyCommands.length; i++) {
+ OS.QMenuBar_addAction(positiveKeyCommands[i].control.getShell()
+ .internal_getOwnMenuBar(), topHandle(positiveKeyCommands[i]));
+ }
+ }
+ }
+}
- private boolean isInFocusContext(Control control){
- Display display = control.getDisplay();
- Shell activeShell = display.getActiveShell();
- Control focused = display.getFocusControl();
- if( focused == null )return false;
- if(control.getShell() != activeShell) return false;
- if( control == focused ) return true;
- return isFocusAncestor(focused, control);
- }
+private void handleMenuBarChanged(int newMenuBar, CommandCollection commands) {
+ placePositiveCommands();
+}
- private boolean isFocusAncestor(Control node, Control parent){
- Control nodeParent = node.getParent();
- if( nodeParent == parent )return true;
- if (nodeParent == null || nodeParent == node.getShell() )return false;
- return isFocusAncestor(nodeParent, parent);
- }
+private static final int topHandle(Widget w) {
+ return Internal_PackageSupport.topHandle(w);
+}
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/CommandPresentationStrategy.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal.qt;
-
-import org.eclipse.ercp.swt.mobile.Command;
-import org.eclipse.swt.internal.qt.CommandArranger.CommandCollection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-/**
- * This is the interface that all the {@link Command} presentation is delegated to.
- * The implementations of this abstract class are expected to provide the
- * presentation logic for their respective uses.
- *
- * The implementations of this class can be specific to a platform, toolkit or a
- * combination of factors. Refer to {@link CommandArranger} on the loading mechanism
- * of the {@link CommandPresentationStrategy} implementation.
- *
- * Since the implementations can be specific to a toolkit implementations are expected to
- * handle the following.
- * <ul>
- * <li>Ordering of the {@link Command}s</li>
- * <li>Positioning {@link Command}s to correct soft keys or menus so that they are accessible</li>
- * </ul>
- *
- */
-public abstract class CommandPresentationStrategy {
-
-
- /**
- * CommandArranger delegates to this method when the currently active menu bar has changed.
- * This does not include the cases where menu bar changes due to active window change which
- * causes the menu bar to change on some platforms.
- *
- * @param newMenuBar
- * @param commands
- */
- protected abstract void handleMenuBarChanged( int newMenuBar, CommandCollection commands );
-
- /**
- * CommandArranger delegates to this method when the currently focused control has changed.
- * On some platforms a focus change can also be accompanied with a menu bar change. Such menu bar
- * changes due to active window change must be handled here.
- *
- * @param focused-currently focused control
- * @param oldCommands-the commands of the previous focus context
- * @param commands-of the current focus context
- *
- * @see CommandArranger#focusedControlChanged()
- */
- protected abstract void handleFocusChange( Control focused, CommandCollection oldCommands, CommandCollection commands );
-
- /**
- * CommandArranger delegates to this method, an added or removed Command is in the current
- * focus context and needs to be presented. In other words, this method does not get notification of
- * all added or removed Commands but only those that has some impact on the representation.
- *
- * @param added Command
- * @param removed Command
- * @param commands including the added/removed command
- *
- * @see CommandArranger#commandAdded(Command)
- * @see CommandArranger#commandRemoved(Command)
- */
- protected abstract void handleCommandListChange(Command added, Command removed, CommandCollection commands );
-
- /**
- * CommandArranger reports the default command changes to this method. However implementations
- * should take into account default commands on focus changes.
- *
- * @param defaultCommand
- */
- protected abstract void handleDefaultCommandChange( Command defaultCommand );
- /**
- * This method is called when the CommandArranger is disposed as part of
- * the disposal of the {@link Display} or
- * if it is replaced by a new one on the CommandArranger.
- *
- * On Display dispose, the method is called after all the Shells are disposed but before the Display is cleaned.
- *
- * @see CommandArranger#setPresentationStrategy(CommandPresentationStrategy)
- */
- protected abstract void dispose();
-
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/DesktopCommandPresentationStrategy.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal.qt;
-
-import org.eclipse.ercp.swt.mobile.Command;
-import org.eclipse.swt.internal.qt.CommandArranger.CommandCollection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Internal_PackageSupport;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Widget;
-
-public class DesktopCommandPresentationStrategy extends
- CommandPresentationStrategy {
-
- private int commandsMenu;
- private int commandsMenuAction;
- private Control previousFocus;
-
- public DesktopCommandPresentationStrategy(){
- super();
- initCommandsMenu();
- }
-
- protected void handleCommandListChange(Command added, Command removed,
- CommandCollection commands) {
-
- Shell shell = null;
- if ( added != null ){
- shell = added.control.getShell();
- OS.QMenu_addAction(commandsMenu, handle(added) );
- }
- else{
- shell = removed.control.getShell();
- OS.QWidget_removeAction(commandsMenu, handle(removed) );
- }
-
- OS.QMenuBar_addAction(shell.internal_getOwnMenuBar(), commandsMenuAction );
- }
-
- protected void handleFocusChange(Control focused,
- CommandCollection oldCommands, CommandCollection commands) {
- Shell shell = focused.getShell();
-
- if( oldCommands != null && oldCommands.getSize() >0 ){
- Command[] remove = oldCommands.getCommands(null);
- for(int i=0; i< remove.length; i++){
- if (previousFocus!= null && remove[i].control == previousFocus){
- OS.QWidget_removeAction(handle(previousFocus), handle(remove[i]));
- }else{
- OS.QWidget_removeAction(commandsMenu, handle(remove[i]));
- }
- }
- }
-
- if ( commands != null && commands.getSize() > 0 ){
- OS.QMenuBar_addAction(shell.internal_getOwnMenuBar(), commandsMenuAction );
- Command[] add = commands.getCommands(null);
- CommandUtils.sort(add);
- for(int i=0 ; i < add.length; i++){
- if ( add[i].control != focused ){
- OS.QMenu_addAction( commandsMenu, handle(add[i]) );
- }
- else{
- OS.QWidget_addAction(handle(focused), handle(add[i]));
- }
- if (add[i].isDefaultCommand() )OS.QMenu_setDefaultAction( commandsMenu, handle(add[i]) );
- }
- }
- //Store for use next time.
- previousFocus=focused;
- }
-
- protected void handleMenuBarChanged(int newMenuBar,
- CommandCollection commands) {
- OS.QMenuBar_addAction(newMenuBar, commandsMenuAction );
- }
-
-
- protected void dispose() {
- if (commandsMenu != 0 ){
- QObjectDeleteWrapper.deleteSafely( commandsMenu );
- commandsMenu = 0;
- }
- if (commandsMenuAction != 0 ){
- QObjectDeleteWrapper.deleteSafely( commandsMenuAction );
- commandsMenuAction = 0;
- }
- }
-
- private void initCommandsMenu (){
- commandsMenuAction = OS.QAction_new( 0 );
- OS.QAction_setText( commandsMenuAction, "Commands");
- commandsMenu = OS.QMenu_new( 0 );
- OS.QAction_setMenu( commandsMenuAction, commandsMenu );
- }
-
- protected void handleDefaultCommandChange(Command defaultCommand) {
- int handle = 0;
- if (defaultCommand != null ) handle = handle(defaultCommand);
- OS.QMenu_setDefaultAction( commandsMenu, handle );
- }
-
-
- private final int handle(Widget w) {
- return Internal_PackageSupport.handle(w);
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/GraphicsContext.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/GraphicsContext.java Wed Jun 23 18:07:10 2010 +0300
@@ -340,7 +340,7 @@
*/
public void bindTarget(org.eclipse.swt.widgets.Control target) {
if(target == null) {
- throw new NullPointerException("target is null");
+ throw new NullPointerException("target is null");
}
if(target.isDisposed())
throw new IllegalArgumentException("Target already disposed");
@@ -361,7 +361,7 @@
*/
public void bindTarget(org.eclipse.swt.widgets.Display target) {
if(target == null) {
- throw new NullPointerException("target is null");
+ throw new NullPointerException("target is null");
}
if(target.isDisposed())
throw new IllegalArgumentException("Target already disposed");
@@ -383,7 +383,7 @@
*/
public void bindTarget(org.eclipse.swt.internal.qt.graphics.Image target) {
if(target == null) {
- throw new NullPointerException("target is null");
+ throw new NullPointerException("target is null");
}
if(target.isDisposed())
throw new IllegalArgumentException("Target already disposed");
@@ -406,10 +406,10 @@
*/
public void bindTarget(org.eclipse.swt.internal.qt.graphics.NativeCommandBuffer target, org.eclipse.swt.widgets.Control flushTarget) {
if(target == null) {
- throw new NullPointerException("target is null");
+ throw new NullPointerException("target is null");
}
if(flushTarget == null) {
- throw new NullPointerException("flushTarget is null");
+ throw new NullPointerException("flushTarget is null");
}
if(target.isDisposed())
throw new IllegalArgumentException("Target already disposed");
@@ -444,7 +444,7 @@
*/
public void bindTarget(org.eclipse.swt.internal.qt.graphics.NativeCommandBuffer target) {
if(target == null) {
- throw new NullPointerException("Target is null");
+ throw new NullPointerException("Target is null");
}
if(target.isDisposed()) {
throw new IllegalArgumentException("target already disposed");
@@ -464,12 +464,12 @@
*/
public void bindTarget(org.eclipse.swt.internal.qt.graphics.WindowSurface target) {
if(target == null) {
- throw new NullPointerException("target is null");
+ throw new NullPointerException("target is null");
}
- if(target.isDisposed()) {
+ if(target.isDisposed()) {
throw new IllegalArgumentException("target already disposed");
}
- bindTarget(target, TARGET_WINDOWSURFACE, target.handle, 0);
+ bindTarget(target, TARGET_WINDOWSURFACE, target.handle, 0);
}
/**
@@ -560,6 +560,10 @@
}
// if buffer does not contain data do nothing
if(buffer.containsData()) {
+ // Notify the image that it will get modified. This affects any existing shallow copies of it.
+ if(targetData.type == GraphicsContext.TARGET_IMAGE) {
+ ((Image)targetData.target).pixelDataModified();
+ }
processBuffer(buffer);
}
}
@@ -1149,11 +1153,11 @@
* @throws NullPointerException if surface is null
*/
public void drawWindowSurface(WindowSurface surface, int x, int y, int width, int height) {
- if(surface == null)
- {
- throw new NullPointerException("surface is null");
- }
- OS.graphicsContext_drawWindowSurface(handle, surface.handle, x, y, width, height);
+ if(surface == null)
+ {
+ throw new NullPointerException("surface is null");
+ }
+ OS.graphicsContext_drawWindowSurface(handle, surface.handle, x, y, width, height);
}
@@ -2094,19 +2098,21 @@
}
case JavaCommandBuffer.OP_DRAWIMAGE1:
{
- Image img = (Image)images.elementAt(imageCount++);
+ Image img = (Image)images.elementAt(imageCount);
+ images.setElementAt(null, imageCount++);
OS.graphicsContext_drawImage(handle,
img.handle,
intParams[i++],
intParams[i++]);
// As we made a shallow copy of the image in buffer
// its safe to delete that here
- img.dispose();
+ img.freeCommandBufferCopy();
break;
}
case JavaCommandBuffer.OP_DRAWIMAGE2:
{
- Image img = (Image)images.elementAt(imageCount++);
+ Image img = (Image)images.elementAt(imageCount);
+ images.setElementAt(null, imageCount++);
OS.graphicsContext_drawImage(handle,
img.handle,
intParams[i++],
@@ -2120,7 +2126,7 @@
intParams[i++]);
// As we made a shallow copy of the image in buffer
// its safe to delete that here
- img.dispose();
+ img.freeCommandBufferCopy();
break;
}
case JavaCommandBuffer.OP_DRAWFOCUS:
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/Image.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/Image.java Wed Jun 23 18:07:10 2010 +0300
@@ -12,6 +12,8 @@
import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Internal_PackageSupport;
public final class Image {
@@ -128,6 +130,17 @@
// GraphicsContext bound to this image
private GraphicsContext boundingGc = null;
+ // Image manages copies of itself for command buffering of drawImage and drawRegion.
+ private Image commandBufferCopy;
+ private int commandBufferCopyRefs;
+ private boolean commandBufferCopyDirty;
+
+ // A copy-constructed Image remembers what it's a copy of
+ private Image whatAmIACopyOf;
+
+ private Image() {
+ }
+
/**
* Constructs new image with given native image handle.
*
@@ -135,7 +148,7 @@
* @throws OutOfMemoryError if imgHandlde is invalid
*/
Image(int imgHandle) {
- Utils.validateUiThread();
+ Utils.validateUiThread();
// validate handle
if(imgHandle == 0) {
throw new OutOfMemoryError();
@@ -218,10 +231,7 @@
if (sourceImage == null) {
throw new NullPointerException("img is null");
}
- // Construct image in native side and store the handle
- handle = OS.image_create(sourceImage.handle, x, y, width, height); // may throw outOfMemoryError
- // set dimensions
- updateSize();
+ createCopy(sourceImage, x, y, width, height);
}
/**
@@ -269,7 +279,7 @@
* releaseTarget() of binding gc is called automatically.
*/
public void dispose() {
- Utils.validateUiThread();
+ Utils.validateUiThread();
if (handle != 0 || !disposed) {
// If this instance is being disposed while
// gc is still bound, release binding before disposing.
@@ -285,6 +295,8 @@
// it is created for this instance
SurfaceCache.getInstance().deleteSurface(this);
+ whatAmIACopyOf = null;
+
// dispose native peer
OS.image_dispose(handle);
handle = 0;
@@ -308,10 +320,10 @@
* @return image format
*/
public int getFormat() {
- checkState();
- if (pixelFormat == FORMAT_IMG_NONE) {
- pixelFormat = OS.image_getFormat(handle);
- }
+ checkState();
+ if (pixelFormat == FORMAT_IMG_NONE) {
+ pixelFormat = OS.image_getFormat(handle);
+ }
return pixelFormat;
}
/**
@@ -593,7 +605,7 @@
*/
public int getHandle()
{
- checkState();
+ checkState();
return handle;
}
@@ -603,7 +615,7 @@
*/
synchronized public int getNativePixmapHandle()
{
- checkState();
+ checkState();
if(pixmapHandle == 0)
{
// In the current implementation this will return
@@ -621,7 +633,7 @@
* @return New object
*/
public ImageData getImageData() {
- checkState();
+ checkState();
return OS.image_getImageData(handle);
}
@@ -629,7 +641,7 @@
* Private helper to check the state of the current instance.
*/
private void checkState() {
- Utils.validateUiThread();
+ Utils.validateUiThread();
if(disposed) {
throw new IllegalStateException("Image already disposed");
}
@@ -657,4 +669,97 @@
int imageHandle = OS.image_create(imageData);
return new Image(imageHandle);
}
+
+ /**
+ * Obtains a shallow copy of this Image to be placed in the command buffer.
+ * The returned copy must be marked as free by calling freeCommandBufferCopy
+ * when it's no longer needed.
+ *
+ * @return The copy
+ */
+ Image getCommandBufferCopy() {
+ if(commandBufferCopyDirty) {
+ return copyInUIThread();
+ }
+ if(commandBufferCopy == null) {
+ commandBufferCopyDirty = false;
+ commandBufferCopy = copyInUIThread();
+ commandBufferCopyRefs = 0;
+ }
+ commandBufferCopyRefs++;
+ return commandBufferCopy;
+ }
+
+ /**
+ * Marks a copy returned from getCommandBufferCopy as free.
+ *
+ * @param image
+ * The image returned from getShallowCopy.
+ */
+ void freeCommandBufferCopy() {
+ if(disposed) {
+ throw new RuntimeException("Image referenced by command buffer has been disposed");
+ }
+ if(whatAmIACopyOf == null) {
+ throw new RuntimeException("Image not a copy");
+ }
+ whatAmIACopyOf.freeCommandBufferCopyOfMe(this);
+ }
+
+ /**
+ * Tells to the Image that it has been modified and any copies returned from
+ * getShallowCopy() have thus become deep copies.
+ */
+ void pixelDataModified() {
+ if(commandBufferCopy != null) {
+ commandBufferCopyDirty = true;
+ }
+ }
+
+ /*
+ * Copy-construction
+ */
+ private void createCopy(Image sourceImage, int x, int y, int width, int height) {
+ // Construct image in native side and store the handle
+ handle = OS.image_create(sourceImage.handle, x, y, width, height); // may throw outOfMemoryError
+ // set dimensions
+ updateSize();
+ whatAmIACopyOf = sourceImage;
+ }
+
+ /*
+ * Called on the Image when a copy it has returned from getCommandBufferCopy
+ * is being freed by a call to freeCommandBufferCopy. The Image may be
+ * disposed at this point while the copy is not.
+ */
+ private void freeCommandBufferCopyOfMe(Image copy) {
+ if(copy != commandBufferCopy) {
+ throw new RuntimeException("Copy doesn't exist, freed multiple times?");
+ } else {
+ commandBufferCopyRefs--;
+ if(commandBufferCopyRefs <= 0) {
+ commandBufferCopy.dispose();
+ commandBufferCopy = null;
+ }
+ }
+ }
+
+ /*
+ * Creates a shallow copy of the Image in the UI thread.
+ */
+ private Image copyInUIThread() {
+ Display d = Internal_PackageSupport.getDisplayInstance();
+ final Image copy = new Image();
+ if(d != null) {
+ d.syncExec(new Runnable() {
+ public void run() {
+ copy.createCopy(Image.this, 0, 0, 0, 0);
+ }
+ });
+ }
+ if(copy.handle == 0) {
+ return null;
+ }
+ return copy;
+ }
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/JavaCommandBuffer.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/graphics/JavaCommandBuffer.java Wed Jun 23 18:07:10 2010 +0300
@@ -26,533 +26,533 @@
*/
public final class JavaCommandBuffer {
- // All collected drawing operations and their parameters
- private int[] intParams;
- private int intCount;
- private StringBuffer strParams;
+ // All collected drawing operations and their parameters
+ private int[] intParams;
+ private int intCount;
+ private StringBuffer strParams;
- // Holder for images
- private Vector images;
+ // Holder for images
+ private Vector images;
- // holder for rgbData
- private Vector rgbData;
+ // holder for rgbData
+ private Vector rgbData;
- // This flag is indicates if this buffer is bound by some GraphicsContext
- private boolean bound;
+ // This flag is indicates if this buffer is bound by some GraphicsContext
+ private boolean bound;
// This flag indicates if this buffer is empty or not
- private boolean containsData;
-
- // This flag indicates if this buffer has any draw commands in it
- private boolean containsPrimitiveData;
+ private boolean containsData;
+
+ // This flag indicates if this buffer has any draw commands in it
+ private boolean containsPrimitiveData;
// Memory management configuration constants
- private static final int INT_BUF_GRANULARITY = 10;
- private static final int INT_BUF_INITIAL_SIZE = 250;
- private static final int IMAGE_BUF_INITIAL_SIZE = 3;
- private static final int IMAGE_BUF_GRANULARITY = 2;
- private static final int STRING_BUFFER_INITIAL_SIZE = 10;
+ private static final int INT_BUF_GRANULARITY = 10;
+ private static final int INT_BUF_INITIAL_SIZE = 250;
+ private static final int IMAGE_BUF_INITIAL_SIZE = 3;
+ private static final int IMAGE_BUF_GRANULARITY = 2;
+ private static final int STRING_BUFFER_INITIAL_SIZE = 10;
- // Prefixes for different categories of op codes, stored in MSB
- final static int DRAW_PREFIX = 0;
- final static int FILL_PREFIX = 1;
- final static int SET_PREFIX = 2;
- final static int MISC_PREFIX = 3;
+ // Prefixes for different categories of op codes, stored in MSB
+ final static int DRAW_PREFIX = 0;
+ final static int FILL_PREFIX = 1;
+ final static int SET_PREFIX = 2;
+ final static int MISC_PREFIX = 3;
- // Unique operation codes for all the gc operations that can be buffered.
- static final int OP_DRAWARC = ((DRAW_PREFIX << 24) | 1);
- static final int OP_DRAWFOCUS = ((DRAW_PREFIX << 24) | 2);
- static final int OP_DRAWIMAGE1 = ((DRAW_PREFIX << 24) | 3);
- static final int OP_DRAWIMAGE2 = ((DRAW_PREFIX << 24) | 4);
- static final int OP_DRAWLINE = ((DRAW_PREFIX << 24) | 5);
- static final int OP_DRAWELLIPSE = ((DRAW_PREFIX << 24) | 6);
- static final int OP_DRAWPOINT = ((DRAW_PREFIX << 24) | 7);
- static final int OP_DRAWPOLYGON = ((DRAW_PREFIX << 24) | 8);
- static final int OP_DRAWPOLYLINE = ((DRAW_PREFIX << 24) | 9);
- static final int OP_DRAWRECT = ((DRAW_PREFIX << 24) | 10);
- static final int OP_DRAWRGB_INT = ((DRAW_PREFIX << 24) | 11);
- static final int OP_DRAWRGB_BYTE = ((DRAW_PREFIX << 24) | 12);
- static final int OP_DRAWRGB_SHORT = ((DRAW_PREFIX << 24) | 13);
- static final int OP_DRAWROUNDRECT = ((DRAW_PREFIX << 24) | 14);
- static final int OP_DRAWSTRING = ((DRAW_PREFIX << 24) | 15);
- static final int OP_FILLARC = ((FILL_PREFIX << 24) | 16);
- static final int OP_FILLGRADIENTRECT = ((FILL_PREFIX << 24) | 17);
- static final int OP_FILLELLIPSE = ((FILL_PREFIX << 24) | 18);
- static final int OP_FILLPOLYGON = ((FILL_PREFIX << 24) | 19);
- static final int OP_FILLRECT = ((FILL_PREFIX << 24) | 20);
- static final int OP_FILLROUNDRECT = ((FILL_PREFIX << 24) | 21);
- static final int OP_SETBACKGROUNDALPHA = ((SET_PREFIX << 24) | 22);
- static final int OP_SETBACKGROUNDCOLOR = ((SET_PREFIX << 24) | 23);
- static final int OP_SETBLENDINGMODE = ((SET_PREFIX << 24) | 24);
- static final int OP_SETCLIP = ((SET_PREFIX << 24) | 25);
- static final int OP_CANCELCLIPPING = ((SET_PREFIX << 24) | 26);
- static final int OP_SETFONT = ((SET_PREFIX << 24) | 27);
- static final int OP_SETFOREGROUNDALPHA = ((SET_PREFIX << 24) | 28);
- static final int OP_SETFOREGROUNDCOLOR = ((SET_PREFIX << 24) | 29);
- static final int OP_SETSTROKESTYLE = ((SET_PREFIX << 24) | 30);
- static final int OP_SETSTROKEWIDTH = ((SET_PREFIX << 24) | 31);
- static final int OP_TRANSLATE = ((MISC_PREFIX << 24) | 32);
- static final int OP_SCALE = ((MISC_PREFIX << 24) | 33);
- static final int OP_RESETTRANSFORM = ((MISC_PREFIX << 24) | 34);
- static final int OP_COPYAREA1 = ((MISC_PREFIX << 24) | 35);
- static final int OP_COPYAREA2 = ((MISC_PREFIX << 24) | 36);
+ // Unique operation codes for all the gc operations that can be buffered.
+ static final int OP_DRAWARC = ((DRAW_PREFIX << 24) | 1);
+ static final int OP_DRAWFOCUS = ((DRAW_PREFIX << 24) | 2);
+ static final int OP_DRAWIMAGE1 = ((DRAW_PREFIX << 24) | 3);
+ static final int OP_DRAWIMAGE2 = ((DRAW_PREFIX << 24) | 4);
+ static final int OP_DRAWLINE = ((DRAW_PREFIX << 24) | 5);
+ static final int OP_DRAWELLIPSE = ((DRAW_PREFIX << 24) | 6);
+ static final int OP_DRAWPOINT = ((DRAW_PREFIX << 24) | 7);
+ static final int OP_DRAWPOLYGON = ((DRAW_PREFIX << 24) | 8);
+ static final int OP_DRAWPOLYLINE = ((DRAW_PREFIX << 24) | 9);
+ static final int OP_DRAWRECT = ((DRAW_PREFIX << 24) | 10);
+ static final int OP_DRAWRGB_INT = ((DRAW_PREFIX << 24) | 11);
+ static final int OP_DRAWRGB_BYTE = ((DRAW_PREFIX << 24) | 12);
+ static final int OP_DRAWRGB_SHORT = ((DRAW_PREFIX << 24) | 13);
+ static final int OP_DRAWROUNDRECT = ((DRAW_PREFIX << 24) | 14);
+ static final int OP_DRAWSTRING = ((DRAW_PREFIX << 24) | 15);
+ static final int OP_FILLARC = ((FILL_PREFIX << 24) | 16);
+ static final int OP_FILLGRADIENTRECT = ((FILL_PREFIX << 24) | 17);
+ static final int OP_FILLELLIPSE = ((FILL_PREFIX << 24) | 18);
+ static final int OP_FILLPOLYGON = ((FILL_PREFIX << 24) | 19);
+ static final int OP_FILLRECT = ((FILL_PREFIX << 24) | 20);
+ static final int OP_FILLROUNDRECT = ((FILL_PREFIX << 24) | 21);
+ static final int OP_SETBACKGROUNDALPHA = ((SET_PREFIX << 24) | 22);
+ static final int OP_SETBACKGROUNDCOLOR = ((SET_PREFIX << 24) | 23);
+ static final int OP_SETBLENDINGMODE = ((SET_PREFIX << 24) | 24);
+ static final int OP_SETCLIP = ((SET_PREFIX << 24) | 25);
+ static final int OP_CANCELCLIPPING = ((SET_PREFIX << 24) | 26);
+ static final int OP_SETFONT = ((SET_PREFIX << 24) | 27);
+ static final int OP_SETFOREGROUNDALPHA = ((SET_PREFIX << 24) | 28);
+ static final int OP_SETFOREGROUNDCOLOR = ((SET_PREFIX << 24) | 29);
+ static final int OP_SETSTROKESTYLE = ((SET_PREFIX << 24) | 30);
+ static final int OP_SETSTROKEWIDTH = ((SET_PREFIX << 24) | 31);
+ static final int OP_TRANSLATE = ((MISC_PREFIX << 24) | 32);
+ static final int OP_SCALE = ((MISC_PREFIX << 24) | 33);
+ static final int OP_RESETTRANSFORM = ((MISC_PREFIX << 24) | 34);
+ static final int OP_COPYAREA1 = ((MISC_PREFIX << 24) | 35);
+ static final int OP_COPYAREA2 = ((MISC_PREFIX << 24) | 36);
- /**
- * Constructs empty command buffer with defined buffer sizes.
- */
- public JavaCommandBuffer() {
- intParams = new int[INT_BUF_INITIAL_SIZE];
- strParams = new StringBuffer(STRING_BUFFER_INITIAL_SIZE);
- images = new Vector(IMAGE_BUF_INITIAL_SIZE, IMAGE_BUF_GRANULARITY);
- rgbData = new Vector(IMAGE_BUF_INITIAL_SIZE, IMAGE_BUF_GRANULARITY);
- }
+ /**
+ * Constructs empty command buffer with defined buffer sizes.
+ */
+ public JavaCommandBuffer() {
+ intParams = new int[INT_BUF_INITIAL_SIZE];
+ strParams = new StringBuffer(STRING_BUFFER_INITIAL_SIZE);
+ images = new Vector(IMAGE_BUF_INITIAL_SIZE, IMAGE_BUF_GRANULARITY);
+ rgbData = new Vector(IMAGE_BUF_INITIAL_SIZE, IMAGE_BUF_GRANULARITY);
+ }
- /**
- * Resets the buffer, i.e. removes all recorded commands and related data. The integer array containing
- * the actual operation codes is not deleted, only the index pointer is rested, thus the memory consumption of that is not freed.
- * CommandBuffer can be reseted only if it is not bound by any GraphicsContext
- * @throws IllegalStateException if this CommandBuffer is bound while calling reset
- */
- public void reset() {
- if(bound) {
- throw new IllegalStateException("CommandBuffer is still bound by gc");
- }
- intCount = 0;
- strParams.setLength(0);
+ /**
+ * Resets the buffer, i.e. removes all recorded commands and related data. The integer array containing
+ * the actual operation codes is not deleted, only the index pointer is rested, thus the memory consumption of that is not freed.
+ * CommandBuffer can be reseted only if it is not bound by any GraphicsContext
+ * @throws IllegalStateException if this CommandBuffer is bound while calling reset
+ */
+ public void reset() {
+ if(bound) {
+ throw new IllegalStateException("CommandBuffer is still bound by gc");
+ }
+ intCount = 0;
+ strParams.setLength(0);
- Enumeration allImages = images.elements();
- while(allImages.hasMoreElements()) {
- Image image = (Image)allImages.nextElement();
- if(!image.isDisposed()) {
- image.dispose();
- }
- }
- images.removeAllElements();
- rgbData.removeAllElements();
- containsData = false;
- containsPrimitiveData = false;
- }
+ Enumeration allImages = images.elements();
+ while(allImages.hasMoreElements()) {
+ Image image = (Image)allImages.nextElement();
+ if(image != null) {
+ image.freeCommandBufferCopy();
+ }
+ }
+ images.removeAllElements();
+ rgbData.removeAllElements();
+ containsData = false;
+ containsPrimitiveData = false;
+ }
- /**
- * Checks that does this buffer contain any commands
- * @return true if any command has been written to buffer otherwise false
- */
- public boolean containsData() {
- return containsData;
- }
-
- /**
- * Checks that does this buffer contain any draw commands, i.e. any setters etc.
- * that does to cause any pixels to be rendered are ignored
- * @return true if any draw command has been written to buffer otherwise false
- */
- public boolean containsDrawnPrimitives() {
- return containsPrimitiveData;
- }
-
- /**
- * Binds this buffer
- */
- void bind() {
- bound = true;
- }
+ /**
+ * Checks that does this buffer contain any commands
+ * @return true if any command has been written to buffer otherwise false
+ */
+ public boolean containsData() {
+ return containsData;
+ }
+
+ /**
+ * Checks that does this buffer contain any draw commands, i.e. any setters etc.
+ * that does to cause any pixels to be rendered are ignored
+ * @return true if any draw command has been written to buffer otherwise false
+ */
+ public boolean containsDrawnPrimitives() {
+ return containsPrimitiveData;
+ }
+
+ /**
+ * Binds this buffer
+ */
+ void bind() {
+ bound = true;
+ }
- /**
- * Provides the binding status of this buffer
- * @return true if this buffer has been already bound otherwise false
- */
- boolean isBound() {
- return bound;
- }
+ /**
+ * Provides the binding status of this buffer
+ * @return true if this buffer has been already bound otherwise false
+ */
+ boolean isBound() {
+ return bound;
+ }
- /**
- * Releases this buffer, i.e. it can be bound by some other GraphicsContext
- */
- void release() {
- bound = false;
- }
+ /**
+ * Releases this buffer, i.e. it can be bound by some other GraphicsContext
+ */
+ void release() {
+ bound = false;
+ }
- /**
- * Writes an integer to given array.
- * @param item The item to be added to the array
- * @param array The array where to append given item
- * @param elementsUsed The size of slots used in given array
- * @param granularity The granularity used if the array needs to be enlarged
- * @return Array containing the added item
- */
- private int[] writeToArray(int item, int[] array, int elementsUsed, int granularity) {
- if( array.length < elementsUsed + 1) {
- int[] src = array;
- int[] dst = new int[array.length + granularity];
- System.arraycopy(src, 0, dst, 0, src.length);
- array = dst;
- }
- array[elementsUsed] = item;
- return array;
- }
+ /**
+ * Writes an integer to given array.
+ * @param item The item to be added to the array
+ * @param array The array where to append given item
+ * @param elementsUsed The size of slots used in given array
+ * @param granularity The granularity used if the array needs to be enlarged
+ * @return Array containing the added item
+ */
+ private int[] writeToArray(int item, int[] array, int elementsUsed, int granularity) {
+ if( array.length < elementsUsed + 1) {
+ int[] src = array;
+ int[] dst = new int[array.length + granularity];
+ System.arraycopy(src, 0, dst, 0, src.length);
+ array = dst;
+ }
+ array[elementsUsed] = item;
+ return array;
+ }
- private void writeInt(int param) {
- intParams = writeToArray(param, intParams, intCount++, INT_BUF_GRANULARITY);
- containsData = true;
- }
+ private void writeInt(int param) {
+ intParams = writeToArray(param, intParams, intCount++, INT_BUF_GRANULARITY);
+ containsData = true;
+ }
- private void writeImage(Image image) {
- images.addElement(image);
- }
+ private void writeImage(Image image) {
+ images.addElement(image);
+ }
- private void writeStr(String string) {
- strParams.append(string);
- }
+ private void writeStr(String string) {
+ strParams.append(string);
+ }
- private void writeRgb(int[] rgb) {
- rgbData.addElement(rgb);
- }
- private void writeRgb(byte[] rgb) {
- rgbData.addElement(rgb);
- }
+ private void writeRgb(int[] rgb) {
+ rgbData.addElement(rgb);
+ }
+ private void writeRgb(byte[] rgb) {
+ rgbData.addElement(rgb);
+ }
- private void writeRgb(short[] rgb) {
- rgbData.addElement(rgb);
- }
+ private void writeRgb(short[] rgb) {
+ rgbData.addElement(rgb);
+ }
- private void reportNotSupported() {
- throw new RuntimeException("Intenal: Operation not supported with JavaCommandBuffer");
- }
+ private void reportNotSupported() {
+ throw new RuntimeException("Intenal: Operation not supported with JavaCommandBuffer");
+ }
- private void printBufferInfo() {
- System.out.println("CommandBuffer Info: " +this);
- System.out.println("intParamCount: " + intCount);
- System.out.println("intBuffer Size: " + intParams.length);
- System.out.println("StringBuffer Size: " + strParams.length());
- }
+ private void printBufferInfo() {
+ System.out.println("CommandBuffer Info: " +this);
+ System.out.println("intParamCount: " + intCount);
+ System.out.println("intBuffer Size: " + intParams.length);
+ System.out.println("StringBuffer Size: " + strParams.length());
+ }
- private void raisePrimitiveFlag() {
- containsPrimitiveData = true;
- }
-
- int[] intParams() {
- return intParams;
- }
+ private void raisePrimitiveFlag() {
+ containsPrimitiveData = true;
+ }
+
+ int[] intParams() {
+ return intParams;
+ }
- int intParamCount() {
+ int intParamCount() {
return intCount;
- }
+ }
- Vector rgbParams() {
- return rgbData;
- }
+ Vector rgbParams() {
+ return rgbData;
+ }
- Vector images() {
- return images;
- }
+ Vector images() {
+ return images;
+ }
- String strParams() {
- return strParams.toString();
- }
+ String strParams() {
+ return strParams.toString();
+ }
- void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
- writeInt(OP_DRAWARC);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(startAngle);
- writeInt(arcAngle);
- raisePrimitiveFlag();
- }
+ void drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
+ writeInt(OP_DRAWARC);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(startAngle);
+ writeInt(arcAngle);
+ raisePrimitiveFlag();
+ }
- void drawFocus (int x, int y, int width, int height) {
- writeInt(OP_DRAWFOCUS);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- raisePrimitiveFlag();
- }
+ void drawFocus (int x, int y, int width, int height) {
+ writeInt(OP_DRAWFOCUS);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ raisePrimitiveFlag();
+ }
- // must be called from UI thread as images cannot be creates outside that
- void drawImage(Image image, int x, int y) {
- writeInt(OP_DRAWIMAGE1);
- writeInt(x);
- writeInt(y);
- // creating copy of image here uses implicit data sharing,
- // thus only a shallow copy is made
- writeImage(new Image(image));
- raisePrimitiveFlag();
- }
+ // must be called from UI thread as images cannot be creates outside that
+ void drawImage(Image image, int x, int y) {
+ writeInt(OP_DRAWIMAGE1);
+ writeInt(x);
+ writeInt(y);
+ // creating copy of image here uses implicit data sharing,
+ // thus only a shallow copy is made
+ writeImage(image.getCommandBufferCopy());
+ raisePrimitiveFlag();
+ }
- // must be called from UI thread as images cannot be creates outside that
- void drawImage(Image image, int tx, int ty, int tw, int th,int sx, int sy, int sw, int sh, int manipulation) {
- writeInt(OP_DRAWIMAGE2);
- writeInt(tx);
- writeInt(ty);
- writeInt(tw);
- writeInt(th);
- writeInt(sx);
- writeInt(sy);
- writeInt(sw);
- writeInt(sh);
- writeInt(manipulation);
- // creating copy of image here uses implicit data sharing,
- // thus only a shallow copy is made
- writeImage(new Image(image));
- raisePrimitiveFlag();
- }
+ // must be called from UI thread as images cannot be creates outside that
+ void drawImage(Image image, int tx, int ty, int tw, int th,int sx, int sy, int sw, int sh, int manipulation) {
+ writeInt(OP_DRAWIMAGE2);
+ writeInt(tx);
+ writeInt(ty);
+ writeInt(tw);
+ writeInt(th);
+ writeInt(sx);
+ writeInt(sy);
+ writeInt(sw);
+ writeInt(sh);
+ writeInt(manipulation);
+ // creating copy of image here uses implicit data sharing,
+ // thus only a shallow copy is made
+ writeImage(image.getCommandBufferCopy());
+ raisePrimitiveFlag();
+ }
- void drawLine (int x1, int y1, int x2, int y2) {
- writeInt(OP_DRAWLINE);
- writeInt(x1);
- writeInt(y1);
- writeInt(x2);
- writeInt(y2);
- raisePrimitiveFlag();
- }
+ void drawLine (int x1, int y1, int x2, int y2) {
+ writeInt(OP_DRAWLINE);
+ writeInt(x1);
+ writeInt(y1);
+ writeInt(x2);
+ writeInt(y2);
+ raisePrimitiveFlag();
+ }
- void drawEllipse (int x, int y, int width, int height) {
- writeInt(OP_DRAWELLIPSE);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- raisePrimitiveFlag();
- }
+ void drawEllipse (int x, int y, int width, int height) {
+ writeInt(OP_DRAWELLIPSE);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ raisePrimitiveFlag();
+ }
- void drawPoint (int x, int y) {
- writeInt(OP_DRAWPOINT);
- writeInt(x);
- writeInt(y);
- raisePrimitiveFlag();
- }
+ void drawPoint (int x, int y) {
+ writeInt(OP_DRAWPOINT);
+ writeInt(x);
+ writeInt(y);
+ raisePrimitiveFlag();
+ }
- void drawPolygon(int[] pointArray) {
- writeInt(OP_DRAWPOLYGON);
- writeInt(pointArray.length);
- for(int i = 0; i < pointArray.length; ++i) {
- writeInt(pointArray[i]);
- }
- raisePrimitiveFlag();
- }
+ void drawPolygon(int[] pointArray) {
+ writeInt(OP_DRAWPOLYGON);
+ writeInt(pointArray.length);
+ for(int i = 0; i < pointArray.length; ++i) {
+ writeInt(pointArray[i]);
+ }
+ raisePrimitiveFlag();
+ }
- void drawPolyline(int[] pointArray) {
- writeInt(OP_DRAWPOLYLINE);
- writeInt(pointArray.length);
- for(int i = 0; i < pointArray.length; ++i) {
- writeInt(pointArray[i]);
- }
- raisePrimitiveFlag();
- }
+ void drawPolyline(int[] pointArray) {
+ writeInt(OP_DRAWPOLYLINE);
+ writeInt(pointArray.length);
+ for(int i = 0; i < pointArray.length; ++i) {
+ writeInt(pointArray[i]);
+ }
+ raisePrimitiveFlag();
+ }
- void drawRect (int x, int y, int width, int height) {
- writeInt(OP_DRAWRECT);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- raisePrimitiveFlag();
- }
+ void drawRect (int x, int y, int width, int height) {
+ writeInt(OP_DRAWRECT);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ raisePrimitiveFlag();
+ }
- void drawRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean processAlpha, int manipulation) {
- writeInt(OP_DRAWRGB_INT);
- writeInt(offset);
- writeInt(scanlength);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(processAlpha? 1 : 0);
- writeInt(manipulation);
- writeRgb(rgbData);
- raisePrimitiveFlag();
- }
+ void drawRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean processAlpha, int manipulation) {
+ writeInt(OP_DRAWRGB_INT);
+ writeInt(offset);
+ writeInt(scanlength);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(processAlpha? 1 : 0);
+ writeInt(manipulation);
+ writeRgb(rgbData);
+ raisePrimitiveFlag();
+ }
- void drawRGB(byte[] rgbData, byte[] transparencyMask,int offset, int scanlength, int x, int y, int width, int height, int manipulation, int format) {
- writeInt(OP_DRAWRGB_BYTE);
- writeInt(offset);
- writeInt(scanlength);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(manipulation);
- writeInt(format);
- writeRgb(rgbData);
- writeRgb(transparencyMask);
- raisePrimitiveFlag();
- }
+ void drawRGB(byte[] rgbData, byte[] transparencyMask,int offset, int scanlength, int x, int y, int width, int height, int manipulation, int format) {
+ writeInt(OP_DRAWRGB_BYTE);
+ writeInt(offset);
+ writeInt(scanlength);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(manipulation);
+ writeInt(format);
+ writeRgb(rgbData);
+ writeRgb(transparencyMask);
+ raisePrimitiveFlag();
+ }
- void drawRGB(short[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean processAlpha, int manipulation, int format) {
- writeInt(OP_DRAWRGB_SHORT);
- writeInt(offset);
- writeInt(scanlength);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(processAlpha? 1 : 0);
- writeInt(manipulation);
- writeInt(format);
- writeRgb(rgbData);
- raisePrimitiveFlag();
- }
+ void drawRGB(short[] rgbData, int offset, int scanlength, int x, int y, int width, int height, boolean processAlpha, int manipulation, int format) {
+ writeInt(OP_DRAWRGB_SHORT);
+ writeInt(offset);
+ writeInt(scanlength);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(processAlpha? 1 : 0);
+ writeInt(manipulation);
+ writeInt(format);
+ writeRgb(rgbData);
+ raisePrimitiveFlag();
+ }
- void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) {
- writeInt(OP_DRAWROUNDRECT);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(arcWidth);
- writeInt(arcHeight);
- raisePrimitiveFlag();
- }
+ void drawRoundRect (int x, int y, int width, int height, int arcWidth, int arcHeight) {
+ writeInt(OP_DRAWROUNDRECT);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(arcWidth);
+ writeInt(arcHeight);
+ raisePrimitiveFlag();
+ }
- void drawString(String string, int x, int y, int width, int height, int alignments, int flags, boolean isTransparent) {
- writeInt(OP_DRAWSTRING);
- writeStr(string);
- writeInt(string.length());
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(alignments);
- writeInt(flags);
- writeInt(isTransparent? 1 : 0);
- raisePrimitiveFlag();
- }
+ void drawString(String string, int x, int y, int width, int height, int alignments, int flags, boolean isTransparent) {
+ writeInt(OP_DRAWSTRING);
+ writeStr(string);
+ writeInt(string.length());
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(alignments);
+ writeInt(flags);
+ writeInt(isTransparent? 1 : 0);
+ raisePrimitiveFlag();
+ }
- void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
- writeInt(OP_FILLARC);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(startAngle);
- writeInt(arcAngle);
- raisePrimitiveFlag();
- }
+ void fillArc (int x, int y, int width, int height, int startAngle, int arcAngle) {
+ writeInt(OP_FILLARC);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(startAngle);
+ writeInt(arcAngle);
+ raisePrimitiveFlag();
+ }
- void fillGradientRect(int x, int y, int width, int height, boolean vertical, boolean swapColors) {
- writeInt(OP_FILLGRADIENTRECT);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(vertical ? 1 : 0);
- writeInt(swapColors ? 1 : 0);
- raisePrimitiveFlag();
- }
+ void fillGradientRect(int x, int y, int width, int height, boolean vertical, boolean swapColors) {
+ writeInt(OP_FILLGRADIENTRECT);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(vertical ? 1 : 0);
+ writeInt(swapColors ? 1 : 0);
+ raisePrimitiveFlag();
+ }
- void fillEllipse (int x, int y, int width, int height) {
- writeInt(OP_FILLELLIPSE);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- raisePrimitiveFlag();
- }
+ void fillEllipse (int x, int y, int width, int height) {
+ writeInt(OP_FILLELLIPSE);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ raisePrimitiveFlag();
+ }
- void fillPolygon (int[] pointArray) {
- writeInt(OP_FILLPOLYGON);
- writeInt(pointArray.length);
- for(int i = 0; i < pointArray.length; ++i) {
- writeInt(pointArray[i]);
- }
- raisePrimitiveFlag();
- }
+ void fillPolygon (int[] pointArray) {
+ writeInt(OP_FILLPOLYGON);
+ writeInt(pointArray.length);
+ for(int i = 0; i < pointArray.length; ++i) {
+ writeInt(pointArray[i]);
+ }
+ raisePrimitiveFlag();
+ }
- void fillRect (int x, int y, int width, int height) {
- writeInt(OP_FILLRECT);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- raisePrimitiveFlag();
- }
+ void fillRect (int x, int y, int width, int height) {
+ writeInt(OP_FILLRECT);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ raisePrimitiveFlag();
+ }
- void fillRoundRectangle (int x, int y, int width, int height, int arcWidth, int arcHeight) {
- writeInt(OP_FILLROUNDRECT);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(arcWidth);
- writeInt(arcHeight);
- raisePrimitiveFlag();
- }
+ void fillRoundRectangle (int x, int y, int width, int height, int arcWidth, int arcHeight) {
+ writeInt(OP_FILLROUNDRECT);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(arcWidth);
+ writeInt(arcHeight);
+ raisePrimitiveFlag();
+ }
- public void setBackgroundAlpha(int alpha) {
- writeInt(OP_SETBACKGROUNDALPHA);
- writeInt(alpha);
- }
+ public void setBackgroundAlpha(int alpha) {
+ writeInt(OP_SETBACKGROUNDALPHA);
+ writeInt(alpha);
+ }
- void setBackgroundColor(int argb, boolean updateAlpha) {
- writeInt(OP_SETBACKGROUNDCOLOR);
- writeInt(argb);
- writeInt(updateAlpha? 1 : 0);
- }
+ void setBackgroundColor(int argb, boolean updateAlpha) {
+ writeInt(OP_SETBACKGROUNDCOLOR);
+ writeInt(argb);
+ writeInt(updateAlpha? 1 : 0);
+ }
- void setBlendingMode(int mode) {
- writeInt(OP_SETBLENDINGMODE);
- writeInt(mode);
- }
+ void setBlendingMode(int mode) {
+ writeInt(OP_SETBLENDINGMODE);
+ writeInt(mode);
+ }
- void setClip(int x, int y, int width, int height, boolean intersects) {
- writeInt(OP_SETCLIP);
- writeInt(x);
- writeInt(y);
- writeInt(width);
- writeInt(height);
- writeInt(intersects? 1 : 0 );
- }
+ void setClip(int x, int y, int width, int height, boolean intersects) {
+ writeInt(OP_SETCLIP);
+ writeInt(x);
+ writeInt(y);
+ writeInt(width);
+ writeInt(height);
+ writeInt(intersects? 1 : 0 );
+ }
- void cancelClipping () {
- writeInt(OP_CANCELCLIPPING);
- }
+ void cancelClipping () {
+ writeInt(OP_CANCELCLIPPING);
+ }
- void setFont(int fontHandle) {
- writeInt(OP_SETFONT);
- writeInt(fontHandle);
- }
+ void setFont(int fontHandle) {
+ writeInt(OP_SETFONT);
+ writeInt(fontHandle);
+ }
- void setForegroundAlpha(int alpha) {
- writeInt(OP_SETFOREGROUNDALPHA);
- writeInt(alpha);
- }
+ void setForegroundAlpha(int alpha) {
+ writeInt(OP_SETFOREGROUNDALPHA);
+ writeInt(alpha);
+ }
- void setForegroundColor(int argb, boolean updateAlpha) {
- writeInt(OP_SETFOREGROUNDCOLOR);
- writeInt(argb);
- writeInt(updateAlpha? 1 : 0);
- }
+ void setForegroundColor(int argb, boolean updateAlpha) {
+ writeInt(OP_SETFOREGROUNDCOLOR);
+ writeInt(argb);
+ writeInt(updateAlpha? 1 : 0);
+ }
- void setStrokeStyle(int style) {
- writeInt(OP_SETSTROKESTYLE);
- writeInt(style);
- }
+ void setStrokeStyle(int style) {
+ writeInt(OP_SETSTROKESTYLE);
+ writeInt(style);
+ }
- void setStrokeWidth(int width) {
- writeInt(OP_SETSTROKEWIDTH);
- writeInt(width);
- }
+ void setStrokeWidth(int width) {
+ writeInt(OP_SETSTROKEWIDTH);
+ writeInt(width);
+ }
- void translate(int x, int y) {
- writeInt(OP_TRANSLATE);
- writeInt(x);
- writeInt(y);
- }
+ void translate(int x, int y) {
+ writeInt(OP_TRANSLATE);
+ writeInt(x);
+ writeInt(y);
+ }
- void scale(int x, int y) {
- writeInt(OP_SCALE);
- writeInt(x);
- writeInt(y);
- }
+ void scale(int x, int y) {
+ writeInt(OP_SCALE);
+ writeInt(x);
+ writeInt(y);
+ }
- void resetTransform() {
- writeInt(OP_RESETTRANSFORM);
- }
+ void resetTransform() {
+ writeInt(OP_RESETTRANSFORM);
+ }
- void copyArea(Image image, int x, int y) {
- writeInt(OP_COPYAREA1);
+ void copyArea(Image image, int x, int y) {
+ writeInt(OP_COPYAREA1);
writeInt(x);
writeInt(y);
// TODO does this need flushing on the image
@@ -560,7 +560,7 @@
raisePrimitiveFlag();
}
- void copyArea(int srcX, int srcY, int width, int height, int destX, int destY, boolean paint) {
+ void copyArea(int srcX, int srcY, int width, int height, int destX, int destY, boolean paint) {
writeInt(OP_COPYAREA2);
writeInt(srcX);
writeInt(srcY);
@@ -572,81 +572,81 @@
raisePrimitiveFlag();
}
- // Unsupported operations
- int getAdvancedCharacterWidth(char ch, boolean isAdvanced) {
- reportNotSupported();
- return 0;
- }
+ // Unsupported operations
+ int getAdvancedCharacterWidth(char ch, boolean isAdvanced) {
+ reportNotSupported();
+ return 0;
+ }
- void getFontMetricsData(int[] data, int fontHandle) {
- reportNotSupported();
- }
+ void getFontMetricsData(int[] data, int fontHandle) {
+ reportNotSupported();
+ }
- int getBackgroundAlpha() {
- reportNotSupported();
- return 0;
- }
+ int getBackgroundAlpha() {
+ reportNotSupported();
+ return 0;
+ }
- int getBackgroundColor() {
- reportNotSupported();
- return 0;
- }
+ int getBackgroundColor() {
+ reportNotSupported();
+ return 0;
+ }
- int getBlendingMode() {
- reportNotSupported();
- return 0;
- }
+ int getBlendingMode() {
+ reportNotSupported();
+ return 0;
+ }
- void getClip(int[] clip) {
- reportNotSupported();
- }
+ void getClip(int[] clip) {
+ reportNotSupported();
+ }
- int getForegroundAlpha() {
- reportNotSupported();
- return 0;
- }
+ int getForegroundAlpha() {
+ reportNotSupported();
+ return 0;
+ }
- int getForegroundColor() {
- reportNotSupported();
- return 0;
- }
+ int getForegroundColor() {
+ reportNotSupported();
+ return 0;
+ }
- void getTextBoundingBox(int[] boundingBox, String string, int alignments, int flags, int rectX, int rectY, int rectWidth, int rectHeight) {
- reportNotSupported();
- }
+ void getTextBoundingBox(int[] boundingBox, String string, int alignments, int flags, int rectX, int rectY, int rectWidth, int rectHeight) {
+ reportNotSupported();
+ }
- int getStrokeWidth() {
- reportNotSupported();
- return 0;
- }
+ int getStrokeWidth() {
+ reportNotSupported();
+ return 0;
+ }
- int getStrokeStyle() {
- reportNotSupported();
- return 0;
- }
+ int getStrokeStyle() {
+ reportNotSupported();
+ return 0;
+ }
- int getTranslateX() {
- reportNotSupported();
- return 0;
- }
+ int getTranslateX() {
+ reportNotSupported();
+ return 0;
+ }
- int getTranslateY() {
- reportNotSupported();
- return 0;
- }
+ int getTranslateY() {
+ reportNotSupported();
+ return 0;
+ }
- boolean hasClipping() {
- reportNotSupported();
- return false;
- }
+ boolean hasClipping() {
+ reportNotSupported();
+ return false;
+ }
- void saveSettings() {
- reportNotSupported();
- }
+ void saveSettings() {
+ reportNotSupported();
+ }
- void restoreSettings() {
- reportNotSupported();
- }
+ void restoreSettings() {
+ reportNotSupported();
+ }
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Wed Jun 23 18:07:10 2010 +0300
@@ -168,7 +168,7 @@
w.qt_signal_abstractitemview_activated_pp(row, column);
}
public static void qt_swt_event_widgetResized(Widget w, int widgetHandle, int oldWidth, int oldHeight, int width, int height) {
- w.qt_swt_event_widgetResized_pp(widgetHandle, oldWidth, oldHeight, width, height);
+ w.qt_swt_event_widgetResized_pp(widgetHandle, oldWidth, oldHeight, width, height, true);
}
public static void register(Widget w) {
w.register_pp();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/s60/org/eclipse/swt/internal/ApplicationUidWrapper.java Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nokia Corporation - initial implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal;
+
+import com.nokia.mj.impl.rt.support.ApplicationInfo;
+
+
+public final class ApplicationUidWrapper {
+
+ public static int uid() {
+ int midletUid = -1;
+ try{
+ String uidS = ApplicationInfo.getInstance().getUid().getStringValue();
+ // In Symbian the UID is in format '[<uid>]' where <uid> is in hex
+ // format. So wee need to take the brackets away.
+ // Long is needed in conversion because UIDs greater than 0x80000000
+ // would fail if Integer would be used. However typecast from long
+ // to int is safe since UID in Symbian is 32 bit.
+ long uidL = Long.parseLong(uidS.substring(1,uidS.length()-1), 16);
+ return (int)uidL;
+ }
+ catch (Throwable t) {/* Not handled*/ }
+ return midletUid;
+ }
+}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/s60/org/eclipse/swt/internal/qt/s60/S60CommandPresentationStrategy.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-package org.eclipse.swt.internal.qt.s60;
-
-import org.eclipse.ercp.swt.mobile.Command;
-import org.eclipse.swt.internal.qt.CommandPresentationStrategy;
-import org.eclipse.swt.internal.qt.CommandUtils;
-import org.eclipse.swt.internal.qt.OS;
-import org.eclipse.swt.internal.qt.CommandArranger.CommandCollection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Internal_PackageSupport;
-import org.eclipse.swt.widgets.Widget;
-
-public class S60CommandPresentationStrategy extends CommandPresentationStrategy {
- private Command[] positiveKeyCommands;
- private Command negativeKeyCommand;
- private Command defaultCommand;
-
- public S60CommandPresentationStrategy() {
- super();
- }
-
- protected void dispose() {
- positiveKeyCommands = null;
- negativeKeyCommand = null;
- defaultCommand =null;
- }
-
-
- protected void handleCommandListChange(Command added, Command removed,
- CommandCollection commands) {
- cleanNegativeCommand();
- cleanPositiveCommands();
- updateCommandPositions(commands.getCommands(null));
- placeNegativeCommand();
- placePositiveCommands();
- }
-
- protected void handleDefaultCommandChange(Command defaultCommand) {
- this.defaultCommand = defaultCommand;
- cleanPositiveCommands();
- placePositiveCommands();
- }
-
-
- protected void handleFocusChange(Control focused,
- CommandCollection oldCommands, CommandCollection commands) {
-
- //Clean-up the existing commands
- cleanPositiveCommands();
- cleanNegativeCommand();
- //determine where the commands go
- if( commands != null && commands.getSize()>0 ){
- Command[] add = commands.getCommands(null);
- updateCommandPositions(add);
- }
- //Place them to their places
- placePositiveCommands();
- placeNegativeCommand();
-
- }
-
- private void updateCommandPositions(Command[] commands) {
- positiveKeyCommands = new Command[commands.length];
- int positiveKeyIndex=0;
- for (int i = 0; i < commands.length; i++) {
- Command cmd = commands[i];
- if ( cmd.isDefaultCommand()){
- defaultCommand = cmd;
- continue;
- }
- if( CommandUtils.isNegativeType(cmd.type) ){
- if (negativeKeyCommand == null || negativeKeyCommand.isDisposed()){
- negativeKeyCommand = cmd;
- }else
- if( negativeKeyCommand.getPriority() <= cmd.getPriority() ){
- positiveKeyCommands[positiveKeyIndex] = negativeKeyCommand;
- positiveKeyIndex++;
- negativeKeyCommand = cmd;
- }else{
- positiveKeyCommands[positiveKeyIndex] = cmd;
- positiveKeyIndex++;
- }
- continue;
- }
- positiveKeyCommands[positiveKeyIndex]=cmd;
- positiveKeyIndex++;
- }
- if ((positiveKeyIndex) < positiveKeyCommands.length ){// needs to shrink
- Command[] rightSized = new Command[positiveKeyIndex];
- System.arraycopy(positiveKeyCommands, 0, rightSized, 0, rightSized.length);
- positiveKeyCommands = rightSized;
- }
- }
-
-
- private void cleanPositiveCommands() {
- boolean useBar = false;
- if ( (positiveKeyCommands != null && positiveKeyCommands.length >1) ||
- (defaultCommand != null && positiveKeyCommands != null) ){
- useBar = true;
- }
- if (defaultCommand != null && !defaultCommand.isDisposed()
- && !defaultCommand.control.isDisposed()) {
- if (useBar) {
- OS.QWidget_removeAction(defaultCommand.control.getShell()
- .internal_getOwnMenuBar(), topHandle(defaultCommand));
- }
- else{
- OS.QWidget_removeAction(topHandle(defaultCommand.control), topHandle(defaultCommand));
- }
- }
- if (positiveKeyCommands != null) {
- for (int i = 0; i < positiveKeyCommands.length; i++) {
- Command cmd = positiveKeyCommands[i];
- if (cmd == null || cmd.isDisposed() || cmd.control.isDisposed()){
- continue;
- }
- int handle = 0;
- if (useBar) {
- handle = cmd.control.getShell().internal_getOwnMenuBar();
- } else {
- handle = topHandle(positiveKeyCommands[0].control);
- }
- OS.QWidget_removeAction(handle, topHandle(cmd));
-
- }
- }
- }
-
- private void cleanNegativeCommand() {
- if(negativeKeyCommand != null && !negativeKeyCommand.isDisposed() && !negativeKeyCommand.control.isDisposed() ){
- OS.QWidget_removeAction(topHandle(negativeKeyCommand.control), topHandle(negativeKeyCommand));
- }
- }
-
- private void placeNegativeCommand() {
- if(negativeKeyCommand != null ){
- OS.QWidget_addAction(Internal_PackageSupport.topHandle(negativeKeyCommand.control),
- topHandle(negativeKeyCommand));
- }
- }
-
- private void placePositiveCommands() {
- if (defaultCommand != null ) {
- int defaultCmdHandle = topHandle(defaultCommand);
- if (positiveKeyCommands != null) {
- OS.QMenuBar_addAction(defaultCommand.control.getShell()
- .internal_getOwnMenuBar(), defaultCmdHandle);
- } else {
- OS.QWidget_addAction(Internal_PackageSupport
- .topHandle(defaultCommand.control), defaultCmdHandle);
- }
- }
- if (positiveKeyCommands != null) {
- if (positiveKeyCommands.length == 1 && defaultCommand == null) {
- OS.QWidget_addAction(Internal_PackageSupport
- .topHandle(positiveKeyCommands[0].control),
- topHandle(positiveKeyCommands[0]));
- } else {
- CommandUtils.sort(positiveKeyCommands);
- for (int i = 0; i < positiveKeyCommands.length; i++) {
- OS.QMenuBar_addAction(positiveKeyCommands[i].control
- .getShell().internal_getOwnMenuBar(),
- topHandle(positiveKeyCommands[i]));
- }
- }
- }
- }
-
- protected void handleMenuBarChanged(int newMenuBar,
- CommandCollection commands) {
- placePositiveCommands();
- }
-
-
- private static final int topHandle(Widget w) {
- return Internal_PackageSupport.topHandle(w);
- }
-}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/webkit/org/eclipse/swt/internal/qt/webkit/OS_webkit.java Fri Jun 11 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Nokia Corporation - initial implementation
- *******************************************************************************/
-package org.eclipse.swt.internal.qt.webkit;
-
-import org.eclipse.swt.internal.Library;
-
-/**
- * Native methods requiring QtWebkit. They are separated to avoid
- * loading the related libraries until they are needed.
- */
-public final class OS_webkit {
- static {
- Library.loadLibrary("eswtqtwebkit");
- }
-
- //
- // QWebView
- //
- public static final native int QWebView_new();
- public static final native void QWebView_back(int handle);
- public static final native void QWebView_forward(int handle);
- public static final native void QWebView_reload(int handle);
- public static final native void QWebView_setHtml(int handle, String html);
- public static final native void QWebView_setUrl(int handle, String url);
- public static final native void QWebView_stop(int handle);
- public static final native String QWebView_swt_backUrl(int handle);
- public static final native boolean QWebView_swt_canGoBack(int handle);
- public static final native boolean QWebView_swt_canGoForward(int handle);
- public static final native boolean QWebView_swt_evaluateJavaScript(int handle, String script);
- public static final native String QWebView_swt_forwardUrl(int handle);
- public static final native String QWebView_url(int handle);
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/webkit/org/eclipse/swt/internal/qt/webkit/WebkitOS.java Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Nokia Corporation - initial implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal.qt.webkit;
+
+import org.eclipse.swt.internal.Library;
+
+/**
+ * Native methods requiring QtWebkit. They are separated to avoid
+ * loading the related libraries until they are needed.
+ */
+public final class WebkitOS {
+ static {
+ Library.loadLibrary("eswtqtwebkit");
+ }
+
+ //
+ // QWebView
+ //
+ public static final native int QWebView_new();
+ public static final native void QWebView_back(int handle);
+ public static final native void QWebView_forward(int handle);
+ public static final native void QWebView_reload(int handle);
+ public static final native void QWebView_setHtml(int handle, String html);
+ public static final native void QWebView_setUrl(int handle, String url);
+ public static final native void QWebView_stop(int handle);
+ public static final native String QWebView_swt_backUrl(int handle);
+ public static final native boolean QWebView_swt_canGoBack(int handle);
+ public static final native boolean QWebView_swt_canGoForward(int handle);
+ public static final native boolean QWebView_swt_evaluateJavaScript(int handle, String script);
+ public static final native String QWebView_swt_forwardUrl(int handle);
+ public static final native String QWebView_url(int handle);
+}
--- a/javauis/javalegacyutils/build/build.xml Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/javalegacyutils/build/build.xml Wed Jun 23 18:07:10 2010 +0300
@@ -31,5 +31,11 @@
com.nokia.mj.impl.rt.legacy.MemoryUtil,
com.nokia.mj.impl.rt.legacy.MIDEventServer,
com.nokia.mj.impl.rt.legacy.NativeError"/>
+
+ <target name="create.internal.api.jar">
+ <omj.internal.apis includes="com/nokia/mj/impl/rt/legacy/MIDEventServer.class,
+ com/nokia/mj/impl/rt/legacy/Security.class"/>
+ </target>
+
</project>
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Buffer.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Buffer.java Wed Jun 23 18:07:10 2010 +0300
@@ -56,12 +56,16 @@
final static int HOST_TYPE_CUSTOMITEM = 3;
// Flags for raising settings validation
- private final static int NONE = 0;
- private final static int COLOR = 1;
- private final static int CLIP = 2;
- private final static int FONT = 4;
- private final static int STROKESTYLE = 8;
- private final static int COORS_TRANSLATION = 16;
+ // FORCE_SETTINGS Forces settings to validated also in case
+ // there's only one Graphics instance as client, normally
+ // settings are not checked in such case
+ final static int NONE = 0;
+ final static int COLOR = 1;
+ final static int CLIP = 2;
+ final static int FONT = 4;
+ final static int STROKESTYLE = 8;
+ final static int COORDS_TRANSLATION = 16;
+ final static int FORCE_SETTINGS = 32;
// Graphics settings active in buffer
// all values are comparable to those
@@ -107,35 +111,35 @@
*/
static Buffer createInstance(Object host, Control control)
{
- if(host instanceof Canvas)
- {
- if(OS.windowServer == OS.WS_SYMBIAN_S60)
- {
- return new CanvasBufferSymbian((Canvas) host, control);
- }
- else if(OS.windowServer == OS.WS_X11)
- {
- return new CanvasBufferLinux((Canvas) host, control);
- }
- return null;
- }
- else if(host instanceof CustomItem)
- {
- if(OS.windowServer == OS.WS_SYMBIAN_S60)
- {
- return new CustomItemBufferSymbian((CustomItem) host, control);
- }
- else if(OS.windowServer == OS.WS_X11)
- {
- return new CustomItemBufferLinux((CustomItem) host, control);
- }
- return null;
- }
- else if(host instanceof Image)
- {
- return new ImageBuffer((Image) host);
- }
- return null;
+ if(host instanceof Canvas)
+ {
+ if(OS.windowServer == OS.WS_SYMBIAN_S60)
+ {
+ return new CanvasBufferSymbian((Canvas) host, control);
+ }
+ else if(OS.windowServer == OS.WS_X11)
+ {
+ return new CanvasBufferLinux((Canvas) host, control);
+ }
+ return null;
+ }
+ else if(host instanceof CustomItem)
+ {
+ if(OS.windowServer == OS.WS_SYMBIAN_S60)
+ {
+ return new CustomItemBufferSymbian((CustomItem) host, control);
+ }
+ else if(OS.windowServer == OS.WS_X11)
+ {
+ return new CustomItemBufferLinux((CustomItem) host, control);
+ }
+ return null;
+ }
+ else if(host instanceof Image)
+ {
+ return new ImageBuffer((Image) host);
+ }
+ return null;
}
/**
@@ -154,8 +158,7 @@
/**
* Defines the bounds of the host.
* Bounds are used for restricting the rendering in
- * the area of the control that is being updated. With Images
- * the bounds are not used.
+ * the area of the control that is being updated.
*
* @param crtl The Control of the host
* @param clienArea The area of the control which can be drawn by Graphics
@@ -177,6 +180,20 @@
}
/**
+ * Defines the bounds of the host.
+ *
+ * @param crtl The Control of the host
+ * @param clienArea The area of the control which can be drawn by Graphics
+ */
+ void setImageBounds(int width, int height)
+ {
+ hostBounds.x = 0;
+ hostBounds.y = 0;
+ hostBounds.width = width;
+ hostBounds.height = height;
+ }
+
+ /**
* Prepares surface for a new frame and starts paint session.
* Must be called in UI thread (sync calls this automatically)
* and at the start of new frame. The rectangle provided as
@@ -189,11 +206,11 @@
*/
void startFrame(int x, int y, int w, int h)
{
- if(!isSurfaceSessionOpen)
- {
- beginPaint(x, y, w, h);
- isSurfaceSessionOpen = true;
- }
+ if(!isSurfaceSessionOpen)
+ {
+ beginPaint(x, y, w, h);
+ isSurfaceSessionOpen = true;
+ }
}
/**
@@ -202,11 +219,11 @@
*/
void endFrame()
{
- if(isSurfaceSessionOpen)
- {
- endPaint();
- isSurfaceSessionOpen = false;
- }
+ if(isSurfaceSessionOpen)
+ {
+ endPaint();
+ isSurfaceSessionOpen = false;
+ }
}
/**
@@ -216,8 +233,8 @@
*/
void blitToDisplay(GraphicsContext gc, Widget widget)
{
- endFrame();
- blit(gc, widget);
+ endFrame();
+ blit(gc, widget);
}
/**
@@ -286,7 +303,7 @@
// write the default values to the buffer
if(clientCount == 1)
{
- writeDefaultValuesToBuffer();
+ writeDefaultValuesToBuffer();
}
return new Graphics(this, hostBounds );
}
@@ -299,7 +316,7 @@
*/
void sync()
{
- sync(true);
+ sync(true);
}
/**
@@ -325,7 +342,7 @@
}
// Start surface session if not started yet
- startFrame(hostBounds.x, hostBounds.y , hostBounds.width , hostBounds.height);
+ startFrame(hostBounds.x, hostBounds.y , hostBounds.width , hostBounds.height);
doRelease();
bindToHost(gc);
@@ -365,12 +382,12 @@
*/
void dispose()
{
- if(gc != null)
- {
+ if(gc != null)
+ {
doRelease();
gc.dispose();
gc = null;
- }
+ }
commandBuffer = null;
}
@@ -381,31 +398,31 @@
void fillRect(int x, int y, int w, int h, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION), client);
gc.fillRect(x, y, w, h);
}
void fillRoundRect(int x, int y, int w, int h, int arcW, int arcH, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION), client);
gc.fillRoundRect(x, y, w, h, arcW, arcH);
}
void fillArc(int x, int y, int w, int h, int startAngle, int arcAngle, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION), client);
gc.fillArc(x, y, w, h, startAngle, arcAngle);
}
void fillTriangle(int[] points, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION), client);
gc.fillPolygon(points);
}
void setClip(int x, int y, int w, int h, Graphics client)
{
- validateAndApplySettings(COORS_TRANSLATION, client);
+ validateAndApplySettings(COORDS_TRANSLATION, client);
// check if given clip is already active in buffer
if((bufferClip.x == x) && (bufferClip.y == y) &&
(bufferClip.width == w) && (bufferClip.height== h))
@@ -420,7 +437,7 @@
}
// translate clip to display coordinates and apply
- Rectangle rect = clipToDisplayCoords(x, y, w, h);
+ Rectangle rect = clipToWindowCoords(x, y, w, h);
if(rect.isEmpty())
{
// check is buffer clip is already up to date
@@ -452,6 +469,11 @@
gc.setClip(rect.x, rect.y, rect.width, rect.height, false);
}
+ void setGraphicsDefaults(Graphics client)
+ {
+ validateAndApplySettings((FONT|COLOR|STROKESTYLE|COORDS_TRANSLATION|FORCE_SETTINGS), client);
+ }
+
void setColor(int r, int g, int b, Graphics client)
{
// check if given color is already active in buffer
@@ -503,37 +525,37 @@
void drawLine(int xStart, int yStart, int xEnd, int yEnd, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|STROKESTYLE), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|STROKESTYLE), client);
gc.drawLine(xStart, yStart, xEnd, yEnd);
}
void drawRect(int x, int y, int w, int h, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|STROKESTYLE), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|STROKESTYLE), client);
gc.drawRect(x, y, w, h);
}
void drawRoundRect(int x, int y, int w, int h, int arcW, int arcH, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|STROKESTYLE), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|STROKESTYLE), client);
gc.drawRoundRect(x, y, w, h, arcW, arcH);
}
void drawArc(int x, int y, int w, int h, int startAngle, int arcAngle, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|STROKESTYLE), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|STROKESTYLE), client);
gc.drawArc(x, y, w, h, startAngle, arcAngle);
}
void drawString(String string, int x, int y, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|FONT), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|FONT), client);
gc.drawString(string, x, y, true);
}
void drawImage(org.eclipse.swt.internal.qt.graphics.Image image, int x,int y, Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawImage(image, x, y);
}
@@ -541,7 +563,7 @@
int wDst, int hDst, int xSrc, int ySrc, int wSrc, int hSrc,
int transform, Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawImage(image, xDst, yDst, wDst, hDst, xSrc, ySrc, wSrc, hSrc, transform);
}
@@ -555,7 +577,7 @@
boolean alpha,
Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawRGB(rgb, offset, scanlength, x, y, w, h, alpha);
}
@@ -570,7 +592,7 @@
int manipulation,
Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawRGB(rgb, offset, scanlength, x, y, w, h, alpha, manipulation);
}
@@ -586,7 +608,7 @@
int format,
Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawRGB(rgb, transparencyMask, offset, scanlength, x, y, w, h, manipulation, format);
}
@@ -602,19 +624,19 @@
int format,
Graphics client)
{
- validateAndApplySettings((CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((CLIP|COORDS_TRANSLATION), client);
gc.drawRGB(rgb, offset, scanlength, x, y, w, h, alpha, manipulation, format);
}
void drawPolygon(int[] points, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION|STROKESTYLE), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION|STROKESTYLE), client);
gc.drawPolygon(points);
}
void fillPolygon(int[] points, Graphics client)
{
- validateAndApplySettings((COLOR|CLIP|COORS_TRANSLATION), client);
+ validateAndApplySettings((COLOR|CLIP|COORDS_TRANSLATION), client);
gc.fillPolygon(points);
}
@@ -658,8 +680,16 @@
return null;
}
+ boolean containsDrawnPrimitives() {
+ boolean result = false;
+ if(commandBuffer != null) {
+ result = commandBuffer.containsDrawnPrimitives();
+ }
+ return result;
+ }
+
/**
- * Translates given rectangle to display/window surface coordinates
+ * Translates given rectangle to window surface coordinates
* and outlines the clip inside the control bounds.
*
* @param x The x-coordinate of the rectangle
@@ -668,7 +698,7 @@
* @param h The height of the rectangle
*
*/
- private Rectangle clipToDisplayCoords(int x, int y, int w, int h)
+ private Rectangle clipToWindowCoords(int x, int y, int w, int h)
{
// Bottom-right corner of control bounds in window coordinates
final int hostX2 = hostBounds.x + hostBounds.width;
@@ -701,7 +731,7 @@
clipY2 = clipY2Dpy < hostBounds.y ? (clipY2 + (hostBounds.y - clipY1Dpy)) : clipY2;
clipY2 = clipY2Dpy > hostY2 ? (clipY2 - (clipY1Dpy - hostY2)) : clipY2;
- return new Rectangle(clipX1, clipY1, (clipX2 - clipX1) , (clipY1 - clipY2));
+ return new Rectangle(clipX1, clipY1, (clipX2 - clipX1) , (clipY2 - clipY1));
}
/**
@@ -715,7 +745,7 @@
*/
private void validateAndApplySettings(int flags, Graphics client)
{
- if(!clientChanged(client))
+ if(!clientChanged(client) && (FORCE_SETTINGS & flags) == 0)
{
return;
}
@@ -736,7 +766,7 @@
client.currentClip[3] != bufferClip.height)
{
- Rectangle rect = clipToDisplayCoords(client.currentClip[0], client.currentClip[1],
+ Rectangle rect = clipToWindowCoords(client.currentClip[0], client.currentClip[1],
client.currentClip[2], client.currentClip[3]);
gc.setClip(rect.x, rect.y, rect.width, rect.height, false);
bufferClip.x = client.currentClip[0];
@@ -745,7 +775,7 @@
bufferClip.height = client.currentClip[3];
}
}
- if((COORS_TRANSLATION & flags) != 0)
+ if((COORDS_TRANSLATION & flags) != 0)
{
if((bufferTranslateX != client.translateX) && (bufferTranslateY != client.translateY))
{
@@ -815,6 +845,9 @@
/**
* Writes Graphics default values to buffer
+ * @param force If true defaults are written unconditionally to buffer,
+ * otherwise only values that different than the ones in buffer
+ * are written
*/
private void writeDefaultValuesToBuffer()
{
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Wed Jun 23 18:07:10 2010 +0300
@@ -16,9 +16,11 @@
*/
package javax.microedition.lcdui;
+import java.util.Enumeration;
import java.util.Vector;
import java.util.Timer;
import java.util.TimerTask;
+import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.EventDispatcher.LCDUIEvent;
import org.eclipse.ercp.swt.mobile.MobileShell;
import org.eclipse.swt.SWT;
@@ -148,6 +150,21 @@
*/
public static final int KEY_POUND = 35;
+
+ private static final int GAME_CANVAS = 1;
+ private static final int NO_BACKGROUND = 1 << 1;
+ private static final int FULLSCREEN_MODE = 1 << 2;
+
+ private static final int DISABLE_TAPDETECTION = 1 << 3;
+ private static final int SUPPRESS_GAMEKEYS = 1 << 4;
+ private static final int SUPPRESS_DRAGEVENT = 1 << 5;
+ private static final int CLEANUP_NEEDED = 1 << 6;
+ private static final int REPAINT_PENDING = 1 << 7;
+ private static final int SELECTIONKEY_COMPATIBILITY = 1 << 8;
+
+ private static final int CURRENTLY_VISIBLE = 1 << 9;
+
+
// Listeners for various events.
private org.eclipse.swt.events.PaintListener paintListener =
new CanvasShellPaintListener();
@@ -163,24 +180,31 @@
private Graphics tempGraphics;
// Graphics command buffer for this instance
- Buffer graphicsBuffer;
-
+ Buffer graphicsBuffer;
+
//On Screen Keypad
//private Composite keypadComposite;
private CanvasKeypad onScreenkeypad;
+ private static CanvasKeypad sharedKeypad;
private int oskHeight;
// Vector of flags that a certain key was pressed but was not released.
// Used to implement keyRepeated since eSWT does not support
// key repeat events.
private Vector keysPressed;
+ private int gameKeyState;
- private boolean suppressGameKeys;
- private boolean suppressDragEvent;
- private boolean cleanupNeeded;
+ private static int objectCount;
+ private static Shell sharedShell;
+ private Shell mShell;
+ private Composite canvasComp;
+ private Label tickerLabel;
+
+ private int mode;
+ private Object modeLock;
private Object cleanupLock;
- private boolean noBackground;
- private int gameKeyState;
+ private Object repaintLock;
+ private Object flushLock;
private Timer timer = new Timer();
private CanvasTimerTask timerTask;
@@ -192,35 +216,151 @@
private int pointerDownY;
private int twips;
private int timeout;
- private boolean disableTapDetection;
- private boolean repaintPending;
private int repaintX1;
private int repaintY1;
private int repaintX2;
private int repaintY2;
- private Object repaintLock;
- private boolean selectionKeyCompatibility;
- private boolean finalMode;
+
/**
* Constructs <code>Canvas</code> object.
*/
public Canvas()
{
super(null);
+ synchronized(this)
+ {
+ objectCount++;
+ }
+
+ modeLock = new Object();
repaintLock = new Object();
cleanupLock = new Object();
+ flushLock = new Object();
+ setMode(GAME_CANVAS, this instanceof GameCanvas);
construct();
keysPressed = new Vector();
}
+
+ /**
+ * Disposes this instance
+ * Called when finalizer is destroying this instance.
+ */
+ void dispose()
+ {
+ ESWTUIThreadRunner.update(getClass().getName(), -1);
+ ESWTUIThreadRunner.safeSyncExec(new Runnable()
+ {
+ public void run()
+ {
+ if(graphicsBuffer != null)
+ {
+ graphicsBuffer.dispose();
+ graphicsBuffer = null;
+ }
+
+ synchronized(this)
+ {
+ objectCount--;
+
+ if((objectCount == 0) || isMode(GAME_CANVAS))
+ {
+ mShell.dispose();
+ sharedShell = null;
+ sharedKeypad = null;
+ }
+ else
+ {
+ Ticker ticker = getTicker();
+ if (ticker != null)
+ {
+ ticker.removeLabel(tickerLabel);
+ }
+ if(tickerLabel != null)
+ {
+ tickerLabel.dispose();
+ }
+
+ canvasComp.dispose();
+ }
+ }
+ }
+ });
+ }
+
+
/* (non-Javadoc)
* @see Displayable#eswtConstructShell(int)
*/
Shell eswtConstructShell(int style)
{
- return super.eswtConstructShell(style /*| SWT.RESIZE*/);
+ if(isMode(GAME_CANVAS))
+ {
+ mShell = super.eswtConstructShell(style);
+ }
+ else
+ {
+ if(sharedShell == null)
+ {
+ sharedShell = super.eswtConstructShell(style);
+ }
+ mShell = sharedShell;
+ }
+
+ // Give the Shell the maximized size already before it becomes visible
+ // so that it will return the correct size.
+ mShell.setBounds(org.eclipse.swt.widgets.Display.getCurrent().getClientArea());
+
+ // Make the Shell maximized. On Symbian it's automatically maximized
+ // so this has no effect but on other platforms explicit maximizing
+ // might be needed.
+ mShell.setMaximized(true);
+
+ return mShell;
+ }
+
+ /**
+ * Sets ticker. If ticker is added already to other canvas(es),
+ * it continues running from position where it was. Otherwise
+ * it will start running from beginning when this method returns.
+ *
+ * @param newTicker New ticker. If null, current ticker is removed.
+ */
+ public void setTicker(Ticker newTicker)
+ {
+ super.setTicker(newTicker);
+
+ ESWTUIThreadRunner.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ tickerLabel.setVisible(isMode(CURRENTLY_VISIBLE));
+ }
+ });
+ }
+
+ /**
+ * Creates singleton Label instance used by Ticker.
+ * Creates tickerLabel on shell and sets the visibility of the same.
+ */
+ Label getTickerLabel()
+ {
+ tickerLabel = super.getTickerLabel();
+
+ if (!isMode(CURRENTLY_VISIBLE))
+ {
+ ESWTUIThreadRunner.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ tickerLabel.setVisible(false);
+ }
+ });
+ }
+
+ return tickerLabel;
}
/* (non-Javadoc)
@@ -229,16 +369,16 @@
Composite eswtConstructContent(int style)
{
// Get JAD attribute
- noBackground = JadAttributeUtil.isValue(JadAttributeUtil.ATTRIB_NOKIA_UI_ENHANCEMENT,
- JadAttributeUtil.VALUE_CANVAS_HAS_BACKGROUND);
- if(noBackground)
+ setMode(NO_BACKGROUND, JadAttributeUtil.isValue(JadAttributeUtil.ATTRIB_NOKIA_UI_ENHANCEMENT,
+ JadAttributeUtil.VALUE_CANVAS_HAS_BACKGROUND));
+ if(isMode(NO_BACKGROUND))
{
style |= SWT.NO_BACKGROUND;
}
// Get JAD attribute for S60 Selection Key Compatibility
- selectionKeyCompatibility = JadAttributeUtil.isValue(JadAttributeUtil.ATTRIB_NOKIA_MIDLET_S60_SELECTION_KEY_COMPATIBILITY,
- JadAttributeUtil.VALUE_TRUE);
+ setMode(SELECTIONKEY_COMPATIBILITY, JadAttributeUtil.isValue(JadAttributeUtil.ATTRIB_NOKIA_MIDLET_S60_SELECTION_KEY_COMPATIBILITY,
+ JadAttributeUtil.VALUE_TRUE));
// Get JAD attribute for MIDlet Tap Detection
String tapAttr = JadAttributeUtil.getValue(JadAttributeUtil.ATTRIB_NOKIA_MIDLET_TAP_DETECTION_OPTIONS);
@@ -266,7 +406,7 @@
if((twips == 0) && (timeout == 0))
{
- disableTapDetection = true;
+ setMode(DISABLE_TAPDETECTION, true);
}
// if any one of the value is zero, set defaults
@@ -287,8 +427,25 @@
setDefaultTapValues();
}
- Composite canvasComp = super.eswtConstructContent(style);
+ canvasComp = super.eswtConstructContent(style);
+ canvasComp.setVisible(false);
+
+ createOnScreenKeypad();
+
+ return canvasComp;
+ }
+ void eswtInitGraphics() {
+ // create graphics buffer
+ graphicsBuffer = Buffer.createInstance(this, canvasComp);
+ }
+
+ /**
+ * Creates OSK(OnScreenKeypad), shared Keypad will be created for Canvas,
+ * seperate OSK will be created for each GameCanvas.
+ */
+ CanvasKeypad createOnScreenKeypad()
+ {
// Read the on screen keypad settings from the jad attribute
String oskAttr = JadAttributeUtil
.getValue(JadAttributeUtil.ATTRIB_NOKIA_MIDLET_ON_SCREEN_KEYPAD);
@@ -298,23 +455,63 @@
.equalsIgnoreCase(JadAttributeUtil.VALUE_GAMEACTIONS)) || (oskAttr
.equalsIgnoreCase(JadAttributeUtil.VALUE_NAVIGATIONKEYS))))
{
-
// On screen keypad is required, On devices without keyboard it can
// be either navigation keys or navigation and game keys
- onScreenkeypad = new CanvasKeypad(this, canvasComp, oskAttr);
+
+ if(isMode(GAME_CANVAS))
+ {
+ onScreenkeypad = new CanvasKeypad(this, oskAttr);
+ return onScreenkeypad;
+ }
+
+ if(sharedKeypad == null)
+ {
+ sharedKeypad = new CanvasKeypad(this, oskAttr);
+ }
+ onScreenkeypad = sharedKeypad;
+ return onScreenkeypad;
}
- // create graphics buffer
- graphicsBuffer = Buffer.createInstance(this, canvasComp);
+ return null;
+ }
+
- return canvasComp;
+ Rectangle eswtLayoutShellContent()
+ {
+ Rectangle shellArea = mShell.getClientArea();
+ int oskHeight = (onScreenkeypad != null ? onScreenkeypad.getHeight() : 0);
+ int tickerHeight = (tickerLabel != null ? tickerLabel.getBounds().height : 0);
+
+ canvasComp.setBounds(0, tickerHeight,
+ shellArea.width, shellArea.height - tickerHeight - oskHeight);
+
+ canvasComp.setFocus();
+ return canvasComp.getClientArea();
}
+
/* (non-Javadoc)
* @see Displayable#eswtHandleShowCurrentEvent()
*/
void eswtHandleShowCurrentEvent()
{
+ setMode(CURRENTLY_VISIBLE, true);
+ eswtSetTitle();
+ ((MobileShell) mShell).setFullScreenMode(isMode(FULLSCREEN_MODE));
+ if(onScreenkeypad != null)
+ {
+ if(!isMode(GAME_CANVAS))
+ {
+ onScreenkeypad.setCurrentCanvas(this);
+ }
+ onScreenkeypad.setFullScreenMode(isMode(FULLSCREEN_MODE));
+ }
+ canvasComp.setVisible(true);
+ if(tickerLabel != null)
+ {
+ tickerLabel.setVisible(!isMode(FULLSCREEN_MODE));
+ }
+ addCommands();
super.eswtHandleShowCurrentEvent();
getContentComp().addPaintListener(paintListener);
getContentComp().addMouseListener(mouseListener);
@@ -326,6 +523,13 @@
*/
void eswtHandleHideCurrentEvent()
{
+ setMode(CURRENTLY_VISIBLE, false);
+ canvasComp.setVisible(false);
+ if(tickerLabel != null)
+ {
+ tickerLabel.setVisible(false);
+ }
+ removeCommands();
super.eswtHandleHideCurrentEvent();
getContentComp().removePaintListener(paintListener);
getContentComp().removeMouseListener(mouseListener);
@@ -333,6 +537,48 @@
}
/**
+ * eSWT callback to add a Command.
+ */
+ void eswtAddCommand(Command cmd) {
+ if (isMode(CURRENTLY_VISIBLE)) {
+ cmd.eswtAddESWTCommand(mShell, false);
+ }
+ if (eswtIsShown()) {
+ cmd.eswtAddCommandSelectionListener(mShell, getCommandListener());
+ }
+ }
+
+ /**
+ * Adds the commands to this Canvas.
+ * Adds all the commands of displayable to the shell.
+ */
+ void addCommands()
+ {
+ Command cmd = null;
+ for (Enumeration e = getCommands().elements(); e.hasMoreElements();)
+ {
+ cmd = (Command) e.nextElement();
+ final Command finalCommand = cmd;
+ finalCommand.eswtAddESWTCommand(mShell, false);
+ }
+ }
+
+ /**
+ * Removes the commands from this Canvas.
+ * Removes all the commands of displayable from the shell.
+ */
+ void removeCommands()
+ {
+ Command cmd = null;
+ for (Enumeration e = getCommands().elements(); e.hasMoreElements();)
+ {
+ cmd = (Command) e.nextElement();
+ final Command finalCommand = cmd;
+ finalCommand.eswtRemoveESWTCommand(mShell);
+ }
+ }
+
+ /**
* Issues the request to repaint the whole Canvas.
*/
public void repaint()
@@ -368,14 +614,14 @@
// removed from the queue but repaintPending is still true. In
// that case it's currently being processed and we can still
// add to the invalid area.
- if(!repaintPending)
+ if(!isMode(REPAINT_PENDING))
{
EventDispatcher eventDispatcher = EventDispatcher.instance();
LCDUIEvent event = eventDispatcher.newEvent(
LCDUIEvent.CANVAS_PAINT_MIDLET_REQUEST, this);
event.widget = getContentComp();
eventDispatcher.postEvent(event);
- repaintPending = true;
+ setMode(REPAINT_PENDING, true);
}
}
}
@@ -386,18 +632,39 @@
*
* @param mode - true switches the Canvas to the full-screen mode.
*/
- public void setFullScreenMode(boolean mode)
+ public void setFullScreenMode(boolean aMode)
{
- finalMode = mode;
+ setMode(FULLSCREEN_MODE, aMode);
ESWTUIThreadRunner.syncExec(new Runnable()
{
public void run()
{
- ((MobileShell) getShell()).setFullScreenMode(finalMode);
- //set the CanvasKeypad to the required mode
- if(onScreenkeypad != null)
+ if(tickerLabel != null)
{
- onScreenkeypad.setFullScreenMode(finalMode);
+ if(isMode(FULLSCREEN_MODE))
+ {
+ tickerLabel.setBounds(Integer.MIN_VALUE, 0, 0, 0);
+ }
+ else
+ {
+ tickerLabel.pack();
+ tickerLabel.setLocation(Integer.MIN_VALUE, 0);
+ }
+
+ if(isMode(CURRENTLY_VISIBLE))
+ {
+ tickerLabel.setVisible(!isMode(FULLSCREEN_MODE));
+ }
+ }
+
+ if(isMode(CURRENTLY_VISIBLE))
+ {
+ ((MobileShell)mShell).setFullScreenMode(isMode(FULLSCREEN_MODE));
+ //set the CanvasKeypad to the required mode
+ if(onScreenkeypad != null)
+ {
+ onScreenkeypad.setFullScreenMode(isMode(FULLSCREEN_MODE));
+ }
}
}
});
@@ -619,23 +886,35 @@
*/
final void initGameCanvas(boolean suppressKeys)
{
- this.suppressGameKeys = suppressKeys;
+ setMode(SUPPRESS_GAMEKEYS, suppressKeys);
}
+
+ /**
+ * Gets composite that contains Canvas content.
+ *
+ * @return Composite.
+ */
+ Composite getContentComp()
+ {
+ return canvasComp;
+ }
+
+
/**
* Get game canvas frame buffer graphics.
*/
final Graphics getGameBufferGraphics()
{
- tempGraphics = null;
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- tempGraphics = graphicsBuffer.getGraphics();
- }
- });
- return tempGraphics;
+ tempGraphics = null;
+ ESWTUIThreadRunner.safeSyncExec(new Runnable()
+ {
+ public void run()
+ {
+ tempGraphics = graphicsBuffer.getGraphics();
+ }
+ });
+ return tempGraphics;
}
CanvasKeypad getCanvasKeypad()
@@ -645,7 +924,7 @@
boolean IsFullScreenMode()
{
- return finalMode;
+ return isMode(FULLSCREEN_MODE);
}
/**
@@ -679,18 +958,23 @@
void flushGameBuffer(final int x, final int y, final int width,
final int height)
{
- synchronized(graphicsBuffer)
+ // This is serialized with the
+ // paint callback processing
+ synchronized(flushLock)
{
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- graphicsBuffer.sync();
- graphicsBuffer.blitToDisplay(null, getContentComp());
- }
- });
+ synchronized(graphicsBuffer)
+ {
+ ESWTUIThreadRunner.safeSyncExec(new Runnable()
+ {
+ public void run()
+ {
+ graphicsBuffer.sync();
+ graphicsBuffer.blitToDisplay(null, getContentComp());
+ }
+ });
+ }
}
- }
+ }
/**
* Called by ShellListener when shell gets activated.
@@ -704,7 +988,7 @@
synchronized(cleanupLock)
{
- cleanupNeeded = true;
+ setMode(CLEANUP_NEEDED, true);
}
LCDUIEvent event = EventDispatcher.instance().newEvent(LCDUIEvent.CANVAS_SHOWNOTIFY, this);
@@ -733,7 +1017,7 @@
graphicsBuffer.setControlBounds(getContentComp());
synchronized(cleanupLock)
{
- cleanupNeeded = true;
+ setMode(CLEANUP_NEEDED, true);
}
}
@@ -753,6 +1037,26 @@
}
}
+ private void setMode(final int aMode, boolean value)
+ {
+ synchronized(modeLock)
+ {
+ if(value)
+ {
+ mode |= aMode;
+ }
+ else
+ {
+ mode &= ~aMode;
+ }
+ }
+ }
+
+ private boolean isMode(final int aMode)
+ {
+ return ((mode & aMode) != 0);
+ }
+
/*
* UI thread calls. Paint listener of the eSWT widget.
*/
@@ -761,12 +1065,12 @@
public void paintControl(PaintEvent pe)
{
// Check if we got here from buffer flush
- if(graphicsBuffer.isPaintingActive())
- {
- graphicsBuffer.blitToDisplay(pe.gc.getGCData().internalGc, null);
- }
- else
- {
+ if(graphicsBuffer.isPaintingActive())
+ {
+ graphicsBuffer.blitToDisplay(pe.gc.getGCData().internalGc, null);
+ }
+ else
+ {
// Native toolkit is requesting an update of an area that has
// become invalid. Can't do anything here because the contents
// need to be queried from the MIDlet in another thread by
@@ -784,7 +1088,7 @@
event.height = pe.height;
event.widget = pe.widget;
eventDispatcher.postEvent(event);
- }
+ }
}
}
@@ -834,97 +1138,104 @@
*/
private final void doPaintCallback(final LCDUIEvent event)
{
- // Decide the area going to be painted by the callback.
- final int redrawNowX;
- final int redrawNowY;
- final int redrawNowW;
- final int redrawNowH;
- // Before this thread obtains the repaintLock any repaint() calls
- // will still be adding to the invalid area that is going to be
- // painted by this callback.
- synchronized(repaintLock)
+ synchronized(flushLock)
{
- if(event.type == LCDUIEvent.CANVAS_PAINT_NATIVE_REQUEST)
- {
- // Merge with possibly existing repaint() requests
- invalidate(event.x, event.y, event.width, event.height);
- }
- else
- {
- // Need to add a new event to the queue in subsequent repaint()
- // calls.
- repaintPending = false;
- }
-
- // Store the current area to be painted
- redrawNowX = repaintX1;
- redrawNowY = repaintY1;
- redrawNowW = repaintX2-repaintX1;
- redrawNowH = repaintY2-repaintY1;
-
-
- // After releasing the lock the repaint() calls will start with
- // new invalid area.
- repaintX1 = repaintX2 = repaintY1 = repaintY2 = 0;
-
- // Don't do the callback if there's nothing to paint
- if(!((redrawNowW > 0) && (redrawNowH > 0)))
+ // It's possible that this Canvas is sent to background
+ // right after the visibility is checked here, however
+ // it is okay as in such case we just do one extra paint
+ // callback. The visibility change cannot be synchronized with
+ // this method, since it would expose implementation to deadlock
+ if(!isMode(CURRENTLY_VISIBLE))
{
return;
}
- }
+
+ // Decide the area going to be painted by the callback.
+ final int redrawNowX;
+ final int redrawNowY;
+ final int redrawNowW;
+ final int redrawNowH;
+ // Before this thread obtains the repaintLock any repaint() calls
+ // will still be adding to the invalid area that is going to be
+ // painted by this callback.
+ synchronized(repaintLock)
+ {
+ if(event.type == LCDUIEvent.CANVAS_PAINT_NATIVE_REQUEST)
+ {
+ // Merge with possibly existing repaint() requests
+ invalidate(event.x, event.y, event.width, event.height);
+ }
+ else
+ {
+ // Need to add a new event to the queue in subsequent repaint()
+ // calls.
+ setMode(REPAINT_PENDING, false);
+ }
- // Create instance of Graphics if not created yet
- if(canvasGraphics == null)
- {
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- canvasGraphics = graphicsBuffer.getGraphics();
- canvasGraphics.setSyncStrategy(Graphics.SYNC_LEAVE_SURFACE_SESSION_OPEN);
- }
- });
- }
+ // Store the current area to be painted
+ redrawNowX = repaintX1;
+ redrawNowY = repaintY1;
+ redrawNowW = repaintX2-repaintX1;
+ redrawNowH = repaintY2-repaintY1;
- // Clean the background if dirty, buffer the operations.
- synchronized(cleanupLock)
- {
- if(cleanupNeeded && noBackground)
- {
- // UI thread can change the contentArea object reference at
- // any time. Store the object reference locally to ensure it
- // points to the same rectangle all the time.
- Rectangle contentArea = getContentArea();
+ // After releasing the lock the repaint() calls will start with
+ // new invalid area.
+ repaintX1 = repaintX2 = repaintY1 = repaintY2 = 0;
+
+ // Don't do the callback if there's nothing to paint
+ if(!((redrawNowW > 0) && (redrawNowH > 0)))
+ {
+ return;
+ }
+ }
- canvasGraphics.setClip(contentArea.x, contentArea.y,
- contentArea.width, contentArea.height);
- canvasGraphics.cleanBackground(contentArea);
- cleanupNeeded = false;
+ // Create instance of Graphics if not created yet
+ if(canvasGraphics == null)
+ {
+ canvasGraphics = graphicsBuffer.getGraphics();
+ canvasGraphics.setSyncStrategy(Graphics.SYNC_LEAVE_SURFACE_SESSION_OPEN);
}
- }
- // Clip must define the invalid area
- canvasGraphics.setClip(redrawNowX, redrawNowY, redrawNowW, redrawNowH);
+ // Clean the background if dirty, buffer the operations.
+ synchronized(cleanupLock)
+ {
+ if(isMode(CLEANUP_NEEDED) && isMode(NO_BACKGROUND))
+ {
+ // UI thread can change the contentArea object reference at
+ // any time. Store the object reference locally to ensure it
+ // points to the same rectangle all the time.
+ Rectangle contentArea = getContentArea();
- // The callback
- paint(canvasGraphics);
+ canvasGraphics.setClip(contentArea.x, contentArea.y,
+ contentArea.width, contentArea.height);
+ canvasGraphics.cleanBackground(contentArea);
+ setMode(CLEANUP_NEEDED, false);
+ }
+ }
- // Blit frame to display
- synchronized(graphicsBuffer)
- {
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
+ // Clip must define the invalid area
+ canvasGraphics.reset();
+ canvasGraphics.setClip(redrawNowX, redrawNowY, redrawNowW, redrawNowH);
+
+ // The callback
+ paint(canvasGraphics);
+
+ // Blit frame to display
+ synchronized(graphicsBuffer)
{
- public void run()
- {
- if(event.widget.isDisposed())
- {
- return;
- }
- graphicsBuffer.sync();
- graphicsBuffer.blitToDisplay(null, event.widget);
- }
- });
+ ESWTUIThreadRunner.safeSyncExec(new Runnable()
+ {
+ public void run()
+ {
+ if(event.widget.isDisposed())
+ {
+ return;
+ }
+ graphicsBuffer.sync();
+ graphicsBuffer.blitToDisplay(null, event.widget);
+ }
+ });
+ }
}
}
@@ -944,11 +1255,11 @@
Logger.method(this, "doKeyPressed", String.valueOf(keyCode));
boolean sendCallback = false;
- if(!(updateGameKeyState(keyCode, true) && suppressGameKeys))
+ if(!(updateGameKeyState(keyCode, true) && isMode(SUPPRESS_GAMEKEYS)))
{
- if((selectionKeyCompatibility == true) && (keyCode == -5))
+ if(isMode(SELECTIONKEY_COMPATIBILITY) && (keyCode == -5))
{
- if(finalMode == true)
+ if(isMode(FULLSCREEN_MODE))
{
if(!((getNumCommands() > 0) && hasCommandListener()))
{
@@ -964,7 +1275,7 @@
sendCallback = true;
}
}
- else if((selectionKeyCompatibility == false) && (keyCode == -5))
+ else if((!isMode(SELECTIONKEY_COMPATIBILITY)) && (keyCode == -5))
{
sendCallback = false;
}
@@ -1004,11 +1315,11 @@
{
Logger.method(this, "doKeyReleased", String.valueOf(keyCode));
boolean sendCallback = false;
- if(!(updateGameKeyState(keyCode, true) && suppressGameKeys))
+ if(!(updateGameKeyState(keyCode, true) && isMode(SUPPRESS_GAMEKEYS)))
{
- if((selectionKeyCompatibility == true) && (keyCode == -5))
+ if(isMode(SELECTIONKEY_COMPATIBILITY) && (keyCode == -5))
{
- if(finalMode == true)
+ if(isMode(FULLSCREEN_MODE))
{
if(!((getNumCommands() > 0) && hasCommandListener()))
{
@@ -1024,7 +1335,7 @@
sendCallback = true;
}
}
- else if((selectionKeyCompatibility == false) && (keyCode == -5))
+ else if((!isMode(SELECTIONKEY_COMPATIBILITY)) && (keyCode == -5))
{
sendCallback = false;
}
@@ -1097,10 +1408,10 @@
e.y = event.y;
EventDispatcher.instance().postEvent(e);
- if(!disableTapDetection)
+ if(!isMode(DISABLE_TAPDETECTION))
{
// Supress Drag events
- suppressDragEvent = true;
+ setMode(SUPPRESS_DRAGEVENT, true);
pointerDownX = event.x;
pointerDownY = event.y;
@@ -1116,7 +1427,7 @@
int pointerUpX = event.x;
int pointerUpY = event.y;
- if(!disableTapDetection)
+ if(!isMode(DISABLE_TAPDETECTION))
{
if(timerTask != null)
{
@@ -1126,11 +1437,11 @@
// If Timer not expired and Mouseup is withing rectangle assign
// PointercDown to Pinter Up
- if(suppressDragEvent && checkWithinRect(event.x, event.y))
+ if(isMode(SUPPRESS_DRAGEVENT) && checkWithinRect(event.x, event.y))
{
pointerUpX = pointerDownX;
pointerUpY = pointerDownY;
- suppressDragEvent = false;
+ setMode(SUPPRESS_DRAGEVENT, false);
}
}
@@ -1144,7 +1455,7 @@
public void mouseMove(MouseEvent event)
{
// Check for timeout expiration and if PointerUp falls outside the rectangle
- if(disableTapDetection || (!suppressDragEvent) || !checkWithinRect(event.x, event.y))
+ if(isMode(DISABLE_TAPDETECTION) || (!isMode(SUPPRESS_DRAGEVENT)) || !checkWithinRect(event.x, event.y))
{
LCDUIEvent e = EventDispatcher.instance().newEvent(LCDUIEvent.CANVAS_POINTERDRAGGED,
javax.microedition.lcdui.Canvas.this);
@@ -1243,32 +1554,12 @@
return valid;
}
- /**
- * Disposes this instance
- * Called when finalizer is destroying this instance.
- */
- void dispose()
- {
- super.dispose();
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- if(graphicsBuffer != null)
- {
- graphicsBuffer.dispose();
- graphicsBuffer = null;
- }
- }
- });
- }
-
class CanvasTimerTask extends TimerTask
{
public void run()
{
- suppressDragEvent = false;
+ setMode(SUPPRESS_DRAGEVENT, false);
}
}
}
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CanvasBufferLinux.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CanvasBufferLinux.java Wed Jun 23 18:07:10 2010 +0300
@@ -40,19 +40,22 @@
host = canvas;
}
- protected void init()
- {
- super.init();
- surface = Internal_PackageSupport.getWindowsurface(host.getShell());
- }
-
void bindToHost(GraphicsContext gc)
{
gc.bindTarget(surface);
}
+ void ensureWindowSurface()
+ {
+ if(surface == null)
+ {
+ surface = Internal_PackageSupport.getWindowsurface(host.getShell());
+ }
+ }
+
void beginPaint(int x, int y, int w, int h)
{
+ ensureWindowSurface();
paintX = x;
paintY = y;
paintW = w;
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CanvasKeypad.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CanvasKeypad.java Wed Jun 23 18:07:10 2010 +0300
@@ -189,10 +189,9 @@
* Constructs a canvas kepad based on the JAD attribute
*
* @param canvas - canvas for which the keypad is required.
- * @param canvasComp - Composite corresponding to the canvas.
* @param mode- the jad attribute as a string.
*/
- CanvasKeypad(Canvas canvas, Composite canvasComp, String mode)
+ CanvasKeypad(Canvas canvas, String mode)
{
this.canvas = canvas;
@@ -244,7 +243,7 @@
canvasData.left = new FormAttachment(0);
canvasData.top = new FormAttachment(0);
canvasData.bottom = new FormAttachment(keypadComposite);
- canvasComp.setLayoutData(canvasData);
+ canvas.getContentComp().setLayoutData(canvasData);
FormData navKeyData = new FormData();
navKeyData.right = new FormAttachment(100);
@@ -438,6 +437,7 @@
gameKeysComposite.layout();
}
+
/**
* Handles orientation changes.
*/
@@ -448,6 +448,16 @@
/**
+ * Sets the currect Canvas for Key events.
+ * @param canvas - Current Canvas to which the key events needs to be delivered.
+ */
+ void setCurrentCanvas(Canvas canvas)
+ {
+ this.canvas = canvas;
+ }
+
+
+ /**
* Adds LSk and RSK keys to navigation keypad if the canvas is set to full screen mode.
* @param mode- Indicates if the canvas is in fullscreen mode or not. True if fullscreen, False otherwise.
*/
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Wed Jun 23 18:07:10 2010 +0300
@@ -68,7 +68,7 @@
// Graphics command buffer for this instance
Buffer graphicsBuffer;
- Graphics CustomItemGraphics;
+ Graphics customItemGraphics;
CustomItemLayouter layouter;
@@ -550,11 +550,11 @@
widgetDisposed = true;
return;
}
- if(CustomItemGraphics == null)
+ if(customItemGraphics == null)
{
graphicsBuffer = Buffer.createInstance(self, (Control)event.widget);
- CustomItemGraphics = graphicsBuffer.getGraphics();
- CustomItemGraphics.setSyncStrategy(Graphics.SYNC_LEAVE_SURFACE_SESSION_OPEN);
+ customItemGraphics = graphicsBuffer.getGraphics();
+ customItemGraphics.setSyncStrategy(Graphics.SYNC_LEAVE_SURFACE_SESSION_OPEN);
}
else
{
@@ -583,17 +583,18 @@
contentHeight = this.contentHeight;
}
- CustomItemGraphics.setClip(0, 0, contentWidth, contentHeight);
- CustomItemGraphics.cleanBackground(new Rectangle(0, 0, contentWidth, contentHeight));
+ customItemGraphics.setClip(0, 0, contentWidth, contentHeight);
+ customItemGraphics.cleanBackground(new Rectangle(0, 0, contentWidth, contentHeight));
cleanupNeeded = false;
}
}
// Clip must define the invalid area
- CustomItemGraphics.setClip(redrawNowX, redrawNowY, redrawNowW, redrawNowH);
+ customItemGraphics.reset();
+ customItemGraphics.setClip(redrawNowX, redrawNowY, redrawNowW, redrawNowH);
// The callback
- paint(CustomItemGraphics, contentWidth, contentHeight);
+ paint(customItemGraphics, contentWidth, contentHeight);
// Wait until the UI thread is available. Then in the UI thread
// synchronously send a paint event.
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Wed Jun 23 18:07:10 2010 +0300
@@ -126,10 +126,11 @@
{
public void run()
{
- shell = eswtConstructShell(SWT.SYSTEM_MODAL);
+ shell = eswtConstructShell(SWT.SHELL_TRIM | SWT.PRIMARY_MODAL);
eswtSetTitle();
contentComp = eswtConstructContent(SWT.NONE);
contentArea = eswtLayoutShellContent();
+ eswtInitGraphics();
}
});
}
@@ -184,6 +185,13 @@
}
/**
+ * Initializes the Displayable for Graphics drawing.
+ */
+ void eswtInitGraphics() {
+
+ }
+
+ /**
* Called by Display when Displayable should become visible.
*/
void eswtHandleShowCurrentEvent()
@@ -191,6 +199,10 @@
if(!shell.isDisposed())
{
eswtUpdateSizes();
+ if(ticker != null)
+ {
+ ticker.start();
+ }
shell.addShellListener(eswtShellListener);
shell.addDisposeListener(eswtDisposeListener);
shell.addControlListener(eswtControlListener);
@@ -343,6 +355,7 @@
if(tickerLabel != null)
{
int tickerHeight = tickerLabel.getBounds().height;
+
contentComp.setBounds(0, tickerHeight,
shellArea.width, shellArea.height - tickerHeight);
}
@@ -620,6 +633,26 @@
}
/**
+ * Gets the commands array.
+ *
+ * @return the commands
+ */
+ Vector getCommands()
+ {
+ return commands;
+ }
+
+ /**
+ * Gets the command listener.
+ *
+ * @return the eswt command listener.
+ */
+ final EswtCommandListener getCommandListener()
+ {
+ return eswtCommandListener;
+ }
+
+ /**
* Gets width.
*
* @return Width of the Displayable in pixels.
@@ -690,10 +723,13 @@
});
if(ticker != null)
{
- // Start to scroll the ticker. Ticker may be already running
- // if it exists in some other displayable already, but
- // calling this again wont do any harm:
- ticker.start();
+ if(isLcduiVisible)
+ {
+ // Start to scroll the ticker. Ticker may be already running
+ // if it exists in some other displayable already, but
+ // calling this again wont do any harm:
+ ticker.start();
+ }
}
}
@@ -746,7 +782,7 @@
/**
* Creates singleton Label instance used by Ticker.
*/
- private Label getTickerLabel()
+ Label getTickerLabel()
{
if(tickerLabel == null)
{
@@ -856,13 +892,17 @@
*/
class EswtShellListener implements ShellListener
{
-
+
public void shellActivated(ShellEvent e)
{
- if(!isShellActive)
+ ESWTUIThreadRunner.getInstance().getDisplay()
+ .asyncExec(new Runnable()
{
- handleShellActivatedEvent();
- }
+ public void run()
+ {
+ handleShellActivatedEvent();
+ }
+ });
}
public void shellDeactivated(ShellEvent e)
@@ -907,6 +947,7 @@
*/
class EswtControlListener implements ControlListener
{
+
public void controlResized(ControlEvent e)
{
eswtUpdateSizes();
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Graphics.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Graphics.java Wed Jun 23 18:07:10 2010 +0300
@@ -95,15 +95,19 @@
private DirectGraphics directGraphics;
private Buffer graphicsBuffer;
-
- // Current font for rendering texts.
+
+ // Cache for settings
+ // these members have package visibility,
+ // however they meant to be accessed only by
+ // this (Graphics) instance or related (Buffer)
+ // greaphicsBuffer instance
Font currentFont;
int currentColor;
int translateX;
int translateY;
int[] currentClip = new int[4];
int currentStrokeStyle;
-
+
private com.nokia.mj.impl.rt.support.Finalizer finalizer;
//Constructor
@@ -135,8 +139,8 @@
currentClip[1] = clipRect.y;
currentClip[2] = clipRect.width;
currentClip[3] = clipRect.height;
+ setDefaultSettings();
graphicsBuffer = buffer;
- reset();
}
@@ -154,16 +158,29 @@
/**
* Resets Graphics state to initial.
+ * Reset does not set the clip.
*/
void reset()
{
+ synchronized(graphicsBuffer) {
+ // setDefaultSettings() must be called
+ // before the setGraphicsDefaults() since
+ // graphicsBuffer (Buffer implementation) uses
+ // the member values of this instance when setting the defaults
+ setDefaultSettings();
+ graphicsBuffer.setGraphicsDefaults(this);
+ }
+ }
+
+ void setDefaultSettings()
+ {
currentFont = Buffer.defaultFont;
currentColor = Buffer.defaultColor;
currentStrokeStyle = Buffer.defaultStrokeStyle;
translateX = Buffer.defaultTranslateX;
translateY = Buffer.defaultTranslateY;
}
-
+
/**
* Cleans the Canvas background.
*/
@@ -193,11 +210,11 @@
*/
void setSyncStrategy(int strategy)
{
- if((strategy != SYNC_LEAVE_SURFACE_SESSION_CLOSED) && (strategy != SYNC_LEAVE_SURFACE_SESSION_OPEN))
- {
- throw new IllegalArgumentException("Internal: Invalid strategy value");
- }
- syncStrategy = strategy;
+ if((strategy != SYNC_LEAVE_SURFACE_SESSION_CLOSED) && (strategy != SYNC_LEAVE_SURFACE_SESSION_OPEN))
+ {
+ throw new IllegalArgumentException("Internal: Invalid strategy value");
+ }
+ syncStrategy = strategy;
}
/**
@@ -264,7 +281,7 @@
{
synchronized(graphicsBuffer)
{
- return currentColor >> 16;
+ return (currentColor >> 16) & COMPONENT_MASK;
}
}
@@ -875,20 +892,15 @@
{
final Image localLcduiImage = image;
final org.eclipse.swt.internal.qt.graphics.Image localCgfxImage =
- Internal_GfxPackageSupport.getImage(Image.getESWTImage(image));
+ Internal_GfxPackageSupport.getImage(Image.getESWTImage(image));
final int localX = x;
final int localY = y;
final Graphics self = this;
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- localLcduiImage.sync(false);
- graphicsBuffer.drawImage(localCgfxImage, localX, localY, self);
- }
- });
-
+ if(image.graphicsBuffer.containsDrawnPrimitives()) {
+ localLcduiImage.sync(true);
+ }
+ graphicsBuffer.drawImage(localCgfxImage, localX, localY, self);
}
}
}
@@ -1182,26 +1194,22 @@
final int gcTransform = Image.getCgTransformValue(transform);
synchronized(srcImage.graphicsBuffer)
{
- final Image localLcduiSrcImage = srcImage;
- final org.eclipse.swt.internal.qt.graphics.Image localCgfxImage =
- Internal_GfxPackageSupport.getImage(Image.getESWTImage(srcImage));
- final int localX = x;
- final int localY = y;
- final int localW = width;
- final int localH = height;
- final int localXSrc = xSrc;
- final int localYSrc = ySrc;
- final int localGcTransform = gcTransform;
- final Graphics self = this;
- ESWTUIThreadRunner.safeSyncExec(new Runnable()
- {
- public void run()
- {
- localLcduiSrcImage.sync(false);
- graphicsBuffer.drawImage(localCgfxImage,
- localX, localY, localW, localH, localXSrc, localYSrc, localW, localH, localGcTransform, self);
- }
- });
+ final Image localLcduiSrcImage = srcImage;
+ final org.eclipse.swt.internal.qt.graphics.Image localCgfxImage =
+ Internal_GfxPackageSupport.getImage(Image.getESWTImage(srcImage));
+ final int localX = x;
+ final int localY = y;
+ final int localW = width;
+ final int localH = height;
+ final int localXSrc = xSrc;
+ final int localYSrc = ySrc;
+ final int localGcTransform = gcTransform;
+ final Graphics self = this;
+ if(srcImage.graphicsBuffer.containsDrawnPrimitives()) {
+ localLcduiSrcImage.sync(true);
+ }
+ graphicsBuffer.drawImage(localCgfxImage,
+ localX, localY, localW, localH, localXSrc, localYSrc, localW, localH, localGcTransform, self);
}
}
}
@@ -1212,21 +1220,21 @@
*/
void sync()
{
- synchronized(graphicsBuffer)
- {
- if(syncStrategy == SYNC_LEAVE_SURFACE_SESSION_OPEN)
- {
- // This instance is used only with paint callbacks, thus
- // sync is called with the indication that surface paint
- // session can be left open as it will be closed when the
- // callback returns.
- graphicsBuffer.sync(false);
- }
- else
- {
- graphicsBuffer.sync(true);
- }
- }
+ synchronized(graphicsBuffer)
+ {
+ if(syncStrategy == SYNC_LEAVE_SURFACE_SESSION_OPEN)
+ {
+ // This instance is used only with paint callbacks, thus
+ // sync is called with the indication that surface paint
+ // session can be left open as it will be closed when the
+ // callback returns.
+ graphicsBuffer.sync(false);
+ }
+ else
+ {
+ graphicsBuffer.sync(true);
+ }
+ }
}
@@ -1243,14 +1251,14 @@
}
/**
- * Getter for graphics buffer.
- * @return The Buffer.
- */
+ * Getter for graphics buffer.
+ * @return The Buffer.
+ */
Buffer getGraphicsBuffer()
{
return graphicsBuffer;
}
-
+
/**
* Maps stroke style constant from values used by
* Graphics to values defined in GraphicsContext
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/ImageBuffer.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/ImageBuffer.java Wed Jun 23 18:07:10 2010 +0300
@@ -29,6 +29,7 @@
ImageBuffer(Image image)
{
host = image;
+ setImageBounds(image.getWidth(), image.getHeight());
}
int getHostType()
--- a/javauis/m3g_qt/src/jni/graphics3d.inl Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/m3g_qt/src/jni/graphics3d.inl Wed Jun 23 18:07:10 2010 +0300
@@ -22,7 +22,7 @@
JNIEXPORT jboolean JNICALL Java_javax_microedition_m3g_Graphics3D__1isProperRenderer
(JNIEnv* /*aEnv*/, jclass)
{
- EGLContext ctx;
+/* EGLContext ctx;
EGLConfig config;
EGLSurface surf;
EGLint attrib[5];
@@ -78,7 +78,8 @@
eglDestroySurface(eglGetDisplay(0), surf);
eglDestroyContext(eglGetDisplay(0), ctx);
- return isProperRenderer;
+ return isProperRenderer;*/
+ return false;
}
/*
--- a/javauis/m3g_qt/src/jni/interface.inl Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/m3g_qt/src/jni/interface.inl Wed Jun 23 18:07:10 2010 +0300
@@ -39,6 +39,14 @@
*/
JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Interface__1ctor(JNIEnv* aEnv, jclass)
{
+ EGLDisplay oldDisplay = eglGetCurrentDisplay();
+ EGLSurface oldDrawSurface = eglGetCurrentSurface(EGL_DRAW);
+ EGLSurface oldReadSurface = eglGetCurrentSurface(EGL_READ);
+ EGLContext oldContext = eglGetCurrentContext();
+ EGLenum oldAPI = eglQueryAPI();
+ eglMakeCurrent( EGL_DEFAULT_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
+ eglBindAPI( EGL_OPENGL_ES_API );
+
M3Gparams cs;
memset(&cs, 0, sizeof(cs));
cs.mallocFunc = malloc;
@@ -51,6 +59,10 @@
//jint handle = eventSource->Execute(&createInterface, &cs);
jint handle = (unsigned)m3gCreateInterface(&cs);
M3G_DO_UNLOCK(aEnv);
+
+ eglMakeCurrent( EGL_DEFAULT_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT );
+ eglBindAPI( oldAPI );
+ eglMakeCurrent( oldDisplay, oldDrawSurface, oldReadSurface, oldContext );
return handle;
}
--- a/javauis/mmapi_qt/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -21,10 +21,10 @@
#include <audiopreference.h>
#include <logger.h>
-#include "CMMAAudioStreamPlayer.h"
-#include "CMMADataSourceStream.h"
-#include "MMAFunctionServer.h"
-#include "CMMAStreamHandler.h"
+#include "cmmaaudiostreamplayer.h"
+#include "cmmadatasourcestream.h"
+#include "mmafunctionserver.h"
+#include "cmmastreamhandler.h"
const TInt KPlayerPriority = KAudioPriorityRecording;
_LIT(KMMAStreamErrorMessage, "Internal error: %d");
--- a/javauis/mmapi_qt/audiostreaming/src.mmf/cmmaaudiostreamplayerfactory.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/audiostreaming/src.mmf/cmmaaudiostreamplayerfactory.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -19,7 +19,7 @@
// INCLUDE FILES
#include <logger.h>
#include "CMMAAudioStreamPlayerFactory.h"
-#include "CMMAAudioStreamPlayer.h"
+#include "cmmaaudiostreamplayer.h"
#include "CMMAAudioVolumeControl.h"
#include "CMMAStopTimeControl.h"
#include "CMMAMMFResolver.h"
--- a/javauis/mmapi_qt/audiostreaming/src.mmf/cmmastreamhandler.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/audiostreaming/src.mmf/cmmastreamhandler.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -21,9 +21,9 @@
#include <audiopreference.h>
#include <logger.h>
-#include "CMMAStreamHandler.h"
-#include "CMMADataSourceStream.h"
-#include "MMAFunctionServer.h"
+#include "cmmastreamhandler.h"
+#include "cmmadatasourcestream.h"
+#include "mmafunctionserver.h"
CMMAStreamHandler* CMMAStreamHandler::NewL(
MMMAStreamHandlerListener& aListener,
--- a/javauis/mmapi_qt/baseline/inc/cmmadisplay.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/inc/cmmadisplay.h Wed Jun 23 18:07:10 2010 +0300
@@ -50,7 +50,7 @@
// Default constructor, protected to allow derivation
CMMADisplay();
- void Construct(MMAFunctionServer* eventSource ,jobject javadisplayref);
+ void Construct(MMAFunctionServer* eventSource ,JNIEnv* aJni, jobject javadisplayref);
public: // Methods derived from MMMADisplay
void DrawFrameL(const CFbsBitmap* aBitmap);
@@ -66,7 +66,8 @@
void SetUIPlayer(MMMAGuiPlayer* player);
TSize SourceSize();
virtual void SourceSizeChanged(TInt aJavaControlWidth, TInt aJavaControlHeight,TInt x,TInt y, TRect aBoundsRect) = 0;
-
+ TBool iseSWT();
+ void SetFullscreenSize(TSize& aSize);
/**
* Gets notification that there is container to draw assigned
*
@@ -267,9 +268,19 @@
MMAFunctionServer* iEventSource;
JNIEnv* iJni;
jobject iJavaDisplayObject;
- jclass iJavaDisplayClass;
- TSize iFullScreenSize;
- MMMAGuiPlayer* iUiPlayer;
+ jclass iJavaDisplayClass;
+ TSize iFullScreenSize;
+ MMMAGuiPlayer* iUiPlayer;
+ TBool iIseSWT;
+ jmethodID setRectID;
+ jfieldID iRectDimensionField;
+ jfieldID iDisplayboundarrField;
+ jmethodID setContentBoundID;
+ jmethodID removeContentBoundID;
+ jmethodID redrawControlID;
+ jmethodID getCallBackMethodID;
+ jobject iJavadisplayref;
+ jmethodID getBoundRectID;
};
#endif // CMMADISPLAY_H
--- a/javauis/mmapi_qt/baseline/inc/cmmaplayer.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/inc/cmmaplayer.h Wed Jun 23 18:07:10 2010 +0300
@@ -134,7 +134,7 @@
* @param aPlayer Player to use.
* @param aIndex Control's index.
*/
- IMPORT_C static CMMAControl* StaticControl(CMMAPlayer* aPlayer,
+ static CMMAControl* StaticControl(CMMAPlayer* aPlayer,
TInt aIndex);
public: // New methods
@@ -335,9 +335,9 @@
*/
IMPORT_C void PostActionCompleted(TInt aError);
- IMPORT_C void PostActionCompletedFile(); //LC work for S60 3.2
+ void PostActionCompletedFile(); //LC work for S60 3.2
- IMPORT_C void PostActionCompletedStart();
+ void PostActionCompletedStart();
protected: // new methods
/**
* @see StaticAddSourceStreamL
--- a/javauis/mmapi_qt/baseline/inc/cmmavideocontrol.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/inc/cmmavideocontrol.h Wed Jun 23 18:07:10 2010 +0300
@@ -102,6 +102,7 @@
* @param aDeleteRefEvent Event posted in the destructor.
*/
static void StaticInitDynamicModeL(CMMAVideoControl* aVideoControl,
+ JNIEnv* aJni,
TInt* aContentHandle,
MMAFunctionServer* aEventSource,
jobject aGUIObject,
@@ -171,7 +172,16 @@
private:
void SetForeground(TBool aForeground, TBool aUseEventServer);
-
+
+public:
+
+ enum TDisplaytype
+ {
+ EDISPLAY_CANVAS=0,
+ EDISPLAY_VIDEOITEM=1,
+ EDISPLAY_ESWT=2
+ };
+
protected:
/**
* Not owned.
--- a/javauis/mmapi_qt/baseline/inc/mmmadisplay.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/inc/mmmadisplay.h Wed Jun 23 18:07:10 2010 +0300
@@ -202,6 +202,12 @@
* arg 'placeholder' is used to identify the function, to be called back from UI Thread
*/
virtual void CalledBackInUiThread(TInt placeholder) = 0;
+
+ /**
+ * To check if the Display is eSWT or not
+ */
+ virtual TBool iseSWT() = 0;
+ virtual void SetFullscreenSize(TSize& aFullscreenSize) = 0;
};
#endif // MMMADISPLAY_H
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/BaseDisplay.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/BaseDisplay.java Wed Jun 23 18:07:10 2010 +0300
@@ -28,9 +28,11 @@
{
// represents native side of display and initialized by derived class
protected int nativeDisplayHandle;
- protected org.eclipse.swt.widgets.Control eswtCanvasControl;
+ protected org.eclipse.swt.widgets.Control iControl;
private Rectangle rect;
private int[] rectDimension = new int[ 4 ];
+ protected boolean iseSWT;
+
public BaseDisplay()
{
rect = new Rectangle(0,0,0,0);
@@ -42,12 +44,20 @@
*/
public void GetCallbackInUiThread(int aPlaceHolder)
{
- Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"_+inside BaseDisplay : GetCallbackInUiThread");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"_+inside BaseDisplay : GetCallbackInUiThread ++");
final int val = aPlaceHolder;
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"_+inside BaseDisplay : GetCallbackInUiThread - aPlaceHolder = "+aPlaceHolder+"nativeDisplayHandle = "+nativeDisplayHandle);
try
{
- final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ org.eclipse.swt.widgets.Display disp = null;
+ if (iseSWT)
+ {
+ disp = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"_+inside BaseDisplay : GetCallbackInUiThread - got eswtdisplay");
disp.syncExec(new Runnable()
{
@@ -62,82 +72,112 @@
{
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : GetCallbackInUiThread....exception is " + e.toString());
}
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"_+inside BaseDisplay : GetCallbackInUiThread --");
}
public void setContentBound()
{
- System.out.println("inside BaseDisplay : setContentBound +");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : setContentBound +");
try
{
- final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ org.eclipse.swt.widgets.Display disp = null;
+ if (iseSWT)
+ {
+ disp = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
disp.syncExec(new Runnable()
{
public void run()
{
- eswtCanvasControl.setBounds(rect);
+ Rectangle arect = iControl.getBounds();
+ rect.x = rect.x + arect.x;
+ rect.y = rect.y + arect.y;
+ iControl.setBounds(rect);
}
});
}
catch (Exception e)
{
- System.out.println("inside BaseDisplay : setContentBound....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : setContentBound....exception is " + e.toString());
}
- System.out.println("inside BaseDisplay : setContentBound -");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : setContentBound -");
}
public void removeContentBound()
{
- System.out.println("inside BaseDisplay : removeContentBound +");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : removeContentBound +");
try
{
- final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ org.eclipse.swt.widgets.Display disp = null;
+ if (iseSWT)
+ {
+ disp = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
disp.syncExec(new Runnable()
{
public void run()
{
Rectangle emptyRect = new Rectangle(0,0,0,0);
- eswtCanvasControl.setBounds(emptyRect);
+ iControl.setBounds(emptyRect);
}
});
}
catch (Exception e)
{
- System.out.println("inside BaseDisplay : removeContentBound....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : removeContentBound....exception is " + e.toString());
}
- System.out.println("inside BaseDisplay : removeContentBound -");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : removeContentBound -");
}
public void redrawControl()
{
- System.out.println("inside BaseDisplay : redrawControl +");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : redrawControl +");
try
{
- final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ org.eclipse.swt.widgets.Display disp = null;
+ if (iseSWT)
+ {
+ disp = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
disp.syncExec(new Runnable()
{
public void run()
{
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : redrawControl before redraw");
// redraw entire bounds of receiver
- eswtCanvasControl.redraw();
+ iControl.redraw();
}
});
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : redrawControl after redraw");
}
catch (Exception e)
{
- System.out.println("inside BaseDisplay : redrawControl....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : redrawControl....exception is " + e.toString());
}
- System.out.println("inside BaseDisplay : redrawControl -");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : redrawControl -");
}
/* called from native to reset the java side rect
- Before the call of this function array is updated from native side
- which can be used to refresh the UI screen rect and/or
- set/remove bound rect
- */
+ Before the call of this function array is updated from native side
+ which can be used to refresh the UI screen rect and/or
+ set/remove bound rect
+ */
public void setRect()
{
@@ -146,10 +186,39 @@
rect.width = rectDimension[2];
rect.height = rectDimension[3];
- System.out.println("BaseDisplay : setRect rect is reset with values: x =" + rect.x +"y ="+ rect.y +"width ="+rect.width+"height = "+ rect.height);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"BaseDisplay : setRect rect is reset with values: x =" + rect.x +"y ="+ rect.y +"width ="+rect.width+"height = "+ rect.height);
}
+ public Rectangle getBounds()
+ {
+ try
+ {
+
+ org.eclipse.swt.widgets.Display disp = null;
+ if (iseSWT)
+ {
+ disp = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
+ disp.syncExec(new Runnable()
+ {
+ public void run()
+ {
+
+ rect = iControl.getBounds();
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo," " + e.toString());
+ }
+ return rect;
+ }
// abstract functions implemented by concrete class
protected abstract void setDisplaySize(int aWidth, int aHeight);
protected abstract void setDisplayFullScreen(final boolean aFullScreenMode);
@@ -162,7 +231,7 @@
protected abstract int getSourceWidth();
protected abstract int getSourceHeight();
protected abstract void getBoundRect();
- protected abstract void setWindowResources(VideoItem aVideoItem);
+ public abstract void setWindowResources(VideoItem aVideoItem);
protected abstract void setNativeHandle(int handle);
public abstract void setContainerVisibilityToNative(final boolean active);
// Native methods
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/ItemDisplay.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/ItemDisplay.java Wed Jun 23 18:07:10 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 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"
@@ -36,12 +36,13 @@
{
private int iEventSourceHandle;
- private org.eclipse.swt.widgets.Control iEswtItemControl;
+
private MMAPIeSWTObserver iEswtObserver;
private int x;
private int y;
private int qwidgetHandle;
Rectangle iFormRect;
+ private boolean iQWidgetHandleSet = false;
// index 0 : x-coordinate of topleft corner of display
// index 1 : y-coordinate of topleft corner of display
@@ -65,7 +66,7 @@
iEswtObserver = new MMAPIeSWTObserver();
- //iEswtItemControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtControl(item);
+ //iControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtControl(item);
com.nokia.mj.impl.nokialcdui.LCDUIInvoker.setItemControlStateChangeListener((ItemControlStateChangeListener)this,(javax.microedition.lcdui.Item) aVideoItem);
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java - ");
@@ -74,9 +75,9 @@
private void addListeners()
{
- iEswtObserver.addControlListenerToControl(iEswtItemControl);
- iEswtObserver.addShellListenerToControl(iEswtItemControl);
- iEswtObserver.addDisposeListenerToControl(iEswtItemControl);
+ iEswtObserver.addControlListenerToControl(iControl);
+ iEswtObserver.addShellListenerToControl(iControl);
+ iEswtObserver.addDisposeListenerToControl(iControl);
}
public void setNativeHandle(int handle)
@@ -107,13 +108,13 @@
public void run()
{
org.eclipse.swt.graphics.Point size = new org.eclipse.swt.graphics.Point(width,height);
- iEswtItemControl.setSize(size);
+ iControl.setSize(size);
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setDisplaySize - ");
@@ -130,7 +131,7 @@
{
public void run()
{
- iEswtItemControl.setBounds(disp.getClientArea());
+ iControl.setBounds(disp.getClientArea());
new MobileShell(disp).setFullScreenMode(aFullScreenMode);
// instruct native to switch to full screen mode
_setFullScreenMode(nativeDisplayHandle,aFullScreenMode);
@@ -160,13 +161,13 @@
{
public void run()
{
- iEswtItemControl.setLocation(x , y);
+ iControl.setLocation(x , y);
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setDisplayLocation - ");
@@ -177,6 +178,9 @@
public void setVisible(boolean aVisible)
{
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setVisible + ");
+ // call native side to set the visibiity
+ _setVisible(nativeDisplayHandle,aVisible);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setVisible after _setVisible ");
try
{
final boolean visible = aVisible;
@@ -185,15 +189,16 @@
{
public void run()
{
- // iEswtItemControl.setVisible(visible);
- // call native side to set the visibiity
- _setVisible(nativeDisplayHandle,visible);
+
+
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"before calling iControl.setVisible");
+ iControl.setVisible(visible);
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setVisible - ");
@@ -211,13 +216,13 @@
public void run()
{
- y = iEswtItemControl.getSize().y;
+ y = iControl.getSize().y;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: getDisplayHeight - ");
@@ -235,14 +240,14 @@
{
public void run()
{
- x = iEswtItemControl.getSize().x;
+ x = iControl.getSize().x;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: getDisplayWidth - ");
@@ -259,14 +264,14 @@
{
public void run()
{
- x = iEswtItemControl.getLocation().x;
+ x = iControl.getLocation().x;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: getDisplayX - ");
@@ -286,14 +291,14 @@
{
public void run()
{
- y = iEswtItemControl.getLocation().y;
+ y = iControl.getLocation().y;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: getDisplayY - ");
@@ -326,13 +331,13 @@
{
public void run()
{
- Rectangle boundrect = iEswtItemControl.getBounds();
+ Rectangle boundrect = iControl.getBounds();
displayboundarr[0] = boundrect.x ;
displayboundarr[1] = boundrect.y ;
displayboundarr[2] = boundrect.width ;
displayboundarr[3] = boundrect.height ;
- Shell shell = iEswtItemControl.getShell();
+ Shell shell = iControl.getShell();
iFormRect = shell.getBounds();
@@ -348,7 +353,7 @@
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java :getBoundRect() x =" + displayboundarr[0] + "y ="+ displayboundarr[1] +"width ="+ displayboundarr[2] +"height =" + displayboundarr[3]);
@@ -373,6 +378,8 @@
public void setWindowResources(VideoItem aVideoItem)
{
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setWindowResources windowHandle ");
+
+ iQWidgetHandleSet = true;
if (aVideoItem == null)
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setWindowResources aVideoItem is null");
// set the item size to be that of the video size if the video size is known.
@@ -382,9 +389,9 @@
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: after setting the size of item to source size ");
- if (iEswtItemControl == null)
+ if (iControl == null)
{
- Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"+ItemDisplay() - iEswtItemControl is null");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"+ItemDisplay() - iControl is null");
}
try
{
@@ -394,10 +401,10 @@
{
public void run()
{
- Shell shell = iEswtItemControl.getShell();
+ Shell shell = iControl.getShell();
qwidgetHandle = Internal_PackageSupport.topHandle(shell);
- x = iEswtItemControl.getSize().x;
- y = iEswtItemControl.getSize().y;
+ x = iControl.getSize().x;
+ y = iControl.getSize().y;
_setWindowToNative(nativeDisplayHandle,qwidgetHandle);
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setWindowResources qwidgetHandle is " + qwidgetHandle);
}
@@ -405,7 +412,7 @@
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
e.printStackTrace();
}
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java: setWindowResources qwidgetHandle(x,y) " +x+"," +y);
@@ -440,12 +447,15 @@
public void notifyControlAvailable(org.eclipse.swt.widgets.Control ctrl,Item item)
{
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java : notifyControlAvailable + ");
- iEswtItemControl = ctrl;
+ iControl = ctrl;
/* now use the control and addobserver to the control
and setwindowresources
*/
- NativeResources nativeres = new NativeResources(this,iVideoItem);
- nativeres.start();
+ if (iQWidgetHandleSet == false)
+ {
+ NativeResources nativeres = new NativeResources(this,iVideoItem);
+ nativeres.start();
+ }
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ItemDisplay.java : notifyControlAvailable - ");
}
@@ -472,8 +482,8 @@
final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
disp.syncExec(new Runnable() {
public void run() {
- x = iEswtItemControl.getSize().x;
- y = iEswtItemControl.getSize().y;
+ x = iControl.getSize().x;
+ y = iControl.getSize().y;
}
});
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/MMACanvasDisplay.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/MMACanvasDisplay.java Wed Jun 23 18:07:10 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002 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 @@
import org.eclipse.ercp.swt.mobile.MobileShell;
import org.eclipse.swt.graphics.Rectangle;
import com.nokia.microedition.media.control.VideoItem;
-
+import com.nokia.mj.impl.utils.Logger;
public class MMACanvasDisplay extends BaseDisplay
@@ -51,20 +51,20 @@
{
iEventSourceHandle = aEventSourceHandle;
eswtObserver = new MMAPIeSWTObserver();
- eswtCanvasControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtControl(canvas);
+ iControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtControl(canvas);
//super.setESWTControl(eswtCanvasControl);
}
private void addListeners()
{
- eswtObserver.addControlListenerToControl(eswtCanvasControl);
- eswtObserver.addShellListenerToControl(eswtCanvasControl);
- eswtObserver.addDisposeListenerToControl(eswtCanvasControl);
+ eswtObserver.addControlListenerToControl(iControl);
+ eswtObserver.addShellListenerToControl(iControl);
+ eswtObserver.addDisposeListenerToControl(iControl);
}
public void setNativeHandle(int handle)
{
- System.out.println("MMACanvasDisplay.java : setNativeHandle :" + handle);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java : setNativeHandle :" + handle);
nativeDisplayHandle = handle;
eswtObserver.setDisplayToObserver(this);
addListeners();
@@ -82,24 +82,24 @@
public void run()
{
org.eclipse.swt.graphics.Point size = new org.eclipse.swt.graphics.Point(width,height);
- eswtCanvasControl.redraw();
+ iControl.redraw();
- System.out.println("inside videoControl's setDisplaySize redraw called");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize redraw called");
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
- System.out.println("inside videoControl's setDisplaySize +");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize +");
_setDisplaySize(nativeDisplayHandle,
iEventSourceHandle,
aWidth,
aHeight);
- System.out.println("inside videoControl's setDisplaySize -");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize -");
}
public void setDisplayFullScreen(final boolean aFullScreenMode)
@@ -112,16 +112,16 @@
{
public void run()
{
- eswtCanvasControl.setBounds(disp.getClientArea());
- new MobileShell(disp).setFullScreenMode(aFullScreenMode);
+ iControl.setBounds(disp.getClientArea());
+ //new MobileShell(disp).setFullScreenMode(aFullScreenMode);
// instruct native to switch to full screen mode
- _setFullScreenMode(nativeDisplayHandle,aFullScreenMode);
+ //_setFullScreenMode(nativeDisplayHandle,aFullScreenMode);
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
}
@@ -139,7 +139,7 @@
{
public void run()
{
- org.eclipse.swt.graphics.Point topleftposition = eswtCanvasControl.getLocation();
+ org.eclipse.swt.graphics.Point topleftposition = iControl.getLocation();
eSWTcontrolLocationX = topleftposition.x;
eSWTcontrolLocationY = topleftposition.y;
@@ -148,17 +148,17 @@
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
// To Avoid UI thread block
- System.out.println("inside videoControl's setDisplaySize before calling _setPosition ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize before calling _setPosition ");
_setPosition(nativeDisplayHandle,
iEventSourceHandle,
eSWTcontrolLocationX,
eSWTcontrolLocationY,
videoControlLocationX,
videoControlLocationY);
- System.out.println("inside videoControl's setDisplaySize after calling _setPosition ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize after calling _setPosition ");
try
{
@@ -167,19 +167,19 @@
{
public void run()
{
- System.out.println("inside videoControl's setDisplaySize before redraw() ");
- eswtCanvasControl.redraw();
- System.out.println("inside videoControl's setDisplaySize after redraw() ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize before redraw() ");
+ iControl.redraw();
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize after redraw() ");
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplayLocation in redraw()....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplayLocation in redraw()....exception is " + e.toString());
}
- System.out.println("inside videoControl's setDisplayLocation coming out of setDisplayLocation()");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplayLocation coming out of setDisplayLocation()");
}
@@ -201,7 +201,7 @@
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
//System.out.println("inside videoControl's setVisible before native call");
// _setVisible(nativeDisplayHandle,aVisible);
@@ -220,13 +220,13 @@
public void run()
{
- y = eswtCanvasControl.getSize().y;
+ y = iControl.getSize().y;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
return y;
@@ -241,14 +241,14 @@
{
public void run()
{
- x = eswtCanvasControl.getSize().x;
+ x = iControl.getSize().x;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
return x;
@@ -263,14 +263,14 @@
{
public void run()
{
- x = eswtCanvasControl.getLocation().x;
+ x = iControl.getLocation().x;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
return x;
@@ -288,14 +288,14 @@
{
public void run()
{
- y = eswtCanvasControl.getLocation().y;
+ y = iControl.getLocation().y;
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
return y;
}
@@ -317,7 +317,7 @@
public void getBoundRect()
{
- System.out.println("MMACanvasDisplay.java :getBoundRect()");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java :getBoundRect()");
try
{
@@ -326,7 +326,7 @@
{
public void run()
{
- Rectangle boundrect = eswtCanvasControl.getBounds();
+ Rectangle boundrect = iControl.getBounds();
displayboundarr[0] = boundrect.x ;
displayboundarr[1] = boundrect.y ;
displayboundarr[2] = boundrect.width ;
@@ -337,9 +337,9 @@
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
- System.out.println("MMACanvasDisplay.java :getBoundRect() x =" + displayboundarr[0] + "y ="+ displayboundarr[1] +"width ="+ displayboundarr[2] +"height =" + displayboundarr[3]);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java :getBoundRect() x =" + displayboundarr[0] + "y ="+ displayboundarr[1] +"width ="+ displayboundarr[2] +"height =" + displayboundarr[3]);
}
@@ -353,22 +353,22 @@
public void setContainerVisibilityToNative(final boolean active)
{
- System.out.println("MMACanvasDisplay.java : SetContainerVisibilityToNative + ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java : SetContainerVisibilityToNative + ");
new Thread()
{
public void run()
{
- System.out.println("MMACanvasDisplay.java : SetContainerVisibilityToNative execute the native function in new thread ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java : SetContainerVisibilityToNative execute the native function in new thread ");
_setContainerVisible(iEventSourceHandle,nativeDisplayHandle,active);
}
} .start();
- System.out.println("MMACanvasDisplay.java : SetContainerVisibilityToNative - ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java : SetContainerVisibilityToNative - ");
}
public void setWindowResources(VideoItem aVideoItem)
{
- System.out.println("MMACanvasDisplay.java: setWindowResources windowHandle ");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java: setWindowResources windowHandle ");
try
{
final org.eclipse.swt.widgets.Display disp = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
@@ -377,18 +377,18 @@
{
public void run()
{
- Shell shell = eswtCanvasControl.getShell();
+ Shell shell = iControl.getShell();
qwidgetHandle = Internal_PackageSupport.topHandle(shell);
- x = eswtCanvasControl.getSize().x;
- y = eswtCanvasControl.getSize().y;
+ x = iControl.getSize().x;
+ y = iControl.getSize().y;
_setWindowToNative(nativeDisplayHandle,qwidgetHandle);
- System.out.println("MMACanvasDisplay.java: setWindowResources qwidgetHandle is " + qwidgetHandle);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java: setWindowResources qwidgetHandle is " + qwidgetHandle);
}
});
}
catch (Exception e)
{
- System.out.println("inside videoControl's setDisplaySize....exception is " + e.toString());
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
}
_setNativeWindowSize(nativeDisplayHandle,iEventSourceHandle,x,y);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/MMAeSWTDisplay.java Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,455 @@
+/*
+* 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.microedition.media.control;
+
+import org.eclipse.ercp.swt.mobile.MobileShell;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Internal_PackageSupport;
+import org.eclipse.swt.widgets.Shell;
+import com.nokia.mj.impl.utils.Logger;
+
+public class MMAeSWTDisplay extends BaseDisplay
+{
+ private int iEventSourceHandle;
+ private int qwidgetHandle;
+ private int x;
+ private int y;
+ private int eSWTcontrolLocationX;
+ private int eSWTcontrolLocationY;
+
+ // index 0 : x-coordinate of topleft corner of display
+ // index 1 : y-coordinate of topleft corner of display
+ // index 3 : width of display
+ // index 4 : height of display
+
+ private int[] displayboundarr = new int[ 4 ];
+
+ //private org.eclipse.swt.widgets.Control iControl;
+ private MMAPIeSWTObserver eswtObserver;
+
+ public MMAeSWTDisplay(int aEventServerHandle, org.eclipse.swt.widgets.Control aControl)
+ {
+ iEventSourceHandle = aEventServerHandle;
+ iControl = aControl;
+ eswtObserver = new MMAPIeSWTObserver();
+ iseSWT = true;
+ }
+
+ private void addListeners()
+ {
+ eswtObserver.addControlListenerToControl(iControl);
+ eswtObserver.addShellListenerToControl(iControl);
+ eswtObserver.addDisposeListenerToControl(iControl);
+ }
+
+ /**
+ * Inherited from BaseDisplay.
+ */
+ /*public void GetCallbackInUiThread(int placeholder)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : GetCallbackInUiThread +");
+ final int val = placeholder;
+ try{
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: BaseDisplay.java: GetCallbackInUiThread(): before Display.getDefault()");
+ final org.eclipse.swt.widgets.Display disp = org.eclipse.swt.widgets.Display.getDefault();
+ if(disp == null)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: BaseDisplay.java: GetCallbackInUiThread(): disp is null");
+ }
+ disp.syncExec(new Runnable() {
+ public void run() {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: BaseDisplay.java: GetCallbackInUiThread(): Before native call");
+ _nativeMethodCallInUiThread(nativeDisplayHandle , val);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: BaseDisplay.java: GetCallbackInUiThread(): After native call");
+ }
+ });
+ }
+ catch(Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : GetCallbackInUiThread....exception is " + e.toString());
+ }
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside BaseDisplay : GetCallbackInUiThread -");
+ }*/
+
+ public void setNativeHandle(int handle)
+ {
+ nativeDisplayHandle = handle;
+ //eswtObserver.setDisplayToObserver(this);
+ //addListeners();
+ }
+
+ public void getBoundRect()
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java :getBoundRect()");
+
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ display.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ Rectangle boundrect = iControl.getBounds();
+ displayboundarr[0] = boundrect.x ;
+ displayboundarr[1] = boundrect.y ;
+ displayboundarr[2] = boundrect.width ;
+ displayboundarr[3] = boundrect.height ;
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside videoControl's setDisplaySize....exception is " + e.toString());
+ }
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMACanvasDisplay.java :getBoundRect() x =" + displayboundarr[0] + "y ="+ displayboundarr[1] +"width ="+ displayboundarr[2] +"height =" + displayboundarr[3]);
+ }
+
+ public int getDisplayHeight()
+ {
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+
+ display.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ y = iControl.getSize().y;
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: getDisplayHeight() ....exception is "
+ + e.toString());
+ }
+
+ return y;
+ }
+
+ public int getDisplayWidth()
+ {
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+
+ display.syncExec(new Runnable()
+ {
+
+ public void run()
+ {
+ x = iControl.getSize().x;
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: getDisplayWidth() ....exception is "
+ + e.toString());
+ }
+ return x;
+ }
+
+ public int getDisplayX()
+ {
+
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ display.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ x = iControl.getLocation().x;
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside MMAeSWTDisplay.java's getDisplayX....exception is " + e.toString());
+ }
+ return x;
+ }
+
+ protected int getDisplayY()
+ {
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ display.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ y = iControl.getLocation().y;
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside MMAeSWTDisplay.java's getDisplayY....exception is " + e.toString());
+ }
+ return y;
+ }
+
+ public int getSourceHeight()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int getSourceWidth()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public void setDisplayFullScreen(final boolean aFullScreenMode)
+ {
+ try
+ {
+
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+
+ //display.syncExec(new Runnable() {
+ //public void run() {
+ iControl.setBounds(display.getClientArea());
+ System.out.println("enetr in to the full screen mode setDisplayFullScreen %d"+iControl.getBounds());
+// new MobileShell(display).setFullScreenMode(aFullScreenMode);
+ //((MobileShell)iControl.getShell()).setFullScreenMode(aFullScreenMode);
+ // new Shell(display).setFullScreenMode(aFullScreenMode);
+ //((Shell)iControl.getShell()).setFullScreenMode(aFullScreenMode);
+ //TODO
+ // instruct native to switch to full screen mode
+ //_setFullScreenMode(nativeDisplayHandle, aFullScreenMode);
+ //}
+ //});
+ }
+ catch (Exception e)
+ {
+ System.out
+ .println("inside MMAeSWTDisplay.java: setDisplayFullScreen....exception is "
+ + e.toString());
+ e.printStackTrace();
+ }
+
+
+ }
+
+ public void setDisplayLocation(int aX, int aY)
+ {
+
+ //Not required for eSWT since this function does not work for USE_GUI_PRIMITIVE
+
+ //Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setDisplayLocation() +");
+ //final int videoControlLocationX = aX;
+ //final int videoControlLocationY = aY;
+
+ //try {
+ // final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ // display.syncExec(new Runnable() {
+ // public void run() {
+ /// org.eclipse.swt.graphics.Point topleftposition = iControl
+ // .getLocation();
+ // eSWTcontrolLocationX = topleftposition.x;
+ // eSWTcontrolLocationY = topleftposition.y;
+ // Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setDisplayLocation(): eSWTcontrolLocationX="+eSWTcontrolLocationX +
+ // " eSWTcontrolLocationY=" + eSWTcontrolLocationY);
+ // }
+ //});
+ //} catch (Exception e) {
+ // System..println("inside MMAeSWTDisplay's setDisplayLocation....exception is "
+ //+ e.toString());
+ //}
+ // To Avoid UI thread block
+ //System.out
+ // .println("inside MMAeSWTDisplay's setDisplayLocation before calling _setPosition ");
+ //_setPosition(nativeDisplayHandle, iEventSourceHandle,
+ // eSWTcontrolLocationX, eSWTcontrolLocationY,
+ // videoControlLocationX, videoControlLocationY);
+ //System.out
+ //.println("inside MMAeSWTDisplay's setDisplayLocation after calling _setPosition ");
+
+ //try {
+ // final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ // display.syncExec(new Runnable() {
+ // public void run() {
+ // //System.out
+ //.println("inside MMAeSWTDisplay's setDisplayLocation before redraw() ");
+ //iControl.redraw();
+ // System.out
+ //.println("inside MMAeSWTDisplay's setDisplayLocation after redraw() ");
+ // }
+ // });
+ //} catch (Exception e) {
+ //System.out
+ //.println("inside MMAeSWTDisplay's setDisplayLocation in redraw()....exception is "
+ //+ e.toString());
+ // }
+
+ //Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setDisplayLocation() -");
+
+
+
+ }
+
+ public void setDisplaySize(int aWidth, int aHeight)
+ {
+ final int width = aWidth;
+ final int height = aHeight;
+ try
+ {
+ final org.eclipse.swt.widgets.Display disp = org.eclipse.swt.widgets.Display.getDefault();
+
+ //disp.syncExec(new Runnable() {
+ // public void run() {
+ org.eclipse.swt.graphics.Point size = new org.eclipse.swt.graphics.Point(
+ width, height);
+ //eswtCanvasControl.setSize(size);
+ iControl.setSize(size);
+ iControl.redraw();
+
+ System.out
+ .println("inside MMAeSWTDisplay.java's setDisplaySize redraw called");
+ //}
+ //});
+ }
+ catch (Exception e)
+ {
+ System.out
+ .println("inside MMAeSWTDisplay.java's setDisplaySize....exception is "
+ + e.toString());
+ }
+
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside MMAeSWTDisplay.java's setDisplaySize");
+ //_setDisplaySize(nativeDisplayHandle, iEventSourceHandle, aWidth,
+ // aHeight);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside MMAeSWTDisplay.java's setDisplaySize -");
+
+ }
+
+
+
+ public void setVisible(boolean aVisible)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setVisible() + " + aVisible);
+ try
+ {
+ final boolean visible = aVisible;
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ display.asyncExec(new Runnable()
+ {
+ public void run()
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setVisible() inside asyncExec run()");
+ //eswtCanvasControl.setVisible(visible);
+ // call native side to set the visibiity
+ _setVisible(nativeDisplayHandle, visible);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: _setVisible() native call completed");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ System.out
+ .println("MMAPI: MMAeSWTDisplay.java: setVisible() ....exception is "
+ + e.toString());
+ }
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setVisible() -");
+ }
+
+ public void setWindowResources(VideoItem aVideoItem)
+ {
+
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAeSWTDisplay.java: setWindowResources windowHandle + " + Thread.currentThread().getName());
+ try
+ {
+ final org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
+ display.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAeSWTDisplay.java: setWindowResources() run() runnable = " + this.hashCode());
+ Shell shell = iControl.getShell();
+ qwidgetHandle = Internal_PackageSupport.topHandle(shell);
+ x = iControl.getSize().x;
+ y = iControl.getSize().y;
+ _setWindowToNative(nativeDisplayHandle, qwidgetHandle);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setWindowResources(): calling _setNativeWindowSize() + " + Thread.currentThread().getName());
+ _setNativeWindowSize(nativeDisplayHandle, iEventSourceHandle, x, y);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAeSWTDisplay.java: setWindowResources last statement of syncExec");
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside MMAeSWTDisplay.java's setWindowResources() ....exception is "
+ + e.toString());
+ }
+ //Removed from here and added to syncexec above, since setWindowResources is called from new Thread this
+ //function is no longer in UI THREAD.
+
+ //Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setWindowResources(): calling _setNativeWindowSize() + " + Thread.currentThread().getName() );
+ //_setNativeWindowSize(nativeDisplayHandle, iEventSourceHandle, x, y);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: setWindowResources() - ");
+ }
+
+ public void getCallbackSourceSizeChanged(int width, int height)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: getCallbackSourceSizeChanged() +");
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: getCallbackSourceSizeChanged() width = " + width + " height = " + height);
+ iControl.setSize(width, height);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: MMAeSWTDisplay.java: getCallbackSourceSizeChanged() +");
+ }
+
+ public void setContainerVisibilityToNative(boolean active)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ private native void _setVisible(int nativeDisplayHandle, boolean value);
+
+ private native void _setContainerVisible(int nativeDisplayHandle,
+ boolean value);
+
+ private native void _setFullScreenMode(int nativeDisplayHandle,
+ boolean value);
+
+ private native void _setWindowToNative(int nativeDisplayHandle,
+ int qwidgetHandle);
+
+ private native void _setNativeWindowSize(int nativeDisplayHandle,
+ int iEventSourceHandle, int width, int height);
+
+ private native void _setPosition(int nativeDisplayHandle,
+ int iEventSourceHandle, int uiControlLocationX,
+ int uiControlLocationY, int videoControlLocationX,
+ int videoControlLocationY);
+
+ private native void _setDisplaySize(int nativeDisplayHandle,
+ int iEventSourceHandle, int eSWTcontrolLocationX,
+ int eSWTcontrolLocationY);
+
+
+
+}
\ No newline at end of file
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java Wed Jun 23 18:07:10 2010 +0300
@@ -24,6 +24,7 @@
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Item;
import com.nokia.microedition.media.NativeError;
+import com.nokia.mj.impl.utils.Logger;
//import com.symbian.midp.runtime.MIDletExecutor;
import com.nokia.mj.impl.media.PlayerPermission;
@@ -102,6 +103,11 @@
// class name used to check if eswt is included
private static String ESWT_CONTROL = ".control";
+ //Contants for display type
+ private static final int DISPLAY_CANVAS = 0;
+ private static final int DISPLAY_VIDEOITEM = 1;
+ private static final int DISPLAY_ESWT = 2;
+
protected int iStatus = NOT_INITIALIZED;
// Needed for getting native handle from lcdui components
@@ -110,6 +116,7 @@
private VideoItem iVideoItem;
private Canvas iVideoCanvas;
private Item iItem ;
+ private int iGuiType;
BaseDisplay iDisplay;
// private MIDletInstance iMIDletInstance;
@@ -125,6 +132,11 @@
// for midlet foreground statelistening
//ToolkitInvoker iTlkitInvoker;
+ //ESWT
+ private org.eclipse.swt.widgets.Display eswtDisplay;
+ private Control iControl;
+ private ESWTProxyControl control;
+
private Finalizer mFinalizer = new Finalizer()
{
public void finalizeImpl()
@@ -191,24 +203,26 @@
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside setDisplaySize()");
+ //canvasdisplay.setDisplaySize( aWidth, aHeight);
+ //iDisplay.setDisplaySize(aWidth, aHeight);
- //canvasdisplay.setDisplaySize( aWidth, aHeight);
- iDisplay.setDisplaySize(aWidth, aHeight);
-
- /*
+ if (iGuiType == DISPLAY_ESWT)
+ {
+ iDisplay.setDisplaySize(aWidth, aHeight);
+ }
int ret = setDisplayProperty(aWidth, aHeight, SET_DISPLAY_SIZE);
if (ret < 0)
{
throw new MediaException("setDisplaySize() failed, SymbianOS error: "
- + ret);
+ + ret);
}
if (iStatus == USE_GUI_PRIMITIVE &&
iVideoItem != null) // with dynamic display mode item can be null
{
- iVideoItem.privateInvalidate();
+ //iVideoItem.privateInvalidate();
}
- */
+
}
/**
@@ -217,17 +231,19 @@
*/
public void setDisplayFullScreen(boolean aFullScreenMode) throws MediaException
{
- // checkState();
+ checkState();
+
if (iStatus == NOT_INITIALIZED)
{
throw new IllegalStateException(
"VideoControl.initDisplayMode() not called yet");
}
- /*
+
int ret;
if (aFullScreenMode)
{
- ret = setDisplayProperty(SET_DISPLAY_FULLSCREEN_TRUE);
+ iDisplay.setDisplayFullScreen(aFullScreenMode);
+ ret = setDisplayProperty(360,487,SET_DISPLAY_FULLSCREEN_TRUE);
}
else
{
@@ -239,10 +255,10 @@
throw new MediaException();
}
- */
+
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside setDisplayFullScreen()");
//canvasdisplay.setDisplayFullScreen( aFullScreenMode);
- iDisplay.setDisplayFullScreen(aFullScreenMode);
+// iDisplay.setDisplayFullScreen(aFullScreenMode);
}
@@ -253,7 +269,7 @@
*/
public void setDisplayLocation(int aX, int aY)
{
- // checkState();
+ checkState();
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"VideoControl.java :: setDisplayLocation x, y = " + aX + ","+ aY);
if (iStatus == USE_GUI_PRIMITIVE)
{
@@ -265,14 +281,14 @@
// This method only works when the USE_DIRECT_VIDEO mode is set.
throw new IllegalStateException();
}
- /*
- // cannot fail -> ignore return value
- setDisplayProperty(aX, aY, SET_DISPLAY_LOCATION);
- */
+
+ // cannot fail -> ignore return value
+ setDisplayProperty(aX, aY, SET_DISPLAY_LOCATION);
+
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside setDisplayLocation()");
//canvasdisplay.setDisplayLocation( aX , aY);
- iDisplay.setDisplayLocation(aX , aY);
+ //iDisplay.setDisplayLocation(aX , aY);
}
@@ -288,11 +304,11 @@
throw new IllegalStateException(
"VideoControl.initDisplayMode() not called yet");
}
- /*if (aVisible)
+ if (aVisible)
{
// Update the foreground or background state of the midlet before
// setting the visibility of the control
- updateForeground();
+ //updateForeground();
// cannot fail -> ignore return value
setDisplayProperty(SET_DISPLAY_VISIBLE_TRUE);
}
@@ -301,12 +317,12 @@
// cannot fail -> ignore return value
setDisplayProperty(SET_DISPLAY_VISIBLE_FALSE);
}
- */
+
Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,
" before iDisplay.setVisible()");
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"inside setVisible()");
- // canvasdisplay.setVisible( aVisible );
- iDisplay.setVisible(aVisible);
+
+ //iDisplay.setVisible(aVisible);
Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,
"after iDisplay.setVisible()");
@@ -320,18 +336,14 @@
*/
public int getDisplayWidth()
{
- /*
- checkState();
- if (iStatus == NOT_INITIALIZED)
- {
- throw new IllegalStateException(
- "VideoControl.initDisplayMode() not called yet");
- }
- int width = getControlProperty(PROPERTY_DISPLAY_WIDTH);
- return width;
- */
- //return canvasdisplay.getDisplayWidth( );
- return iDisplay.getDisplayWidth();
+ checkState();
+ if (iStatus == NOT_INITIALIZED)
+ {
+ throw new IllegalStateException(
+ "VideoControl.initDisplayMode() not called yet");
+ }
+ int width = getControlProperty(PROPERTY_DISPLAY_WIDTH);
+ return width;
}
/**
@@ -340,17 +352,17 @@
*/
public int getDisplayHeight()
{
- /* checkState();
- if (iStatus == NOT_INITIALIZED)
- {
- throw new IllegalStateException(
- "VideoControl.initDisplayMode() not called yet");
- }
- int height = getControlProperty(PROPERTY_DISPLAY_HEIGHT);
- return height;
+ checkState();
+ if (iStatus == NOT_INITIALIZED)
+ {
+ throw new IllegalStateException(
+ "VideoControl.initDisplayMode() not called yet");
+ }
+ int height = getControlProperty(PROPERTY_DISPLAY_HEIGHT);
+ return height;
- */
- return iDisplay.getDisplayHeight();
+
+ //return iDisplay.getDisplayHeight();
}
/**
@@ -359,15 +371,15 @@
*/
public int getDisplayX()
{
- /* checkState();
- if (iStatus == NOT_INITIALIZED)
- {
- return UNDEFINED_RETURN_VALUE;
- }
- int x = getControlProperty(PROPERTY_DISPLAY_X);
- return x;
- */
- return iDisplay.getDisplayX();
+ checkState();
+ if (iStatus == NOT_INITIALIZED)
+ {
+ return UNDEFINED_RETURN_VALUE;
+ }
+ int x = getControlProperty(PROPERTY_DISPLAY_X);
+ return x;
+
+ //return iDisplay.getDisplayX();
}
/**
@@ -376,7 +388,7 @@
*/
public int getDisplayY()
{
- /*
+
checkState();
if (iStatus == NOT_INITIALIZED)
{
@@ -385,8 +397,8 @@
int y = getControlProperty(PROPERTY_DISPLAY_Y);
return y;
- */
- return iDisplay.getDisplayY();
+
+ // return iDisplay.getDisplayY();
}
/**
@@ -395,16 +407,16 @@
*/
public int getSourceWidth()
{
- /* checkState();
- int width = getControlProperty(PROPERTY_SOURCE_WIDTH);
- if (width <= 0)
- {
- width = 1;
- }
- return width;
+ checkState();
+ int width = getControlProperty(PROPERTY_SOURCE_WIDTH);
+ if (width <= 0)
+ {
+ width = 1;
+ }
+ return width;
- */
- return iDisplay.getSourceWidth();
+
+ //return 0;//iDisplay.getSourceWidth();
}
/**
@@ -413,15 +425,15 @@
*/
public int getSourceHeight()
{
- /*checkState();
+ checkState();
int height = getControlProperty(PROPERTY_SOURCE_HEIGHT);
if (height <= 0)
{
height = 1;
}
return height;
- */
- return iDisplay.getSourceHeight();
+
+ //return 0;//iDisplay.getSourceHeight();
}
@@ -492,6 +504,14 @@
"initDisplayMode() already called successfully");
}
+ if (aArg != null && aArg.equals(Control.class.getName()))
+ {
+ eswtDisplay = org.eclipse.swt.widgets.Display.getDefault();
+ }
+ else
+ {
+ eswtDisplay = com.nokia.mj.impl.nokialcdui.LCDUIInvoker.getEswtDisplay();
+ }
if (aMode == USE_GUI_PRIMITIVE)
{
Object guiObject = null;
@@ -508,6 +528,20 @@
else // try load dynamic display mode
{
guiObject = initDynamicDisplayMode(aArg);
+
+ iControl = (Control)guiObject;
+
+ iDisplay = new MMAeSWTDisplay(iEventSource, iControl);
+ int handle = initNativeDisplay(iControl, iDisplay, iGuiType);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: VideoControl.java: initDisplayMode(): nativeDisplayHandle = " + handle);
+ iDisplay.setNativeHandle(handle);
+ ESWTProxyControl proxyControl = (ESWTProxyControl)iControl;
+ proxyControl.seteSWTDisplay(iDisplay);
+ proxyControl.setNativeDisplayHandle(handle);
+ //display.setWindowResources();
+
+ iStatus = USE_GUI_PRIMITIVE;
+ return iControl;
}
}
@@ -521,7 +555,7 @@
Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,
"VideoControl : creation of ItemDisplay");
- int handle = initNativeDisplay(iVideoItem, iDisplay, true);
+ int handle = initNativeDisplay(iVideoItem, iDisplay, DISPLAY_VIDEOITEM);
// here actual listener is added to iDisplay
iDisplay.setNativeHandle(handle);
iVideoItem.setNativeHandle(handle);
@@ -548,13 +582,14 @@
"For USE_DIRECT_VIDEO mode argument should not be null");
}
iVideoCanvas = (Canvas)aArg;
+ iGuiType = DISPLAY_CANVAS;
// MMAPI UI 3.x req.
iDisplay = new MMACanvasDisplay(iEventSource , iVideoCanvas);
Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"VideoControl.java: after eswt control got from canvas has added observer");
- int handle = initNativeDisplay(iVideoCanvas, iDisplay, false);
+ int handle = initNativeDisplay(iVideoCanvas, iDisplay, DISPLAY_CANVAS);
// here actual listener is added to iDisplay
iDisplay.setNativeHandle(handle);
// Window resource initialization is done to the native video player
@@ -593,7 +628,7 @@
* Initializes native display.
*
*/
- private int initNativeDisplay(Object aGuiObject, Object mmadisplay, boolean aGuiType)
+ private int initNativeDisplay(Object aGuiObject, Object mmadisplay, int aGuiType)
{
int handle = _initDisplayMode(iControlHandle,
iEventSource,
@@ -613,7 +648,8 @@
{
return _getControlProperty(iControlHandle,
iEventSource,
- aPropertyType);
+ aPropertyType,
+ iGuiType);
}
/**
@@ -629,7 +665,8 @@
iEventSource,
aParamA,
aParamB,
- aPropertyType);
+ aPropertyType,
+ iGuiType);
}
/**
@@ -643,7 +680,8 @@
iEventSource,
0,
0,
- aPropertyType);
+ aPropertyType,
+ iGuiType);
}
/**
@@ -669,13 +707,23 @@
*/
private Object initDynamicDisplayMode(Object aMode)
{
- MMAGUIFactory guiFactory = null;
+ //MMAGUIFactory guiFactory = null;
try
{
- String className = ((String)aMode).toLowerCase() +
- GUI_FACTORY_CLASS_NAME;
- Class guiClass = Class.forName(className);
- guiFactory = (MMAGUIFactory)guiClass.newInstance();
+ // String className = ((String)aMode).toLowerCase();
+ //GUI_FACTORY_CLASS_NAME;*/
+ Class guiClass = Class.forName((String)aMode);
+ //guiFactory = (MMAGUIFactory)guiClass.newInstance();
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: VideoControl.java: After loading class");
+ eswtDisplay.syncExec(new Runnable()
+ {
+ public void run()
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: VideoControl.java: Before creating ESWTProxyControl.");
+ control = new ESWTProxyControl();
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: VideoControl.java: ESWTProxyControl created.");
+ }
+ });
}
catch (ClassNotFoundException cnfe)
{
@@ -684,19 +732,19 @@
"Mode not supported or invalid, " +
"valid modes are USE_DIRECT_VIDEO and USE_GUI_PRIMITIVE");
}
- catch (IllegalAccessException iae)
- {
- // if the class or initializer is not accessible
- throw new IllegalArgumentException("Mode: " + aMode +
- " caused " + iae);
- }
- catch (InstantiationException ie)
- {
- // if an application tries to instantiate an abstract class or an
- // interface, or if the instantiation fails for some other reason
- throw new IllegalArgumentException("Mode: " + aMode +
- " caused " + ie);
- }
+ /* catch (IllegalAccessException iae)
+ {
+ // if the class or initializer is not accessible
+ throw new IllegalArgumentException("Mode: " + aMode +
+ " caused " + iae);
+ }
+ catch (InstantiationException ie)
+ {
+ // if an application tries to instantiate an abstract class or an
+ // interface, or if the instantiation fails for some other reason
+ throw new IllegalArgumentException("Mode: " + aMode +
+ " caused " + ie);
+ }*/
catch (ClassCastException cce)
{
// Thrown to indicate that the code has attempted to cast an
@@ -705,12 +753,13 @@
" caused " + cce);
}
- Object guiObject = guiFactory.initDisplayMode();
+ //Object guiObject = guiFactory.initDisplayMode();
// initNativeDisplay return handle MMMADirectContainer, 0 parameter
// indicates that dynamic display will be used
// MMAPI UI 3.x req.
// guiFactory.setContentHandle(initNativeDisplay(guiObject, 0));
- return guiObject;
+ iGuiType = DISPLAY_ESWT;
+ return control;
}
/**
@@ -871,13 +920,15 @@
private native int _getControlProperty(int aControlHandle,
int aEventSourceHandle,
- int aPropertyType);
+ int aPropertyType,
+ int aGuiType);
private native int _setDisplayProperty(int aControlHandle,
int aEventSourceHandle,
int aParamA,
int aParamB,
- int aPropertyType);
+ int aPropertyType,
+ int aGuiType);
private native int _getSnapshot(int aControlHandle,
int aEventSourceHandle,
@@ -887,7 +938,7 @@
int aEventSourceHandle,
Object aJavaDisplay,
Object aJavaDisplayObject,
- boolean aGuiTYpe);
+ int aGuiTYpe);
private native int _setForeground(int aControlHandle,
int aEventSourceHandle,
int aIsForeground);
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/VideoItem.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/control/VideoItem.java Wed Jun 23 18:07:10 2010 +0300
@@ -23,6 +23,7 @@
import javax.microedition.media.PlayerListener;
import javax.microedition.media.Player;
import javax.microedition.lcdui.*;
+import com.nokia.mj.impl.utils.Logger;
/**
* Item for VideoControl.
@@ -51,9 +52,10 @@
// from PlayerListener
public void playerUpdate(Player aPlayer, String aEvent, Object aEventData)
{
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"VideoItem.Playerupdate +");
if (aEvent == SIZE_CHANGED)
{
- invalidate();
+ //invalidate();
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/javasrc/org/eclipse/swt/widgets/ESWTProxyControl.java Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,436 @@
+/*
+* 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 org.eclipse.swt.widgets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.MouseMoveListener;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import com.nokia.mj.impl.utils.Logger;
+
+import com.nokia.microedition.media.control.BaseDisplay;
+
+
+public class ESWTProxyControl extends Control
+{
+ /**
+ * this will be actual Shell, for which this class is acting like proxy
+ */
+ Control iControl;
+ BaseDisplay mmaDisplay;
+ private int iNativeDisplayHandle;
+
+ public ESWTProxyControl()
+ {
+ //super(Display.getDefault().getActiveShell(), SWT.BORDER);
+ }
+
+ public void setNativeDisplayHandle(int aNativeDisplayHandle)
+ {
+ this.iNativeDisplayHandle = aNativeDisplayHandle;
+ }
+ public void seteSWTDisplay(BaseDisplay aDisplay)
+ {
+ this.mmaDisplay = aDisplay;
+ }
+
+ /**
+ * Actual Control will be created here
+ */
+ public boolean setParent(Composite parent)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: setParent()+");
+ int sourceWidth=0;
+ int sourceHeight=0;
+ //TODO Throw exception if null
+ if (parent == null)
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: setParent(): parent is null");
+ iControl= new Shell((Shell)parent);
+ int sourceSize[] = _getSourceSize(iNativeDisplayHandle);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: setParent(): int[] length: " + sourceSize.length);
+
+ sourceWidth = sourceSize[0];
+ sourceHeight = sourceSize[1];
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: setParent(): sourceWidth= " + sourceWidth + " sourceHeight= " + sourceHeight);
+
+ ((Shell)iControl).open();
+ ((Shell)iControl).setSize(sourceWidth, sourceHeight);
+
+ new Thread(new Runnable()
+ {
+ public void run()
+ {
+ mmaDisplay.setWindowResources(null);
+ }
+ }).start();
+
+ return true;
+ }
+
+ /**
+ *
+ */
+ public void addControlListener(ControlListener aListener)
+ {
+ if (iControl!=null)
+ {
+ iControl.addControlListener(aListener);
+ }
+ }
+ /**
+ *
+ */
+ public void addFocusListener(FocusListener listener)
+ {
+ if (iControl!=null)iControl.addFocusListener(listener);
+ }
+ /**
+ *
+ */
+ public void addKeyListener(KeyListener listener)
+ {
+ if (iControl!=null)iControl.addKeyListener(listener);
+ }
+ public void addMouseListener(MouseListener listener)
+ {
+ if (iControl!=null)iControl.addMouseListener(listener);
+ }
+ public void addMouseMoveListener(MouseMoveListener listener)
+ {
+ if (iControl!=null)iControl.addMouseMoveListener(listener);
+ }
+ /**
+ *
+ */
+ public void addPaintListener(PaintListener aListener)
+ {
+ if (iControl!=null)iControl.addPaintListener(aListener);
+
+ }
+
+ public void addTraverseListener(TraverseListener listener)
+ {
+ if (iControl!=null)iControl.addTraverseListener(listener);
+ }
+ public Point computeSize(int wHint,
+ int hHint)
+ {
+ Point point=null;
+ if (iControl!=null)point=iControl.computeSize(wHint, hHint);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ProxyControl::computeSize()"+point);
+ return point;
+ }
+
+ public Point computeSize(int wHint,
+ int hHint,
+ boolean changed)
+ {
+ Point point=null;
+ if (iControl!=null)point=iControl.computeSize(wHint, hHint,changed);
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ProxyControl::computeSize()"+point+"Bolean changed "+changed);
+ return point;
+ }
+
+ public Color getBackground()
+ {
+ Color color=null;
+ if (iControl!=null)color=iControl.getBackground();
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"ProxyControl::getBackground()");
+ return color;
+ }
+ public int getBorderWidth()
+ {
+ if (iControl!=null)return iControl.getBorderWidth();
+ else return 0;
+ }
+ public Rectangle getBounds()
+ {
+ if (iControl!=null) return iControl.getBounds();
+ else return null;
+ }
+ public boolean getEnabled()
+ {
+ if (iControl!=null) return iControl.getEnabled();
+ else return false;
+ }
+ public Font getFont()
+ {
+ if (iControl!=null)return iControl.getFont();
+ else return null;
+ }
+ public Color getForeground()
+ {
+ if (iControl!=null) return iControl.getForeground();
+ else return null;
+ }
+
+ public java.lang.Object getLayoutData()
+ {
+ if (iControl!=null) return iControl.getLayoutData();
+ else return null;
+ }
+
+ public Point getLocation()
+ {
+ if (iControl!=null) return iControl.getLocation();
+ else return null;
+ }
+
+ public Menu getMenu()
+ {
+ if (iControl!=null) return iControl.getMenu();
+ else return null;
+ }
+ public Composite getParent()
+ {
+ if (iControl!=null) return iControl.getParent();
+ else return null;
+ }
+ public Shell getShell()
+ {
+ if (iControl!=null)
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: getShell(): iControl is not null");
+ return (Shell)iControl;//.getShell();
+ }
+ else
+ {
+ Logger.LOG(Logger.EJavaMMAPI,Logger.EInfo,"MMAPI: ESWTProxyControl.java: getShell(): iControl is null");
+ return null;
+ }
+ }
+ public Point getSize()
+ {
+ if (iControl!=null) return iControl.getSize();
+ else return null;
+ }
+
+ public java.lang.String getToolTipText()
+ {
+ if (iControl!=null) return iControl.getToolTipText();
+ else return null;
+ }
+ public boolean getVisible()
+ {
+ if (iControl!=null) return iControl.getVisible();
+ else return false;
+ }
+ public boolean isEnabled()
+ {
+ if (iControl!=null) return iControl.isEnabled();
+ else return false;
+ }
+
+ public boolean isFocusControl()
+ {
+ if (iControl!=null) return iControl.isFocusControl();
+ else return false;
+ }
+ public boolean isReparentable()
+ {
+ if (iControl!=null) return iControl.isReparentable();
+ else return false;
+ }
+
+ public boolean isVisible()
+ {
+ if (iControl!=null)return iControl.isVisible();
+ else return false;
+ }
+ public void moveAbove(Control control)
+ {
+ if (iControl!=null) iControl.moveAbove(control);
+ }
+ public void moveBelow(Control control)
+ {
+ if (iControl!=null) iControl.moveBelow(control);
+ }
+ public void pack()
+ {
+ if (iControl!=null) iControl.pack();
+ }
+ public void pack(boolean changed)
+ {
+ if (iControl!=null) iControl.pack(changed);
+ }
+ public void redraw()
+ {
+ if (iControl!=null) iControl.redraw();
+ }
+ public void redraw(int x,
+ int y,
+ int width,
+ int height,
+ boolean all)
+ {
+ if (iControl!=null) iControl.redraw(x,y,width,height, all);
+ }
+ public void removeControlListener(ControlListener listener)
+ {
+ if (iControl!=null) iControl.removeControlListener(listener);
+ }
+ public void removeFocusListener(FocusListener listener)
+ {
+ if (iControl!=null) iControl.removeFocusListener(listener);
+ }
+ public void removeMouseListener(MouseListener listener)
+ {
+ if (iControl!=null) iControl.removeMouseListener(listener);
+ }
+ public void removeMouseMoveListener(MouseMoveListener listener)
+ {
+ if (iControl!=null) iControl.removeMouseMoveListener(listener);
+ }
+ public void removePaintListener(PaintListener listener)
+ {
+ if (iControl!=null)iControl.removePaintListener(listener);
+ }
+ public void removeTraverseListener(TraverseListener listener)
+ {
+ if (iControl!=null)iControl.removeTraverseListener(listener);
+ }
+ public void setBounds(int x,
+ int y,
+ int width,
+ int height)
+ {
+ if (iControl!=null)iControl.setBounds(x, y, width, height);
+ }
+ public void setBounds(Rectangle rect)
+ {
+ if (iControl!=null)iControl.setBounds(rect);
+ }
+ public void setCapture(boolean capture)
+ {
+ if (iControl!=null)iControl.setCapture(capture);
+ }
+ public void setEnabled(boolean enabled)
+ {
+ if (iControl!=null)iControl.setEnabled(enabled);
+ }
+ public boolean setFocus()
+ {
+ if (iControl!=null) return iControl.setFocus();
+ else return false;
+ }
+ public void setFont(Font font)
+ {
+ if (iControl!=null)iControl.setFont(font);
+ }
+ public void setForeground(Color color)
+ {
+ if (iControl!=null)iControl.setForeground(color);
+ }
+ public void setLayoutData(java.lang.Object layoutData)
+ {
+ if (iControl!=null)iControl.setLayoutData(layoutData);
+ }
+ public void setLocation(int x,
+ int y)
+ {
+ if (iControl!=null)iControl.setLocation(x, y);
+ }
+
+ public void setLocation(Point location)
+ {
+ if (iControl!=null)iControl.setLocation(location);
+ }
+ public void setMenu(Menu menu)
+ {
+ if (iControl!=null)iControl.setMenu(menu);
+ }
+ public void setRedraw(boolean redraw)
+ {
+ if (iControl!=null)iControl.setRedraw(redraw);
+ }
+ public void setSize(int width,
+ int height)
+ {
+ if (iControl!=null) iControl.setSize(width, height);
+ }
+
+ public void setSize(Point size)
+ {
+ if (iControl!=null) iControl.setSize(size);
+ }
+ public void setToolTipText(java.lang.String string)
+ {
+ if (iControl!=null)iControl.setToolTipText(string);
+ }
+ public void setVisible(boolean visible)
+ {
+ if (iControl!=null)iControl.setVisible(visible);
+ }
+ public Point toControl(int x,
+ int y)
+ {
+ if (iControl!=null)return iControl.toControl(x, y);
+ else return null;
+ }
+ public Point toControl(Point point)
+ {
+ if (iControl!=null) return iControl.toControl(point);
+ else return null;
+ }
+ public Point toDisplay(int x,
+ int y)
+ {
+ if (iControl!=null)return iControl.toDisplay(x,y);
+ else return null;
+ }
+ public Point toDisplay(Point point)
+ {
+ if (iControl!=null)return iControl.toDisplay(point);
+ else return null;
+ }
+ public boolean traverse(int traversal)
+ {
+ if (iControl!=null)return iControl.traverse(traversal);
+ else return false;
+ }
+ public void update()
+ {
+ if (iControl!=null)iControl.update();
+ }
+
+ public void checkSubclass()
+ {
+ // do nothing,sub-classing allowed
+ }
+
+ protected void internal_createHandle()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ private native int[] _getSourceSize(int aNativeDisplayHandle);
+}
--- a/javauis/mmapi_qt/baseline/javasrc/org/eclipse/swt/widgets/ProxyControl.java Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/org/eclipse/swt/widgets/ProxyControl.java Wed Jun 23 18:07:10 2010 +0300
@@ -31,43 +31,46 @@
/**
* A Proxy Class for eSWT control.
- *
+ *
* Since re-parenting is not supported, thats why this class were needed.
* When user will call the setParent function of Control(means this class), this class will create
- * the actual Control, for which it will be acting like a proxy. All further call to any function of
- * this class will be delegated to the Control object, created in the setParent method.
- *
+ * the actual Control, for which it will be acting like a proxy. All further call to any function of
+ * this class will be delegated to the Control object, created in the setParent method.
+ *
* @author d35kumar
*/
-public class ProxyControl extends Control {
+public class ProxyControl extends Control
+{
+
+ /**
+ * this is actual Control(Shell), for which this class is acting like proxy
+ */
+ Control iControl;
+
+ /**
+ * Dimesion of this shell needs to be set
+ */
+ Point iDimension;
- /**
- * this is actual Control(Shell), for which this class is acting like proxy
- */
- Control iControl;
-
- /**
- * Dimesion of this shell needs to be set
- */
- Point iDimension;
-
- /**
- * @param aDimension Dimension to be set for the control class
- */
- public ProxyControl(Point aDimension) {
- iDimension=aDimension;
- }
-
- /**
- * Creates the actual control
- * @return true if it returns properly,
- * or false if any exception is thrown during the execution of this function
- */
- public boolean setParent(Composite aParent){
- if (aParent == null)
+ /**
+ * @param aDimension Dimension to be set for the control class
+ */
+ public ProxyControl(Point aDimension)
+ {
+ iDimension=aDimension;
+ }
+
+ /**
+ * Creates the actual control
+ * @return true if it returns properly,
+ * or false if any exception is thrown during the execution of this function
+ */
+ public boolean setParent(Composite aParent)
+ {
+ if (aParent == null)
{
- SWT.error(SWT.ERROR_NULL_ARGUMENT);
- return false;
+ SWT.error(SWT.ERROR_NULL_ARGUMENT);
+ return false;
}
if (aParent.isDisposed())
{
@@ -78,278 +81,348 @@
// {
// return true;
// }
- iControl= new Shell((Shell)aParent);
- ((Shell)iControl).open();
- iControl.setSize(iDimension);
- return true;
- }
-
- /**
- * Passes the call to iControl, if it is not null, otherwise return silently
- */
- public void addControlListener(ControlListener aListener){
- if(iControl!=null){
- iControl.addControlListener(aListener);
- }
- }
- /**
- *
- */
- public void addFocusListener(FocusListener listener){
- if(iControl!=null)iControl.addFocusListener(listener);
- }
- /**
- *
- */
- public void addKeyListener(KeyListener listener){
- if(iControl!=null)iControl.addKeyListener(listener);
- }
- public void addMouseListener(MouseListener listener){
- if(iControl!=null)iControl.addMouseListener(listener);
- }
- public void addMouseMoveListener(MouseMoveListener listener){
- if(iControl!=null)iControl.addMouseMoveListener(listener);
- }
- /**
- *
- */
- public void addPaintListener(PaintListener aListener){
- if(iControl!=null)iControl.addPaintListener(aListener);
-
- }
-
- public void addTraverseListener(TraverseListener listener){
- if(iControl!=null)iControl.addTraverseListener(listener);
- }
- public Point computeSize(int wHint,
- int hHint){
- Point point=null;
- if(iControl!=null)point=iControl.computeSize(wHint, hHint);
- return point;
- }
-
- public Point computeSize(int wHint,
- int hHint,
- boolean changed){
- Point point=null;
- if(iControl!=null)point=iControl.computeSize(wHint, hHint,changed);
- return point;
- }
-
- public Color getBackground(){
- Color color=null;
- if(iControl!=null)color=iControl.getBackground();
- return color;
- }
- public int getBorderWidth(){
- if(iControl!=null)return iControl.getBorderWidth();
- else return 0;
- }
- public Rectangle getBounds(){
- if(iControl!=null) return iControl.getBounds();
- else return null;
- }
- public boolean getEnabled(){
- if(iControl!=null) return iControl.getEnabled();
- else return false;
- }
- public Font getFont(){
- if(iControl!=null)return iControl.getFont();
- else return null;
- }
- public Color getForeground(){
- if(iControl!=null) return iControl.getForeground();
- else return null;
- }
-
- public java.lang.Object getLayoutData(){
- if(iControl!=null) return iControl.getLayoutData();
- else return null;
- }
-
- public Point getLocation(){
- if(iControl!=null) return iControl.getLocation();
- else return null;
- }
-
- public Menu getMenu(){
- if(iControl!=null) return iControl.getMenu();
- else return null;
- }
- public Composite getParent(){
- if(iControl!=null) return iControl.getParent();
- else return null;
- }
- public Shell getShell(){
- if(iControl!=null) return (Shell)iControl;
- else return null;
- }
- public Point getSize(){
- if(iControl!=null) return iControl.getSize();
- else return null;
- }
-
- public java.lang.String getToolTipText(){
- if(iControl!=null) return iControl.getToolTipText();
- else return null;
- }
- public boolean getVisible(){
- if(iControl!=null) return iControl.getVisible();
- else return false;
- }
- public boolean isEnabled(){
- if(iControl!=null) return iControl.isEnabled();
- else return false;
- }
-
- public boolean isFocusControl(){
- if(iControl!=null) return iControl.isFocusControl();
- else return false;
- }
- public boolean isReparentable(){
- if(iControl!=null) return iControl.isReparentable();
- else return false;
- }
-
- public boolean isVisible(){
- if(iControl!=null)return iControl.isVisible();
- else return false;
- }
- public void moveAbove(Control control){
- if(iControl!=null) iControl.moveAbove(control);
- }
- public void moveBelow(Control control){
- if(iControl!=null) iControl.moveBelow(control);
- }
- public void pack(){
- if(iControl!=null) iControl.pack();
- }
- public void pack(boolean changed){
- if(iControl!=null) iControl.pack(changed);
- }
- public void redraw(){
- if(iControl!=null) iControl.redraw();
- }
- public void redraw(int x,
- int y,
- int width,
- int height,
- boolean all){
- if(iControl!=null) iControl.redraw(x,y,width,height, all);
- }
- public void removeControlListener(ControlListener listener){
- if(iControl!=null) iControl.removeControlListener(listener);
- }
- public void removeFocusListener(FocusListener listener){
- if(iControl!=null) iControl.removeFocusListener(listener);
- }
- public void removeMouseListener(MouseListener listener){
- if(iControl!=null) iControl.removeMouseListener(listener);
- }
- public void removeMouseMoveListener(MouseMoveListener listener){
- if(iControl!=null) iControl.removeMouseMoveListener(listener);
- }
- public void removePaintListener(PaintListener listener){
- if(iControl!=null)iControl.removePaintListener(listener);
- }
- public void removeTraverseListener(TraverseListener listener){
- if(iControl!=null)iControl.removeTraverseListener(listener);
- }
- public void setBounds(int x,
- int y,
- int width,
- int height){
- if(iControl!=null)iControl.setBounds(x, y, width, height);
- }
- public void setBounds(Rectangle rect){
- if(iControl!=null)iControl.setBounds(rect);
- }
- public void setCapture(boolean capture){
- if(iControl!=null)iControl.setCapture(capture);
- }
- public void setEnabled(boolean enabled){
- if(iControl!=null)iControl.setEnabled(enabled);
- }
- public boolean setFocus(){
- if(iControl!=null) return iControl.setFocus();
- else return false;
- }
- public void setFont(Font font){
- if(iControl!=null)iControl.setFont(font);
- }
- public void setForeground(Color color){
- if(iControl!=null)iControl.setForeground(color);
- }
- public void setLayoutData(java.lang.Object layoutData){
- if(iControl!=null)iControl.setLayoutData(layoutData);
- }
- public void setLocation(int x,
- int y){
- if(iControl!=null)iControl.setLocation(x, y);
- }
-
- public void setLocation(Point location){
- if(iControl!=null)iControl.setLocation(location);
- }
- public void setMenu(Menu menu){
- if(iControl!=null)iControl.setMenu(menu);
- }
- public void setRedraw(boolean redraw){
- if(iControl!=null)iControl.setRedraw(redraw);
- }
- public void setSize(int width,
- int height){
- if(iControl!=null) iControl.setSize(width, height);
- }
-
- public void setSize(Point size){
- if(iControl!=null) iControl.setSize(size);
- }
- public void setToolTipText(java.lang.String string){
- if(iControl!=null)iControl.setToolTipText(string);
- }
- public void setVisible(boolean visible){
- if(iControl!=null)iControl.setVisible(visible);
- }
- public Point toControl(int x,
- int y){
- if(iControl!=null)return iControl.toControl(x, y);
- else return null;
- }
- public Point toControl(Point point){
- if(iControl!=null) return iControl.toControl(point);
- else return null;
- }
- public Point toDisplay(int x,
- int y){
- if(iControl!=null)return iControl.toDisplay(x,y);
- else return null;
- }
- public Point toDisplay(Point point){
- if(iControl!=null)return iControl.toDisplay(point);
- else return null;
- }
- public boolean traverse(int traversal){
- if(iControl!=null)return iControl.traverse(traversal);
- else return false;
- }
- public void update(){
- if(iControl!=null)iControl.update();
- }
-
- public void checkSubclass() {
- // do nothing,sub-classing allowed
- }
-
- /**
- * Used in toString function
- * @return class name with full path
- */
- String getNameText () {
- return "org.eclipse.swt.widgets.ProxyControl";
- }
- public String toString(){
- return "org.eclipse.swt.widgets.ProxyControl";
- }
+ iControl= new Shell((Shell)aParent);
+ ((Shell)iControl).open();
+ iControl.setSize(iDimension);
+ return true;
+ }
+
+ /**
+ * Passes the call to iControl, if it is not null, otherwise return silently
+ */
+ public void addControlListener(ControlListener aListener)
+ {
+ if (iControl!=null)
+ {
+ iControl.addControlListener(aListener);
+ }
+ }
+ /**
+ *
+ */
+ public void addFocusListener(FocusListener listener)
+ {
+ if (iControl!=null)iControl.addFocusListener(listener);
+ }
+ /**
+ *
+ */
+ public void addKeyListener(KeyListener listener)
+ {
+ if (iControl!=null)iControl.addKeyListener(listener);
+ }
+ public void addMouseListener(MouseListener listener)
+ {
+ if (iControl!=null)iControl.addMouseListener(listener);
+ }
+ public void addMouseMoveListener(MouseMoveListener listener)
+ {
+ if (iControl!=null)iControl.addMouseMoveListener(listener);
+ }
+ /**
+ *
+ */
+ public void addPaintListener(PaintListener aListener)
+ {
+ if (iControl!=null)iControl.addPaintListener(aListener);
+
+ }
+
+ public void addTraverseListener(TraverseListener listener)
+ {
+ if (iControl!=null)iControl.addTraverseListener(listener);
+ }
+ public Point computeSize(int wHint,
+ int hHint)
+ {
+ Point point=null;
+ if (iControl!=null)point=iControl.computeSize(wHint, hHint);
+ return point;
+ }
+
+ public Point computeSize(int wHint,
+ int hHint,
+ boolean changed)
+ {
+ Point point=null;
+ if (iControl!=null)point=iControl.computeSize(wHint, hHint,changed);
+ return point;
+ }
+
+ public Color getBackground()
+ {
+ Color color=null;
+ if (iControl!=null)color=iControl.getBackground();
+ return color;
+ }
+ public int getBorderWidth()
+ {
+ if (iControl!=null)return iControl.getBorderWidth();
+ else return 0;
+ }
+ public Rectangle getBounds()
+ {
+ if (iControl!=null) return iControl.getBounds();
+ else return null;
+ }
+ public boolean getEnabled()
+ {
+ if (iControl!=null) return iControl.getEnabled();
+ else return false;
+ }
+ public Font getFont()
+ {
+ if (iControl!=null)return iControl.getFont();
+ else return null;
+ }
+ public Color getForeground()
+ {
+ if (iControl!=null) return iControl.getForeground();
+ else return null;
+ }
+
+ public java.lang.Object getLayoutData()
+ {
+ if (iControl!=null) return iControl.getLayoutData();
+ else return null;
+ }
+
+ public Point getLocation()
+ {
+ if (iControl!=null) return iControl.getLocation();
+ else return null;
+ }
+
+ public Menu getMenu()
+ {
+ if (iControl!=null) return iControl.getMenu();
+ else return null;
+ }
+ public Composite getParent()
+ {
+ if (iControl!=null) return iControl.getParent();
+ else return null;
+ }
+ public Shell getShell()
+ {
+ if (iControl!=null) return (Shell)iControl;
+ else return null;
+ }
+ public Point getSize()
+ {
+ if (iControl!=null) return iControl.getSize();
+ else return null;
+ }
+
+ public java.lang.String getToolTipText()
+ {
+ if (iControl!=null) return iControl.getToolTipText();
+ else return null;
+ }
+ public boolean getVisible()
+ {
+ if (iControl!=null) return iControl.getVisible();
+ else return false;
+ }
+ public boolean isEnabled()
+ {
+ if (iControl!=null) return iControl.isEnabled();
+ else return false;
+ }
+
+ public boolean isFocusControl()
+ {
+ if (iControl!=null) return iControl.isFocusControl();
+ else return false;
+ }
+ public boolean isReparentable()
+ {
+ if (iControl!=null) return iControl.isReparentable();
+ else return false;
+ }
+
+ public boolean isVisible()
+ {
+ if (iControl!=null)return iControl.isVisible();
+ else return false;
+ }
+ public void moveAbove(Control control)
+ {
+ if (iControl!=null) iControl.moveAbove(control);
+ }
+ public void moveBelow(Control control)
+ {
+ if (iControl!=null) iControl.moveBelow(control);
+ }
+ public void pack()
+ {
+ if (iControl!=null) iControl.pack();
+ }
+ public void pack(boolean changed)
+ {
+ if (iControl!=null) iControl.pack(changed);
+ }
+ public void redraw()
+ {
+ if (iControl!=null) iControl.redraw();
+ }
+ public void redraw(int x,
+ int y,
+ int width,
+ int height,
+ boolean all)
+ {
+ if (iControl!=null) iControl.redraw(x,y,width,height, all);
+ }
+ public void removeControlListener(ControlListener listener)
+ {
+ if (iControl!=null) iControl.removeControlListener(listener);
+ }
+ public void removeFocusListener(FocusListener listener)
+ {
+ if (iControl!=null) iControl.removeFocusListener(listener);
+ }
+ public void removeMouseListener(MouseListener listener)
+ {
+ if (iControl!=null) iControl.removeMouseListener(listener);
+ }
+ public void removeMouseMoveListener(MouseMoveListener listener)
+ {
+ if (iControl!=null) iControl.removeMouseMoveListener(listener);
+ }
+ public void removePaintListener(PaintListener listener)
+ {
+ if (iControl!=null)iControl.removePaintListener(listener);
+ }
+ public void removeTraverseListener(TraverseListener listener)
+ {
+ if (iControl!=null)iControl.removeTraverseListener(listener);
+ }
+ public void setBounds(int x,
+ int y,
+ int width,
+ int height)
+ {
+ if (iControl!=null)iControl.setBounds(x, y, width, height);
+ }
+ public void setBounds(Rectangle rect)
+ {
+ if (iControl!=null)iControl.setBounds(rect);
+ }
+ public void setCapture(boolean capture)
+ {
+ if (iControl!=null)iControl.setCapture(capture);
+ }
+ public void setEnabled(boolean enabled)
+ {
+ if (iControl!=null)iControl.setEnabled(enabled);
+ }
+ public boolean setFocus()
+ {
+ if (iControl!=null) return iControl.setFocus();
+ else return false;
+ }
+ public void setFont(Font font)
+ {
+ if (iControl!=null)iControl.setFont(font);
+ }
+ public void setForeground(Color color)
+ {
+ if (iControl!=null)iControl.setForeground(color);
+ }
+ public void setLayoutData(java.lang.Object layoutData)
+ {
+ if (iControl!=null)iControl.setLayoutData(layoutData);
+ }
+ public void setLocation(int x,
+ int y)
+ {
+ if (iControl!=null)iControl.setLocation(x, y);
+ }
+
+ public void setLocation(Point location)
+ {
+ if (iControl!=null)iControl.setLocation(location);
+ }
+ public void setMenu(Menu menu)
+ {
+ if (iControl!=null)iControl.setMenu(menu);
+ }
+ public void setRedraw(boolean redraw)
+ {
+ if (iControl!=null)iControl.setRedraw(redraw);
+ }
+ public void setSize(int width,
+ int height)
+ {
+ if (iControl!=null) iControl.setSize(width, height);
+ }
+
+ public void setSize(Point size)
+ {
+ if (iControl!=null) iControl.setSize(size);
+ }
+ public void setToolTipText(java.lang.String string)
+ {
+ if (iControl!=null)iControl.setToolTipText(string);
+ }
+ public void setVisible(boolean visible)
+ {
+ if (iControl!=null)iControl.setVisible(visible);
+ }
+ public Point toControl(int x,
+ int y)
+ {
+ if (iControl!=null)return iControl.toControl(x, y);
+ else return null;
+ }
+ public Point toControl(Point point)
+ {
+ if (iControl!=null) return iControl.toControl(point);
+ else return null;
+ }
+ public Point toDisplay(int x,
+ int y)
+ {
+ if (iControl!=null)return iControl.toDisplay(x,y);
+ else return null;
+ }
+ public Point toDisplay(Point point)
+ {
+ if (iControl!=null)return iControl.toDisplay(point);
+ else return null;
+ }
+ public boolean traverse(int traversal)
+ {
+ if (iControl!=null)return iControl.traverse(traversal);
+ else return false;
+ }
+ public void update()
+ {
+ if (iControl!=null)iControl.update();
+ }
+
+ public void checkSubclass()
+ {
+ // do nothing,sub-classing allowed
+ }
+
+ protected void internal_createHandle()
+ {
+ // TODO Auto-generated method stub
+
+ }
+ /**
+ * Used in toString function
+ * @return class name with full path
+ */
+ String getNameText()
+ {
+ return "org.eclipse.swt.widgets.ProxyControl";
+ }
+ public String toString()
+ {
+ return "org.eclipse.swt.widgets.ProxyControl";
+ }
}
--- a/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -18,7 +18,7 @@
// Include Files
#include <logger.h>
-#include <W32STD.H>
+#include <w32std.h>
#include "cmmasurfacewindow.h"
#include "cmmaplayer.h"
@@ -106,7 +106,15 @@
//iDisplay->UIGetCallback(*this,
// CMMASurfaceWindow::ESetClipRect);
// MMAPI UI 3.x req.
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetClipRect);
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::ESetClipRect);
+ }
+ else
+ {
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetClipRect);
+ }
}
}
else if (MMMADisplay::EUiThread == aThreadType)
@@ -148,7 +156,7 @@
// setting video draw rect and adjusting it to window
TRect drawRect = contentRect;
drawRect.Move(relativeParentRect.iTl);
-
+ LOG2(EJavaMMAPI, EInfo, "CMMASurfaceWindow::SetClipRect(): iRWindowRect size = %d x %d", iRWindowRect.Width(), iRWindowRect.Height());
TRect clipRect(0,0,iRWindowRect.Width(),iRWindowRect.Height());
TRAPD(error, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow,
clipRect, // new clip rect
@@ -158,8 +166,8 @@
0.0f, // ignore
EVideoRotationNone,
EAutoScaleBestFit,
- EHorizontalAlignLeft,
- EVerticalAlignTop,
+ EHorizontalAlignCenter,
+ EVerticalAlignCenter,
(RWindow*)iWindow));
LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetClipRect -");
@@ -176,12 +184,21 @@
aRect.iBr.iX, aRect.iBr.iY);
iContentRect = aRect;
+ LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect aRect %d",iContentRect);
if (iDisplay)
{
// iDisplay->UIGetCallback( *this,
// CMMASurfaceWindow::ESetDrawRect );
// MMAPI UI 3.x req.
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect);
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::ESetDrawRect);
+ }
+ else
+ {
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect);
+ }
LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect, after GetCallbackInUiThread");
}
}
@@ -202,7 +219,7 @@
LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: no MediaClientVideoDisplay set, aborting -");
return;
}
- iVisible = true;
+ //iVisible = true;
if (iWindow)
{
TRect contentRect;
@@ -318,23 +335,23 @@
if (aUseEventServer)
{
- //TInt error = StaticRedrawVideo(*this);
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect);
- // if (KErrNone != error)
- // {
- //ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::SetVisible, StaticRedrawVideo error = %d", error);
- // }
+ TInt error = StaticRedrawVideo(*this);
+ if (KErrNone != error)
+ {
+ LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible, StaticRedrawVideo error = %d", error);
+ }
}
- else // in MMA thread, so switch to UI thread
+ else
{
if (iDisplay)
{
- //iDisplay->UIGetCallback(*this,
- // CMMASurfaceWindow::ESetDrawRect );
- //MMAPI UI 3.x req.
+
+ LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,calling GetCallbackInUiThread");
iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect);
- LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,GetCallbackInUiThread");
+ LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,after GetCallbackInUiThread");
+
}
+
}
}
}
@@ -376,7 +393,15 @@
if (iDisplay)
{
// Clear the resources created within the old Display
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ECleanVideoDisplay);
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::ECleanVideoDisplay);
+ }
+ else
+ {
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ECleanVideoDisplay);
+ }
}
// Set the new Display
@@ -529,6 +554,7 @@
break;
case ERemoveSurface:
{
+ LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::MdcUICallback, ERemoveSurface ");
DoRemoveSurface();
}
break;
@@ -607,7 +633,15 @@
// iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EResetSurfaceParameters );
//MMAPI UI 3.x req.
LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet +");
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EResetSurfaceParameters);
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::EResetSurfaceParameters);
+ }
+ else
+ {
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EResetSurfaceParameters);
+ }
LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet -");
return;
}
@@ -623,8 +657,16 @@
{
//iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EInitVideoDisplay );
//MMAPI UI 3.x req.
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EInitVideoDisplay);
- LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters,EUIResourcesAndSurfaceParametersSet");
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::EInitVideoDisplay);
+ }
+ else
+ {
+ LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters,EUIResourcesAndSurfaceParametersSet");
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EInitVideoDisplay);
+ }
}
}
@@ -640,7 +682,15 @@
{
//iDisplay->UIGetCallback(*this, CMMASurfaceWindow::ESetChangedSurfaceParameters);
LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters + ");
- iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetChangedSurfaceParameters);
+ TBool iseSWT = iDisplay->iseSWT();
+ if (iseSWT)
+ {
+ UICallback((TInt)CMMASurfaceWindow::ESetChangedSurfaceParameters);
+ }
+ else
+ {
+ iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetChangedSurfaceParameters);
+ }
LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters - ");
}
@@ -648,20 +698,25 @@
void CMMASurfaceWindow::RemoveSurface()
{
+ LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RemoveSurface() +");
if (iDisplay)
{
iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ERemoveSurface);
}
+ LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RemoveSurface() -");
}
void CMMASurfaceWindow::DoRemoveSurface()
{
+ LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::DoRemoveSurface() +");
if (iMediaClientVideoDisplay)
{
+ LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::DoRemoveSurface, Removing Surface");
iMediaClientVideoDisplay->RemoveSurface();
LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::DoRemoveSurface, Surface Removed");
}
+ LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::DoRemoveSurface() -");
}
void CMMASurfaceWindow::DoResetSurfaceParameters()
@@ -767,8 +822,8 @@
0.0f, // ignore
EVideoRotationNone,
EAutoScaleBestFit,
- EHorizontalAlignLeft,
- EVerticalAlignTop,
+ EHorizontalAlignCenter,
+ EVerticalAlignCenter,
(RWindow*)iWindow);
--- a/javauis/mmapi_qt/baseline/src/cmmacanvasdisplay.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmacanvasdisplay.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -36,7 +36,7 @@
new(ELeave) CMMACanvasDisplay();
CleanupStack::PushL(self);
- self->Construct(aEventSource,obj);
+ self->Construct(aEventSource,NULL,obj);
return self;
}
--- a/javauis/mmapi_qt/baseline/src/cmmadisplay.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmadisplay.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -50,16 +50,59 @@
iFullScreen(EFalse),
iContainerVisible(ETrue),
iIsForeground(ETrue),
- iResetDrawRect(EFalse)
+ iResetDrawRect(EFalse),
+ iIseSWT(EFalse)
{
}
-void CMMADisplay::Construct(MMAFunctionServer* eventSource , jobject javadisplayref)
+void CMMADisplay::Construct(MMAFunctionServer* eventSource ,JNIEnv* aJni, jobject javadisplayref)
{
iEventSource = eventSource;
- iJni = iEventSource->getValidJniEnv();
+ iJavadisplayref = javadisplayref;
+ LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct=%d",iIseSWT);
+ if (iIseSWT)
+ {
+ iJni = aJni;
+ }
+ else
+ {
+ iJni = iEventSource->getValidJniEnv();
+ }
iJavaDisplayObject = iJni->NewGlobalRef(javadisplayref);
iJavaDisplayClass = iJni->GetObjectClass(iJavaDisplayObject);
+
+ setRectID = iJni->GetMethodID(iJavaDisplayClass,
+ "setRect",
+ "()V");
+ iRectDimensionField = iJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
+
+ redrawControlID = iJni->GetMethodID(
+ iJavaDisplayClass,
+ "redrawControl",
+ "()V");
+
+ removeContentBoundID = iJni->GetMethodID(
+ iJavaDisplayClass,
+ "removeContentBound",
+ "()V");
+
+ setContentBoundID = iJni->GetMethodID(
+ iJavaDisplayClass,
+ "setContentBound",
+ "()V");
+
+ getCallBackMethodID = iJni->GetMethodID(
+ iJavaDisplayClass,
+ "GetCallbackInUiThread",
+ "(I)V");
+
+ getBoundRectID = iJni->GetMethodID(
+ iJavaDisplayClass,
+ "getBoundRect",
+ "()V");
+
+ iDisplayboundarrField = iJni->GetFieldID(iJavaDisplayClass, "displayboundarr", "[I");
+
// Components must have direct content.
/* __ASSERT_LOG(EJavaMMAPI,EInfo,"aDirectContainer, User::Invariant());
@@ -123,6 +166,7 @@
}
drawRect.Move(position);
+ LOG2(EJavaMMAPI, EInfo, "CMMADisplay::ScaleToFullScreen::drawRect.Width=%d, drawRect.Height=%d",drawRect.Width(), drawRect.Height());
LOG(EJavaMMAPI,EInfo,"CMMADisplay::ScaleToFullScreen() -");
return drawRect;
}
@@ -243,12 +287,15 @@
// from MMMADisplay
TSize CMMADisplay::DisplaySize()
{
+ LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::DisplaySize +");
if (iWindow && iFullScreen)
{
+ LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::DisplaySize if loop ");
return iWindow->DrawRect().Size();
}
else
{
+ LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::DisplaySize else loop %d",iUserRect.Size().iHeight);
return iUserRect.Size();
}
}
@@ -295,7 +342,15 @@
{
// iWindow->SetVisible(aValue, EFalse);
//MMAPI UI 3.x req. (had to comment above line and add below line which excutes in FS thread)
- iWindow->SetVisible(aValue, ETrue);
+ if (iIseSWT == true)
+ {
+ iWindow->SetVisible(aValue, ETrue);
+ }
+ else
+ {
+ iWindow->SetVisible(aValue, EFalse);
+ }
+ LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible after iWindow->SetVisible()");
SetClippingRegion();
LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible -");
}
@@ -468,21 +523,31 @@
void CMMADisplay::GetCallbackInUiThread(TInt placeholder)
{
+ JNIEnv* validJni = iEventSource->getValidJniEnv();
+ jobject javaDisplayObject;
+ jclass javaDisplayClass;
LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread +");
-
-
-
-
-
-
-
-
- jmethodID getCallBackMethodID = iJni->GetMethodID(
- iJavaDisplayClass,
- "GetCallbackInUiThread",
- "(I)V");
- // LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID);
- iJni->CallVoidMethod(iJavaDisplayObject,getCallBackMethodID,placeholder);
+ /**
+ * In case of eSWT iJavaDisplayClass and iJavaDisplayObject were initialized with JNI
+ * in UI Thread. Since this function is called from FunctionServer Thread so we need to get
+ * valid JNI for FunctionServer Thread and need to initialize iJavaDisplayClass and iJavaDisplayObject
+ * again for FunctionServer Thread rather than using the one that was created in Constructor(UI Thread).
+ */
+ if (iIseSWT)
+ {
+ javaDisplayObject = validJni->NewGlobalRef(iJavadisplayref);
+ javaDisplayClass = validJni->GetObjectClass(iJavaDisplayObject);
+ }
+ else
+ {
+ javaDisplayObject = iJavaDisplayObject;
+ javaDisplayClass = iJavaDisplayClass;
+ }
+ getCallBackMethodID = validJni->GetMethodID(javaDisplayClass,
+ "GetCallbackInUiThread",
+ "(I)V");
+ LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID);
+ validJni->CallVoidMethod(javaDisplayObject,getCallBackMethodID,placeholder);
LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread -");
}
@@ -514,6 +579,7 @@
return;
}
iWindow->ProcureWindowResourcesFromQWidget(iWs,iScreenDevice,window);
+ iWindow->SetVisible(ETrue,ETrue);
LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources -");
}
@@ -629,27 +695,28 @@
void CMMADisplay::ResetJavaRectObject(const TRect& aRect)
{
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject +");
- JNIEnv* validJni = iEventSource->getValidJniEnv();
- jmethodID setRectID = validJni->GetMethodID(
- iJavaDisplayClass,
- "setRect",
- "()V");
-
+ //TRect rect = aRect;
+ JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
+ /*jmethodID setRectID = validJni->GetMethodID(
+ iJavaDisplayClass,
+ "setRect",
+ "()V");
+ */
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --1");
// set the value to java,so that we can access those from array
- jfieldID field = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
- if (field == NULL)
+
+ //jfieldID iRectDimensionField = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
+ if (iRectDimensionField == NULL)
{
// handle error
}
/* Write to the instance fields */
- jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, field);
+ jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, iRectDimensionField);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --2");
jint* nativeRectDimensionArr = validJni->GetIntArrayElements(javaDimensionarr, NULL);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --3");
if (!nativeRectDimensionArr)
- {
- // inputBuffer was already allocated
+ { // inputBuffer was already allocated
validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_ABORT);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject Error in resetting rect dimension to java");
return;
@@ -659,9 +726,10 @@
nativeRectDimensionArr[2] = aRect.Width();
nativeRectDimensionArr[3] = aRect.Height();
// Now the dimension array in java is updated hence reset the java rect
+
+ validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_COMMIT);
validJni->CallVoidMethod(iJavaDisplayObject,setRectID);
- validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_COMMIT);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject -");
}
@@ -669,13 +737,14 @@
void CMMADisplay::SetContentBoundToJavaControl(const TRect& aRect)
{
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl +");
- JNIEnv* validJni = iEventSource->getValidJniEnv();
+ JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
// Reset the java rect
ResetJavaRectObject(aRect);
- jmethodID setContentBoundID = validJni->GetMethodID(
- iJavaDisplayClass,
- "setContentBound",
- "()V");
+ /*jmethodID setContentBoundID = validJni->GetMethodID(
+ iJavaDisplayClass,
+ "setContentBound",
+ "()V");
+ */
// call java function
validJni->CallVoidMethod(iJavaDisplayObject,setContentBoundID);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl -");
@@ -684,13 +753,14 @@
void CMMADisplay::RemoveContentBoundFromJavaControl(const TRect& aRect)
{
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl +");
- JNIEnv* validJni = iEventSource->getValidJniEnv();
+ JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();
// Reset the java rect
ResetJavaRectObject(aRect);
- jmethodID removeContentBoundID = validJni->GetMethodID(
+ /*jmethodID removeContentBoundID = validJni->GetMethodID(
iJavaDisplayClass,
"removeContentBound",
- "()V");
+ "()V");
+ */
// call java function
validJni->CallVoidMethod(iJavaDisplayObject,removeContentBoundID);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl -");
@@ -699,16 +769,26 @@
void CMMADisplay::RefreshJavaControl()
{
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl +");
- JNIEnv* validJni = iEventSource->getValidJniEnv();
+ JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
// Reset the java rect
//ResetJavaRectObject(aRect);
- jmethodID redrawControlID = validJni->GetMethodID(
- iJavaDisplayClass,
- "redrawControl",
- "()V");
+ /*jmethodID redrawControlID = validJni->GetMethodID(
+ iJavaDisplayClass,
+ "redrawControl",
+ "()V");
+ */
// call java function
validJni->CallVoidMethod(iJavaDisplayObject,redrawControlID);
LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl -");
}
+TBool CMMADisplay::iseSWT()
+{
+ return iIseSWT;
+}
+
+void CMMADisplay::SetFullscreenSize(TSize &aFullscreenSize)
+{
+ iFullScreenSize = aFullscreenSize;
+}
// END OF FILE
--- a/javauis/mmapi_qt/baseline/src/cmmaevent.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmaevent.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -45,6 +45,7 @@
void CMMAEvent::Dispatch(JNIEnv& aJni)
{
LOG1(EJavaMMAPI, EInfo, "MMA::CMMAEvent::Dispatch iEventData=%d", iEventData);
+ LOG1(EJavaMMAPI, EInfo, "MMA::CMMAEvent::Dispatch iListenerObject=%d", iEventData);
aJni.CallVoidMethod(iListenerObject,
iHandleEventMethod,
--- a/javauis/mmapi_qt/baseline/src/cmmaitemdisplay.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmaitemdisplay.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -29,7 +29,7 @@
{
CMMAItemDisplay* self = new(ELeave) CMMAItemDisplay();
CleanupStack::PushL(self);
- self->Construct(aEventSource, aItemDispObj);
+ self->Construct(aEventSource, NULL, aItemDispObj);
return self;
}
@@ -111,45 +111,7 @@
return TPoint(0, 0);
}
-/*
-void CMMAItemDisplay::SourceSizeChanged(const TSize& aSourceSize)
-{
- LOG1(EJavaMMAPI,EInfo,"MMA::CMMAItemDisplay::SourceSizeChanged %d",
- aSourceSize.iWidth);
- LOG1(EJavaMMAPI,EInfo,"MMA::CMMAItemDisplay::SourceSizeChanged %d",
- aSourceSize.iHeight);
- #ifdef RD_JAVA_NGA_ENABLED
- if ( iWindow )
- {
- iWindow->SetVideoCropRegion( TRect( iUserRect.iTl, aSourceSize ) );
- }
- #endif
-
- iSourceSize = aSourceSize;
-
- if (iWindow)
- {
- TRect clientRect(iUserRect.iTl, aSourceSize);
-
- iWindow->SetDrawRect(clientRect);
- // Setting initial window size if not already set, actual size will
- // be set in MdcItemContentRectChanged()
- if (iWindow->WindowSize() == TSize())
- {
- iWindow->SetWindowRect(clientRect, MMMADisplay::EMmaThread);
- }
- }
-
- SetClippingRegion();
-
- if (iUserRect.IsEmpty())
- {
- // Java side hasn't set size.
- iUserRect.SetSize(iSourceSize);
- }
-}
-*/
void CMMAItemDisplay:: SourceSizeChanged(TInt aJavaControlWidth, TInt aJavaControlHeight,TInt x, TInt y,TRect aBoundsRect)
@@ -282,6 +244,7 @@
SetClippingRegion();
+ /*
if (iUserRect.IsEmpty())
{
// Java side hasn't set size.
@@ -292,6 +255,13 @@
// Addjusting rect to top left corner.
iUserRect = TRect(iUserRect.Size());
//}
+ }*/
+ if (iUserRect.IsEmpty())
+ {
+ // Java side hasn't set size.
+ LOG1(EJavaMMAPI,EInfo,"CMMAItemDisplay::SourceSizeChanged()iUserRect is set to source size iSourceSize - %d",iSourceSize.iHeight);
+ iUserRect.SetSize(iSourceSize);
+ LOG1(EJavaMMAPI,EInfo,"CMMAItemDisplay::SourceSizeChanged()iUserRect is set to source size iUserRect - %d",iUserRect.Size().iHeight);
}
LOG(EJavaMMAPI,EInfo,"CMMAItemDisplay::SourceSizeChanged(aJavaControlWidth,aJavaControlHeight)-");
}
--- a/javauis/mmapi_qt/baseline/src/cmmaplayer.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmaplayer.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -446,7 +446,7 @@
}
-void CMMAPlayer::PostActionCompleted(TInt aError)
+EXPORT_C void CMMAPlayer::PostActionCompleted(TInt aError)
{
LOG(EJavaMMAPI, EInfo, "MMA::CMMAPlayer::PostActionCompleted ");
iActionCompletedEvent->SetEventData(aError);
--- a/javauis/mmapi_qt/baseline/src/cmmasnapshot.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmasnapshot.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -91,6 +91,8 @@
// take snapshot from player. RunL is called when image is ready
// or error occures
iState = ETakingSnapshot;
+ LOG2(EJavaMMAPI, EInfo, "CMMASnapshot::TakeSnapshotL::iSettings->iWidth = %d, iSettings->iHeight = %d",
+ iSettings->iWidth, iSettings->iHeight);
TSize snapshotSize(iSettings->iWidth, iSettings->iHeight);
iEncoding = iGUIPlayer->SnapshoterL()->TakeSnapshotL(&iStatus,
snapshotSize,
--- a/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -129,12 +129,12 @@
MMAFunctionServer* aEventSource,
TInt* aDisplayHandle,
CMMAEvent* aDeleteRefEvent,
- TBool aGuiType)
+ TInt aGuiType)
{
LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticInitL +");
- if (aGuiType == true)
+ if (aGuiType == CMMAVideoControl::EDISPLAY_VIDEOITEM)
{
LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticInitL - aGuiType is customitem ");
aControl->iDeleteRefEvent = aDeleteRefEvent;
@@ -145,7 +145,7 @@
CleanupStack::Pop(itemDisplay);
*aDisplayHandle = reinterpret_cast<TInt>(itemDisplay);
}
- else
+ else if (aGuiType == CMMAVideoControl::EDISPLAY_CANVAS)
{
LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticInitL - aGuiType is canvas ");
aControl->iDeleteRefEvent = aDeleteRefEvent;
@@ -215,6 +215,7 @@
void CMMAVideoControl::StaticInitDynamicModeL(
CMMAVideoControl* aVideoControl,
+ JNIEnv* aJni,
TInt* aContentHandle,
MMAFunctionServer* aEventSource,
jobject aGUIObject,
@@ -225,89 +226,92 @@
CMMADCDisplay* dcDisplay = CMMADCDisplay::NewLC(aVideoControl->iGuiPlayer,
aEventSource,
+ aJni,
aGUIObject);
- MMMADirectContent* content = dcDisplay;
- *aContentHandle = reinterpret_cast< TInt >(content);
+ //MMMADirectContent* content = dcDisplay;
+ *aContentHandle = reinterpret_cast< TInt >(dcDisplay);
aVideoControl->iDisplay = dcDisplay;
aVideoControl->iGuiPlayer->SetDisplayL(aVideoControl->iDisplay);
CleanupStack::Pop(dcDisplay);
LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticInitDynamicModeL-");
}
-void CMMAVideoControl::StaticGetPropertyL(CMMAVideoControl* /*aControl*/,
- TInt /*aPropertyType*/,
- TInt* /*aReturnValue*/)
+void CMMAVideoControl::StaticGetPropertyL(CMMAVideoControl* aControl,
+ TInt aPropertyType,
+ TInt* aReturnValue)
{
- // LOG1( EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL property %d",
- // aPropertyType);
+ LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL property %d",
+ aPropertyType);
// MMAPI UI 3.x req.
// remove the below return and uncomment the below code once display is implemented in java
- return;
+// return;
- /*
- MMMADisplay* display = aControl->iDisplay;
+
+ MMMADisplay* display = aControl->iDisplay;
- if (aPropertyType != com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_WIDTH &&
- aPropertyType != com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_HEIGHT &&
- !display)
- {
- LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL not initialized yet");
- // init is not done yet, returning 0
- *aReturnValue = 0;
- return;
- }
+ if (aPropertyType != com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_WIDTH &&
+ aPropertyType != com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_HEIGHT &&
+ !display)
+ {
+ LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL not initialized yet");
+ // init is not done yet, returning 0
+ *aReturnValue = 0;
+ return;
+ }
- switch (aPropertyType)
- {
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_WIDTH:
- {
- *aReturnValue = display->DisplaySize().iWidth;
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_HEIGHT:
- {
- *aReturnValue = display->DisplaySize().iHeight;
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_X:
- {
- *aReturnValue = display->DisplayLocation().iX;
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_Y:
- {
- *aReturnValue = display->DisplayLocation().iY;
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_WIDTH:
- {
- LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL get source width");
- *aReturnValue = aControl->iGuiPlayer->SourceSize().iWidth;
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_HEIGHT:
- {
- LOG( EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL get source height");
- *aReturnValue = aControl->iGuiPlayer->SourceSize().iHeight;
- break;
- }
- default:
- {
- *aReturnValue = KErrNotFound;
- User::Leave(KErrNotFound);
- break;
- }
- }
- */
+ switch (aPropertyType)
+ {
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_WIDTH:
+ {
+ *aReturnValue = display->DisplaySize().iWidth;
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_HEIGHT:
+ {
+ *aReturnValue = display->DisplaySize().iHeight;
+ LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL aReturnValue %d",
+ *aReturnValue);
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_X:
+ {
+ *aReturnValue = display->DisplayLocation().iX;
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_DISPLAY_Y:
+ {
+ *aReturnValue = display->DisplayLocation().iY;
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_WIDTH:
+ {
+ LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL get source width");
+ *aReturnValue = aControl->iGuiPlayer->SourceSize().iWidth;
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_PROPERTY_SOURCE_HEIGHT:
+ {
+ LOG(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticGetPropertyL get source height");
+ *aReturnValue = aControl->iGuiPlayer->SourceSize().iHeight;
+ break;
+ }
+ default:
+ {
+ *aReturnValue = KErrNotFound;
+ User::Leave(KErrNotFound);
+ break;
+ }
+ }
+
}
-void CMMAVideoControl::StaticSetPropertyL(CMMAVideoControl* /*aControl*/,
- TInt /*aPropertyType*/,
- TInt /*aPropertyA*/,
- TInt /*aPropertyB*/)
+void CMMAVideoControl::StaticSetPropertyL(CMMAVideoControl* aControl,
+ TInt aPropertyType,
+ TInt aPropertyA,
+ TInt aPropertyB)
{
//LOG1( EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticSetPropertyL property type %d",
// aPropertyType);
@@ -317,76 +321,86 @@
// aPropertyB);
// MMAPI UI 3.x req.
// remove the below return and uncomment the below code; once display is implemented in java
- return;
+ // return;
- /*
- MMMADisplay* display = aControl->iDisplay;
- __ASSERT_DEBUG(display != NULL,
- User::Panic(_L("display not initialized"), KErrNotReady));
+ MMMADisplay* display = aControl->iDisplay;
- switch (aPropertyType)
- {
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_SIZE:
- {
- TSize displaySize(aPropertyA, aPropertyB);
- display->SetDisplaySizeL(displaySize);
+ __ASSERT_DEBUG(display != NULL,
+ User::Panic(_L("display not initialized"), KErrNotReady));
- // inform java side
- if (!display->IsFullScreen())
- {
- aControl->iGuiPlayer->NotifyWithStringEvent(
- CMMAPlayerEvent::ESizeChanged, KControlName);
- }
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_LOCATION:
+ switch (aPropertyType)
+ {
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_SIZE:
+ {
+ TSize displaySize(aPropertyA, aPropertyB);
+ LOG1(EJavaMMAPI, EInfo, "CMMAVideoControl::statepropertyl %d",displaySize);
+ display->SetDisplaySizeL(displaySize);
+ LOG(EJavaMMAPI, EInfo, "CMMAVideoControl::SetDisplayProperty:: setDisplaySizeL Completed");
+ // inform java side
+ if (!display->IsFullScreen())
{
- TPoint displayLocation(aPropertyA, aPropertyB);
- display->SetDisplayLocationL(displayLocation);
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_VISIBLE_TRUE:
- {
- display->SetVisible(ETrue);
- break;
+ aControl->iGuiPlayer->NotifyWithStringEvent(
+ CMMAPlayerEvent::ESizeChanged, KControlName);
}
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_VISIBLE_FALSE:
- {
- display->SetVisible(EFalse);
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_FULLSCREEN_TRUE:
- {
- // store old user rect to determine if SIZE_CHANGED event
- // has to be delivered when full screen mode is turned off.
- aControl->iOldDisplaySize = display->DisplaySize();
-
- display->SetFullScreenL(ETrue);
- break;
- }
- case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_FULLSCREEN_FALSE:
- {
- display->SetFullScreenL(EFalse);
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_LOCATION:
+ {
+ TPoint displayLocation(aPropertyA, aPropertyB);
+ display->SetDisplayLocationL(displayLocation);
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_VISIBLE_TRUE:
+ {
+ display->SetVisible(ETrue);
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_VISIBLE_FALSE:
+ {
+ display->SetVisible(EFalse);
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_FULLSCREEN_TRUE:
+ {
+ // store old user rect to determine if SIZE_CHANGED event
+ // has to be delivered when full screen mode is turned off.
+ aControl->iOldDisplaySize = display->DisplaySize();
+ LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticSetPropertyL a property %d",
+ aPropertyA);
+ LOG1(EJavaMMAPI, EInfo, "MMA::CMMAVideoControl::StaticSetPropertyL b property %d",
+ aPropertyB);
+ //TSize fullscreenSize(aPropertyA, aPropertyB);
+ //display->SetFullscreenSize(fullscreenSize);
+ //display->SetDisplaySizeL(fullscreenSize);
+ //display->SetFullScreenL(ETrue);
+ display->SourceSizeChanged(aPropertyA, aPropertyB,0,0,TRect(0,0,0,0));
+ break;
+ }
+ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_FULLSCREEN_FALSE:
+ {
+ TSize fullscreenSize = aControl->iOldDisplaySize;
+ display->SetFullscreenSize(fullscreenSize);
+ display->SetFullScreenL(EFalse);
- // Send SIZE_CHANGED event when fullscreen is turned off if
- // size of the video display has changed. Possible position
- // change is however disregarded
- if (aControl->iOldDisplaySize != display->DisplaySize())
- {
- aControl->iGuiPlayer->NotifyWithStringEvent(
- CMMAPlayerEvent::ESizeChanged, KControlName);
- }
+ // Send SIZE_CHANGED event when fullscreen is turned off if
+ // size of the video display has changed. Possible position
+ // change is however disregarded
+ /* if (aControl->iOldDisplaySize != display->DisplaySize())
+ {
+ aControl->iGuiPlayer->NotifyWithStringEvent(
+ CMMAPlayerEvent::ESizeChanged, KControlName);
+ }*/
- break;
- }
- default:
- {
- User::Leave(KErrNotFound);
- break;
- }
- }
- */
+ break;
+ }
+ default:
+ {
+ User::Leave(KErrNotFound);
+ break;
+ }
+ }
+
}
@@ -491,7 +505,12 @@
}
}
-
+/*
+MMMAGuiPlayer* CMMAVideoControl::GuiPlayer()
+{
+ return iGuiPlayer;
+}
+*/
/**
* Handles a change to resources which are shared accross the environment.
*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/src/eswtdisplay.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,147 @@
+/*
+* 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:
+*
+*/
+#include "com_nokia_microedition_media_control_MMAeSWTDisplay.h"
+#include "logger.h"
+#include "qwidget.h"
+#include "cmmadcdisplay.h"
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setVisible
+(JNIEnv *, jobject, jint nativeDisplayHandle, jboolean isVisible)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setVisible +");
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TBool visible = (TBool)isVisible;
+ display ->SetVisible(visible);
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setVisible -");
+}
+
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setContainerVisible
+(JNIEnv *, jobject, jint /*nativeDisplayHandle*/, jboolean /*isActive*/)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setContainerVisible +");
+ /* CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TBool visible = (TBool)isActive;
+ display ->SetContainerVisibility(visible);*/
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setContainerVisible -");
+}
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setFullScreenMode
+(JNIEnv *, jobject, jint nativeDisplayHandle, jboolean isFullScreen)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setFullScreenMode +");
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TBool mode = (TBool)isFullScreen;
+ TRAP_IGNORE(display ->SetFullScreenL(mode));
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setFullScreenMode -");
+}
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setWindowToNative
+(JNIEnv *, jobject,jint nativeDisplayHandle, jint qtWidgetHandle)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setWindowToNative + ");
+ QWidget *widget = reinterpret_cast<QWidget*>(qtWidgetHandle);
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ display->SetWindowResources(widget);
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setWindowToNative - ");
+}
+
+LOCAL_C void LocalSourceSizeChanged(CMMADisplay* display,TInt width,TInt height)
+{
+ TRect temp(0,0,0,0);
+ LOG2(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setWindowToNative + %d %d",width,height);
+ display->SourceSizeChanged(width,height,0,0,temp);
+}
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setNativeWindowSize
+(JNIEnv *, jobject,jint nativeDisplayHandle, jint /*aEventSourceHandle*/, jint eswtControlwidth,jint eswtControlheight)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setNativeWindowSize + ");
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TInt width = eswtControlwidth;
+ TInt height = eswtControlheight;
+ // TSize srcsize = TSize(360,487);
+ // TO-DO remove JavaUnhand in final code
+ //MMAFunctionServer* eventSource = reinterpret_cast<MMAFunctionServer *>(aEventSourceHandle);
+ // need to call in Function server thread context because CMMADisplay's JNI pointer
+ // is valid in that thread context only.
+ /*TInt error = eventSource->ExecuteTrap(&LocalSourceSizeChanged,
+ display,
+ width,
+ height);*/
+ LocalSourceSizeChanged(display, width, height);
+
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : setNativeWindowSize - ");
+}
+
+/*
+LOCAL_C void LocalSetDisplayPosition(CMMADisplay* display,TInt uiX,TInt uiY,TInt vcX,TInt vcY)
+{
+ display->SetDisplayPosition(uiX,uiY,vcX,vcY);
+}
+*/
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setPosition
+(JNIEnv *, jobject,jint /*nativeDisplayHandle*/,jint /*aEventSourceHandle*/,jint /*uiX*/,jint /*uiY*/,jint /*vcX*/,jint /*vcY*/)
+{
+ /* LOG(EJavaMMAPI,EInfo,"JNI_canvasdisplay.cpp : _setPosition + ");
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TInt uiControlLocationX = uiX;
+ TInt uiControlLocationY = uiY;
+ TInt videoControlLocationX = vcX;
+ TInt videoControlLocationY = vcY;
+ MMAFunctionServer* eventSource = reinterpret_cast<MMAFunctionServer *>(aEventSourceHandle);
+ // need to call in Function server thread context because CMMADisplay's JNI pointer
+ // is valid in that thread context only.
+ TInt error = eventSource->ExecuteTrap(&LocalSetDisplayPosition,
+ display,
+ uiControlLocationX,
+ uiControlLocationY,
+ videoControlLocationX,
+ videoControlLocationY);
+
+ LOG(EJavaMMAPI,EInfo,"JNI_canvasdisplay.cpp : _setPosition - ");*/
+}
+
+
+
+
+LOCAL_C void LocalSetDisplaySize(CMMADisplay* display,TInt vcX,TInt vcY)
+{
+ LOG2(EJavaMMAPI,EInfo,"JNI_canvasdisplay.cpp : LocalSetDisplaySize vcX = %d,vcY=%d ",vcX,vcY);
+ TSize size(vcX,vcY);
+ TRAP_IGNORE(display->SetDisplaySizeL(size));
+}
+
+JNIEXPORT void JNICALL Java_com_nokia_microedition_media_control_MMAeSWTDisplay__1setDisplaySize
+(JNIEnv *, jobject,jint nativeDisplayHandle,jint /*aEventSourceHandle*/,jint width,jint height)
+{
+ LOG2(EJavaMMAPI,EInfo,"JNI_eswtDisplay.cpp : _setDisplaySize + width = %d,height = %d",width,height);
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TInt vc_width = width;
+ TInt vc_height = height;
+ //MMAFunctionServer* eventSource = reinterpret_cast<MMAFunctionServer *>(aEventSourceHandle);
+ // need to call in Function server thread context because CMMADisplay's JNI pointer
+ // is valid in that thread context only.
+ LOG2(EJavaMMAPI,EInfo,"JNI_eswtdisplay.cpp : _setDisplaySize + vc_width = %d,vc_height = %d",vc_width,vc_height);
+ /*TInt error = eventSource->ExecuteTrap(&LocalSetDisplaySize,
+ display,
+ vc_width,
+ vc_height);
+ */
+ LocalSetDisplaySize(display, vc_width, vc_height);
+ LOG(EJavaMMAPI,EInfo,"JNI_ESWTDisplay.cpp : _setDisplaySize - ");
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/mmapi_qt/baseline/src/eswtproxycontrol.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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: JNI in UI thread context
+*
+*/
+
+#include "org_eclipse_swt_widgets_ESWTProxyControl.h"
+#include "logger.h"
+//#include "cmmadcdisplay.h"
+#include "cmmadisplay.h"
+
+JNIEXPORT jintArray JNICALL Java_org_eclipse_swt_widgets_ESWTProxyControl__1getSourceSize
+(JNIEnv *aJni, jobject, jint nativeDisplayHandle)
+{
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtproxycontrol.cpp : getSourceSize +");
+ LOG1(EJavaMMAPI,EInfo,"JNI_eswtproxycontrol.cpp : getSourceSize nativeDisplayHandle = %d", nativeDisplayHandle);
+ CMMADisplay* display = reinterpret_cast<CMMADisplay*>(nativeDisplayHandle);
+ TSize sourceRect = display->SourceSize();
+ jint sourceWidth = sourceRect.iWidth;
+ jint sourceHeight = sourceRect.iHeight;
+
+ jintArray sourceSize = aJni->NewIntArray(2);
+ aJni->SetIntArrayRegion(sourceSize,0,1,&sourceWidth);
+ aJni->SetIntArrayRegion(sourceSize,1,1,&sourceHeight);
+ LOG(EJavaMMAPI,EInfo,"JNI_eswtproxycontrol.cpp : getSourceSize -");
+ return sourceSize;
+}
--- a/javauis/mmapi_qt/baseline/src/managerimpl.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/managerimpl.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -108,7 +108,10 @@
JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_ManagerImpl__1createEventSource
(JNIEnv* aJni, jobject aPeer)
{
- TInt eventSourceHandle = MMAFunctionServer::NewL(*aJni, aPeer);
+ TInt eventSourceHandle = -1;
+ TRAPD(err,eventSourceHandle = MMAFunctionServer::NewL(*aJni, aPeer));
+ if (err != KErrNone)
+ eventSourceHandle = err;
if (eventSourceHandle > KErrNone)
{
MMAFunctionServer* eventSource =
--- a/javauis/mmapi_qt/baseline/src/videocontrol.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/videocontrol.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -72,7 +72,7 @@
JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_VideoControl__1setDisplayProperty
(JNIEnv*, jobject, jint aControlHandle, jint aEventSourceHandle,
- jint aPropertyA, jint aPropertyB, jint aPropertyType)
+ jint aPropertyA, jint aPropertyB, jint aPropertyType, jint aDisplayType)
{
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1setDisplayProperty");
@@ -88,19 +88,26 @@
__ASSERT_DEBUG(eventSource,
User::Panic(_L("videocontrol::eventsource is null"),
KErrArgument));
-
- TInt error(eventSource->ExecuteTrap(&CMMAVideoControl::StaticSetPropertyL,
- videoControl,
- aPropertyType,
- aPropertyA,
- aPropertyB));
+ TInt error = 0;
+ if (aDisplayType == CMMAVideoControl::EDISPLAY_ESWT)
+ {
+ TRAP(error,CMMAVideoControl::StaticSetPropertyL(videoControl, aPropertyType, aPropertyA, aPropertyB));
+ }
+ else
+ {
+ error = eventSource->ExecuteTrap(&CMMAVideoControl::StaticSetPropertyL,
+ videoControl,
+ aPropertyType,
+ aPropertyA,
+ aPropertyB);
+ }
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1setDisplayProperty -");
return error;
}
JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_VideoControl__1getControlProperty
(JNIEnv*, jobject, jint aControlHandle, jint aEventSourceHandle,
- jint aPropertyType)
+ jint aPropertyType, jint aDisplayType)
{
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1getControlProperty");
@@ -117,11 +124,19 @@
User::Panic(_L("videocontrol::evetnsource is null"),
KErrArgument));
TInt returnValue(KErrNone);
+ TInt error = 0;
- TInt error(eventSource->ExecuteTrap(&CMMAVideoControl::StaticGetPropertyL,
- videoControl,
- aPropertyType,
- &returnValue));
+ if (aDisplayType == CMMAVideoControl::EDISPLAY_ESWT)
+ {
+ TRAP(error,CMMAVideoControl::StaticGetPropertyL(videoControl, aPropertyType, &returnValue));
+ }
+ else
+ {
+ error = eventSource->ExecuteTrap(&CMMAVideoControl::StaticGetPropertyL,
+ videoControl,
+ aPropertyType,
+ &returnValue);
+ }
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1getControlProperty - ");
if (error == KErrNone)
{
@@ -131,7 +146,7 @@
}
JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_VideoControl__1getSnapshot
-(JNIEnv* aJni, jobject, jint aControlHandle, jint aEventSourceHandle,
+(JNIEnv* aJni, jobject, jint aControlHandle, jint /*aEventSourceHandle*/,
jstring aProperties)
{
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1getSnapshot + ");
@@ -139,20 +154,26 @@
CMMAVideoControl* videoControl =
reinterpret_cast< CMMAVideoControl* >(aControlHandle);
- MMAFunctionServer* eventSource =
- reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
+ //MMAFunctionServer* eventSource =
+ // reinterpret_cast< MMAFunctionServer *>(aEventSourceHandle);
__ASSERT_DEBUG(videoControl,
User::Panic(_L("videocontrol::control is null"),
KErrArgument));
- __ASSERT_DEBUG(eventSource,
- User::Panic(_L("videocontrol::evetnsource is null"),
- KErrArgument));
+// __ASSERT_DEBUG(eventSource,
+// User::Panic(_L("videocontrol::evetnsource is null"),
+// KErrArgument));
JStringUtils properties(*aJni, aProperties);
+
+ TInt error = 0;
+ TRAP(error,CMMAVideoControl::TakeSnapShotL(videoControl, (const TDesC*)&properties));
+
+ /*
TInt error(eventSource->ExecuteTrap(&CMMAVideoControl::TakeSnapShotL,
videoControl,
(const TDesC*)&properties));
+ */
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1getSnapshot - ");
return error;
}
@@ -161,20 +182,22 @@
* Initializes dynamic display mode
* @return handle to MMMADirectContent or error code
*/
-/*
LOCAL_C jint InitDynamicMode(MMAFunctionServer* aEventSource,
+ JNIEnv* aJni,
CMMAVideoControl* aVideoControl,
jobject aGUIObject,
CMMAEvent* aDeleteRefEvent)
{
TInt contentHandle = 0;
- TInt error = aEventSource->ExecuteTrap(
- &CMMAVideoControl::StaticInitDynamicModeL,
- aVideoControl,
- &contentHandle,
- aEventSource,
- aGUIObject,
- aDeleteRefEvent);
+ /* TInt error = aEventSource->ExecuteTrap(
+ &CMMAVideoControl::StaticInitDynamicModeL,
+ aVideoControl,
+ &contentHandle,
+ aEventSource,
+ aGUIObject,
+ aDeleteRefEvent);
+ */
+ TRAPD(error,CMMAVideoControl::StaticInitDynamicModeL(aVideoControl, aJni, &contentHandle, aEventSource, aGUIObject, aDeleteRefEvent));
// if init failed return error code
if (error != KErrNone)
@@ -183,18 +206,17 @@
}
return contentHandle;
}
-*/
JNIEXPORT jint JNICALL Java_com_nokia_microedition_media_control_VideoControl__1initDisplayMode
(JNIEnv* aJni, jobject aJavaVideoControl, jint aControlHandle, jint aEventSourceHandle,
- jobject aJavaDisplayObj, jobject aComponent,jboolean aGuiType)
+ jobject aJavaDisplayObj, jobject aComponent,jint aGuiType)
{
LOG(EJavaMMAPI, EInfo, "Java_com_nokia_microedition_media_control_VideoControl__1initDisplayMode +");
LOG1(EJavaMMAPI, EInfo, "aControlHandle = %d", aControlHandle);
LOG1(EJavaMMAPI, EInfo, "aEventSourceHandle = %d", aEventSourceHandle);
// LOG1( EJavaMMAPI, EInfo, "aComponentHandle = %d", aComponentHandle);
- TBool type = aGuiType;
+ TInt type = aGuiType;
CMMAVideoControl* videoControl =
reinterpret_cast< CMMAVideoControl* >(aControlHandle);
@@ -231,15 +253,16 @@
return KErrNoMemory;
}
- /*// other modes has component
- if (aComponentHandle == 0)
+ // other modes has component
+ if (type == CMMAVideoControl::EDISPLAY_ESWT)
{
return InitDynamicMode(eventSource,
+ aJni,
videoControl,
- componentRef,
+ javaDisplayRef,
deleteRefEvent);
}
- */
+
// MMIDComponent* component = JavaUnhand< MMIDComponent >(aComponentHandle);
--- a/javauis/mmapi_qt/build/build.xml Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/build/build.xml Wed Jun 23 18:07:10 2010 +0300
@@ -65,6 +65,8 @@
com.nokia.microedition.media.control.MMACanvasDisplay,
com.nokia.microedition.media.control.ItemDisplay,
com.nokia.microedition.media.control.BaseDisplay,
+ com.nokia.microedition.media.control.MMAeSWTDisplay,
+ org.eclipse.swt.widgets.ESWTProxyControl,
com.nokia.microedition.media.control.MMAGUIFactory,
com.nokia.microedition.media.control.PitchControl,
com.nokia.microedition.media.control.RateControl,
@@ -197,6 +199,10 @@
</properties>
</target>
+
+ <target name="create.public.api.jar">
+ <omj.public.apis includes="javax/microedition/media/**/*.class"/>
+ </target>
<target name="create.internal.api.jar">
<omj.internal.apis includes="com/nokia/microedition/media/control/ControlImpl.class,
--- a/javauis/mmapi_qt/build/bwins/javamobilemediau.def Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/build/bwins/javamobilemediau.def Wed Jun 23 18:07:10 2010 +0300
@@ -1,5 +1,5 @@
EXPORTS
- ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *)
+ ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *)
?SetLoopCount@CMMAPlayer@@UAEXH@Z @ 2 NONAME ; void CMMAPlayer::SetLoopCount(int)
?PostObjectEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@PAV_jobject@@@Z @ 3 NONAME ; void CMMAPlayer::PostObjectEvent(enum CMMAPlayerEvent::TEventType, class _jobject *)
?PrefetchFileL@CMMAEMCAudioPlayer@@MAEXXZ @ 4 NONAME ; void CMMAEMCAudioPlayer::PrefetchFileL(void)
@@ -8,72 +8,69 @@
?PostStringEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 7 NONAME ; void CMMAPlayer::PostStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &)
?SnapshotEncoded@CMMAVideoPlayer@@UAEPAVHBufC8@@XZ @ 8 NONAME ; class HBufC8 * CMMAVideoPlayer::SnapshotEncoded(void)
?DoOpen@CMMAMMFPlayerBase@@MAEHVTUid@@ABVTDesC8@@01VTMMFPrioritySettings@@@Z @ 9 NONAME ; int CMMAMMFPlayerBase::DoOpen(class TUid, class TDesC8 const &, class TUid, class TDesC8 const &, class TMMFPrioritySettings)
- ?StaticControl@CMMAPlayer@@SAPAVCMMAControl@@PAV1@H@Z @ 10 NONAME ; class CMMAControl * CMMAPlayer::StaticControl(class CMMAPlayer *, int)
- ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 11 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void)
- ??0CMMAEMCAudioVolumeControl@@IAE@AAVCMMAEMCAudioPlayer@@@Z @ 12 NONAME ; CMMAEMCAudioVolumeControl::CMMAEMCAudioVolumeControl(class CMMAEMCAudioPlayer &)
- ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 13 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const
- ?PostActionCompletedStart@CMMAPlayer@@QAEXXZ @ 14 NONAME ; void CMMAPlayer::PostActionCompletedStart(void)
- ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 15 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void)
- ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 16 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &)
- ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 17 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *)
- ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 18 NONAME ; void CMMAVideoUrlPlayer::CloseL(void)
- ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 19 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void)
- ?NewL@CTimeOutTimer@@SAPAV1@HAAVMTimeOutNotify@@@Z @ 20 NONAME ; class CTimeOutTimer * CTimeOutTimer::NewL(int, class MTimeOutNotify &)
- ?StartL@CMMAVideoUrlPlayer@@UAEXXZ @ 21 NONAME ; void CMMAVideoUrlPlayer::StartL(void)
- ?ReadCompletedL@CMMAEMCAudioPlayer@@UAEXHABVTDesC8@@@Z @ 22 NONAME ; void CMMAEMCAudioPlayer::ReadCompletedL(int, class TDesC8 const &)
- ?NewL@CMMAEMCAudioVolumeControl@@SAPAV1@AAVCMMAEMCAudioPlayer@@@Z @ 23 NONAME ; class CMMAEMCAudioVolumeControl * CMMAEMCAudioVolumeControl::NewL(class CMMAEMCAudioPlayer &)
- ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 24 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &)
- ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 25 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &)
- ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 26 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *)
- ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 27 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &)
- ?StaticAddObjectFromHandleL@MMAFunctionServer@@SAXPAV1@H@Z @ 28 NONAME ; void MMAFunctionServer::StaticAddObjectFromHandleL(class MMAFunctionServer *, int)
- ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 29 NONAME ; void CMMAVideoControl::SnapshotReady(void)
- ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 30 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *)
- ?PlayCompleteL@CMMAEMCAudioPlayer@@MAEXH@Z @ 31 NONAME ; void CMMAEMCAudioPlayer::PlayCompleteL(int)
- ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 32 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *)
- ?PrefetchDataL@CMMAEMCAudioPlayer@@MAEXABVTDesC8@@@Z @ 33 NONAME ; void CMMAEMCAudioPlayer::PrefetchDataL(class TDesC8 const &)
- ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 34 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void)
- ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 35 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *)
- ??0CMMAEMCAudioPlayer@@IAE@PAVCMMAEMCResolver@@@Z @ 36 NONAME ; CMMAEMCAudioPlayer::CMMAEMCAudioPlayer(class CMMAEMCResolver *)
- ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 37 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const
- ??1CMMAVideoUrlPlayer@@UAE@XZ @ 38 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void)
- ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 39 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int)
- ??1CMMAEMCAudioPlayer@@UAE@XZ @ 40 NONAME ; CMMAEMCAudioPlayer::~CMMAEMCAudioPlayer(void)
- ?MMFactory@CMMAEMCPlayerBase@@QAEPAVCMultimediaFactory@multimedia@@XZ @ 41 NONAME ; class multimedia::CMultimediaFactory * CMMAEMCPlayerBase::MMFactory(void)
- ?Players@MMAFunctionServer@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 42 NONAME ; class RPointerArray<class CMMAPlayer> & MMAFunctionServer::Players(void)
- ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 43 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *)
- ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 44 NONAME ; void CMMAPlayer::PostActionCompleted(int)
- ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 45 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void)
- ?SetPlayerInstanceObserver@MMAFunctionServer@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 46 NONAME ; void MMAFunctionServer::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *)
- ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 47 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *)
- ?RealizeL@CMMAEMCAudioPlayer@@UAEXXZ @ 48 NONAME ; void CMMAEMCAudioPlayer::RealizeL(void)
- ?ControlCount@CMMAPlayer@@QAEHXZ @ 49 NONAME ; int CMMAPlayer::ControlCount(void)
- ?DoSetLevelL@CMMAEMCAudioVolumeControl@@UAEXH@Z @ 50 NONAME ; void CMMAEMCAudioVolumeControl::DoSetLevelL(int)
- ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 51 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int)
- ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 52 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void)
- ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 53 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void)
- ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 54 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *)
- ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 55 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *)
- ??0CMMAVideoControl@@QAE@PAVMMMAGuiPlayer@@@Z @ 56 NONAME ; CMMAVideoControl::CMMAVideoControl(class MMMAGuiPlayer *)
- ?ClassName@CMMAVideoControl@@UBEABVTDesC16@@XZ @ 57 NONAME ; class TDesC16 const & CMMAVideoControl::ClassName(void) const
- ??1CMMAMMFPlayerFactory@@UAE@XZ @ 58 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void)
- ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 59 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int)
- ?PostActionCompletedFile@CMMAPlayer@@QAEXXZ @ 60 NONAME ; void CMMAPlayer::PostActionCompletedFile(void)
- ?DoGetLevelL@CMMAEMCAudioVolumeControl@@UAEHXZ @ 61 NONAME ; int CMMAEMCAudioVolumeControl::DoGetLevelL(void)
- ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 62 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &)
- ?Type@CMMAEMCAudioPlayer@@UAEABVTDesC16@@XZ @ 63 NONAME ; class TDesC16 const & CMMAEMCAudioPlayer::Type(void)
- ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 64 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *)
- ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 65 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void)
- ??0CMMAMMFPlayerFactory@@QAE@XZ @ 66 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void)
- ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 67 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *)
- ?StreamControl@CMMAEMCPlayerBase@@QAEPAVMStreamControl@multimedia@@XZ @ 68 NONAME ; class multimedia::MStreamControl * CMMAEMCPlayerBase::StreamControl(void)
- ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 69 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void)
- ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 70 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void)
- ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 71 NONAME ; int CMMAVolumeControl::AddLevelL(void)
- ?ConstructL@CMMAEMCAudioPlayer@@IAEXXZ @ 72 NONAME ; void CMMAEMCAudioPlayer::ConstructL(void)
- ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 73 NONAME ; class CMMAControl * CMMAPlayer::Control(int)
- ?PrefetchL@CMMAEMCAudioPlayer@@UAEXXZ @ 74 NONAME ; void CMMAEMCAudioPlayer::PrefetchL(void)
- ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 75 NONAME ; void CMMAVideoUrlPlayer::StopL(int)
- ??1CMMAVideoControl@@UAE@XZ @ 76 NONAME ; CMMAVideoControl::~CMMAVideoControl(void)
- ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVMMAFunctionServer@@PAV_jobject@@@Z @ 77 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class MMAFunctionServer *, class _jobject *)
+ ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 10 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void)
+ ??0CMMAEMCAudioVolumeControl@@IAE@AAVCMMAEMCAudioPlayer@@@Z @ 11 NONAME ; CMMAEMCAudioVolumeControl::CMMAEMCAudioVolumeControl(class CMMAEMCAudioPlayer &)
+ ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 12 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const
+ ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 13 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void)
+ ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 14 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &)
+ ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 15 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *)
+ ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 16 NONAME ; void CMMAVideoUrlPlayer::CloseL(void)
+ ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 17 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void)
+ ?NewL@CTimeOutTimer@@SAPAV1@HAAVMTimeOutNotify@@@Z @ 18 NONAME ; class CTimeOutTimer * CTimeOutTimer::NewL(int, class MTimeOutNotify &)
+ ?StartL@CMMAVideoUrlPlayer@@UAEXXZ @ 19 NONAME ; void CMMAVideoUrlPlayer::StartL(void)
+ ?ReadCompletedL@CMMAEMCAudioPlayer@@UAEXHABVTDesC8@@@Z @ 20 NONAME ; void CMMAEMCAudioPlayer::ReadCompletedL(int, class TDesC8 const &)
+ ?NewL@CMMAEMCAudioVolumeControl@@SAPAV1@AAVCMMAEMCAudioPlayer@@@Z @ 21 NONAME ; class CMMAEMCAudioVolumeControl * CMMAEMCAudioVolumeControl::NewL(class CMMAEMCAudioPlayer &)
+ ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 22 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &)
+ ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 23 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &)
+ ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 24 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *)
+ ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 25 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &)
+ ?StaticAddObjectFromHandleL@MMAFunctionServer@@SAXPAV1@H@Z @ 26 NONAME ; void MMAFunctionServer::StaticAddObjectFromHandleL(class MMAFunctionServer *, int)
+ ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 27 NONAME ; void CMMAVideoControl::SnapshotReady(void)
+ ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 28 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *)
+ ?PlayCompleteL@CMMAEMCAudioPlayer@@MAEXH@Z @ 29 NONAME ; void CMMAEMCAudioPlayer::PlayCompleteL(int)
+ ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 30 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *)
+ ?PrefetchDataL@CMMAEMCAudioPlayer@@MAEXABVTDesC8@@@Z @ 31 NONAME ; void CMMAEMCAudioPlayer::PrefetchDataL(class TDesC8 const &)
+ ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 32 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void)
+ ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 33 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *)
+ ??0CMMAEMCAudioPlayer@@IAE@PAVCMMAEMCResolver@@@Z @ 34 NONAME ; CMMAEMCAudioPlayer::CMMAEMCAudioPlayer(class CMMAEMCResolver *)
+ ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 35 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const
+ ??1CMMAVideoUrlPlayer@@UAE@XZ @ 36 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void)
+ ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 37 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int)
+ ??1CMMAEMCAudioPlayer@@UAE@XZ @ 38 NONAME ; CMMAEMCAudioPlayer::~CMMAEMCAudioPlayer(void)
+ ?MMFactory@CMMAEMCPlayerBase@@QAEPAVCMultimediaFactory@multimedia@@XZ @ 39 NONAME ; class multimedia::CMultimediaFactory * CMMAEMCPlayerBase::MMFactory(void)
+ ?Players@MMAFunctionServer@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 40 NONAME ; class RPointerArray<class CMMAPlayer> & MMAFunctionServer::Players(void)
+ ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 41 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *)
+ ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 42 NONAME ; void CMMAPlayer::PostActionCompleted(int)
+ ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 43 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void)
+ ?SetPlayerInstanceObserver@MMAFunctionServer@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 44 NONAME ; void MMAFunctionServer::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *)
+ ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 45 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *)
+ ?RealizeL@CMMAEMCAudioPlayer@@UAEXXZ @ 46 NONAME ; void CMMAEMCAudioPlayer::RealizeL(void)
+ ?ControlCount@CMMAPlayer@@QAEHXZ @ 47 NONAME ; int CMMAPlayer::ControlCount(void)
+ ?DoSetLevelL@CMMAEMCAudioVolumeControl@@UAEXH@Z @ 48 NONAME ; void CMMAEMCAudioVolumeControl::DoSetLevelL(int)
+ ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 49 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int)
+ ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 50 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void)
+ ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 51 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void)
+ ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 52 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *)
+ ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 53 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *)
+ ??0CMMAVideoControl@@QAE@PAVMMMAGuiPlayer@@@Z @ 54 NONAME ; CMMAVideoControl::CMMAVideoControl(class MMMAGuiPlayer *)
+ ?ClassName@CMMAVideoControl@@UBEABVTDesC16@@XZ @ 55 NONAME ; class TDesC16 const & CMMAVideoControl::ClassName(void) const
+ ??1CMMAMMFPlayerFactory@@UAE@XZ @ 56 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void)
+ ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 57 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int)
+ ?DoGetLevelL@CMMAEMCAudioVolumeControl@@UAEHXZ @ 58 NONAME ; int CMMAEMCAudioVolumeControl::DoGetLevelL(void)
+ ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 59 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &)
+ ?Type@CMMAEMCAudioPlayer@@UAEABVTDesC16@@XZ @ 60 NONAME ; class TDesC16 const & CMMAEMCAudioPlayer::Type(void)
+ ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 61 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *)
+ ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 62 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void)
+ ??0CMMAMMFPlayerFactory@@QAE@XZ @ 63 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void)
+ ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 64 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *)
+ ?StreamControl@CMMAEMCPlayerBase@@QAEPAVMStreamControl@multimedia@@XZ @ 65 NONAME ; class multimedia::MStreamControl * CMMAEMCPlayerBase::StreamControl(void)
+ ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 66 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void)
+ ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 67 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void)
+ ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 68 NONAME ; int CMMAVolumeControl::AddLevelL(void)
+ ?ConstructL@CMMAEMCAudioPlayer@@IAEXXZ @ 69 NONAME ; void CMMAEMCAudioPlayer::ConstructL(void)
+ ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 70 NONAME ; class CMMAControl * CMMAPlayer::Control(int)
+ ?PrefetchL@CMMAEMCAudioPlayer@@UAEXXZ @ 71 NONAME ; void CMMAEMCAudioPlayer::PrefetchL(void)
+ ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 72 NONAME ; void CMMAVideoUrlPlayer::StopL(int)
+ ??1CMMAVideoControl@@UAE@XZ @ 73 NONAME ; CMMAVideoControl::~CMMAVideoControl(void)
+ ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVMMAFunctionServer@@PAV_jobject@@@Z @ 74 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class MMAFunctionServer *, class _jobject *)
--- a/javauis/mmapi_qt/build/eabi/javamobilemediau.def Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/build/eabi/javamobilemediau.def Wed Jun 23 18:07:10 2010 +0300
@@ -7,142 +7,143 @@
_ZN10CMMAPlayer15PostStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 6 NONAME
_ZN10CMMAPlayer16AddSourceStreamLEP7JNIEnv_P17MMAFunctionServerP8_jobject @ 7 NONAME
_ZN10CMMAPlayer17AddStateListenerLEP23MMMAPlayerStateListener @ 8 NONAME
- _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 9 NONAME
- _ZN10CMMAPlayer7ControlEi @ 10 NONAME
- _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 11 NONAME
- _ZN13CTimeOutTimer4NewLEiR14MTimeOutNotify @ 12 NONAME
- _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 13 NONAME
- _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 14 NONAME
- _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 15 NONAME
- _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 16 NONAME
- _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 17 NONAME
- _ZN15CMMAVideoPlayer10SourceSizeEv @ 18 NONAME
- _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 19 NONAME
- _ZN15CMMAVideoPlayer11SnapshoterLEv @ 20 NONAME
- _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 21 NONAME
- _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 22 NONAME
- _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 23 NONAME
- _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 24 NONAME
- _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 25 NONAME
- _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 26 NONAME
- _ZN15CMMAVideoPlayer4TypeEv @ 27 NONAME
- _ZN16CMMAVideoControl13SnapshotReadyEv @ 28 NONAME
- _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 29 NONAME
- _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 30 NONAME
- _ZN16CMMAVideoControlD0Ev @ 31 NONAME
- _ZN16CMMAVideoControlD1Ev @ 32 NONAME
- _ZN16CMMAVideoControlD2Ev @ 33 NONAME
- _ZN17CMMAEMCPlayerBase13StreamControlEv @ 34 NONAME
- _ZN17CMMAEMCPlayerBase9MMFactoryEv @ 35 NONAME
- _ZN17CMMAMMFPlayerBase10ControllerEv @ 36 NONAME
- _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 37 NONAME
- _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 38 NONAME
- _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 39 NONAME
- _ZN17CMMAVolumeControl9AddLevelLEv @ 40 NONAME
- _ZN17MMAFunctionServer25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 41 NONAME
- _ZN17MMAFunctionServer26StaticAddObjectFromHandleLEPS_i @ 42 NONAME
- _ZN17MMAFunctionServer7PlayersEv @ 43 NONAME
- _ZN18CMMAEMCAudioPlayer10ConstructLEv @ 44 NONAME
- _ZN18CMMAEMCAudioPlayer13PlayCompleteLEi @ 45 NONAME
- _ZN18CMMAEMCAudioPlayer13PrefetchDataLERK6TDesC8 @ 46 NONAME
- _ZN18CMMAEMCAudioPlayer13PrefetchFileLEv @ 47 NONAME
- _ZN18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 48 NONAME
- _ZN18CMMAEMCAudioPlayer4TypeEv @ 49 NONAME
- _ZN18CMMAEMCAudioPlayer8RealizeLEv @ 50 NONAME
- _ZN18CMMAEMCAudioPlayer9PrefetchLEv @ 51 NONAME
- _ZN18CMMAEMCAudioPlayerC1EP15CMMAEMCResolver @ 52 NONAME
- _ZN18CMMAEMCAudioPlayerC2EP15CMMAEMCResolver @ 53 NONAME
- _ZN18CMMAEMCAudioPlayerD0Ev @ 54 NONAME
- _ZN18CMMAEMCAudioPlayerD1Ev @ 55 NONAME
- _ZN18CMMAEMCAudioPlayerD2Ev @ 56 NONAME
- _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 57 NONAME
- _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 58 NONAME
- _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 59 NONAME
- _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 60 NONAME
- _ZN18CMMAVideoUrlPlayer5StopLEi @ 61 NONAME
- _ZN18CMMAVideoUrlPlayer6CloseLEv @ 62 NONAME
- _ZN18CMMAVideoUrlPlayer6StartLEv @ 63 NONAME
- _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 64 NONAME
- _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 65 NONAME
- _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 66 NONAME
- _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 67 NONAME
- _ZN18CMMAVideoUrlPlayerD0Ev @ 68 NONAME
- _ZN18CMMAVideoUrlPlayerD1Ev @ 69 NONAME
- _ZN18CMMAVideoUrlPlayerD2Ev @ 70 NONAME
- _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 71 NONAME
- _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 72 NONAME
- _ZN20CMMAMMFPlayerFactoryC2Ev @ 73 NONAME
- _ZN20CMMAMMFPlayerFactoryD0Ev @ 74 NONAME
- _ZN20CMMAMMFPlayerFactoryD1Ev @ 75 NONAME
- _ZN20CMMAMMFPlayerFactoryD2Ev @ 76 NONAME
- _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 77 NONAME
- _ZN25CMMAEMCAudioVolumeControl11DoGetLevelLEv @ 78 NONAME
- _ZN25CMMAEMCAudioVolumeControl11DoSetLevelLEi @ 79 NONAME
- _ZN25CMMAEMCAudioVolumeControl4NewLER18CMMAEMCAudioPlayer @ 80 NONAME
- _ZN25CMMAEMCAudioVolumeControlC1ER18CMMAEMCAudioPlayer @ 81 NONAME
- _ZN25CMMAEMCAudioVolumeControlC2ER18CMMAEMCAudioPlayer @ 82 NONAME
- _ZNK11CMMAControl15PublicClassNameEv @ 83 NONAME
- _ZNK14CMMAMIDIPlayer10MidiClientEv @ 84 NONAME
- _ZNK16CMMAVideoControl9ClassNameEv @ 85 NONAME
- _ZTI10CMMAPlayer @ 86 NONAME
- _ZTI11CMMAControl @ 87 NONAME
- _ZTI13CTimeOutTimer @ 88 NONAME
- _ZTI14CMMAMIDIPlayer @ 89 NONAME
- _ZTI16CMMAVideoControl @ 90 NONAME
- _ZTI17CMMAMMFPlayerBase @ 91 NONAME
- _ZTI17CMMAStreamRequest @ 92 NONAME
- _ZTI17CMMAVolumeControl @ 93 NONAME
- _ZTI17MMAFunctionServer @ 94 NONAME
- _ZTI18CHXMetaDataUtility @ 95 NONAME
- _ZTI18CMMAVideoUrlPlayer @ 96 NONAME
- _ZTI20CMMAMMFPlayerFactory @ 97 NONAME
- _ZTI26CPlaybackCompletedCallback @ 98 NONAME
- _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 99 NONAME
- _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 100 NONAME
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 101 NONAME
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 102 NONAME
- _ZTIN19CMMAStopTimeControl10CStopTimerE @ 103 NONAME
- _ZTV10CMMAPlayer @ 104 NONAME
- _ZTV11CMMAControl @ 105 NONAME
- _ZTV13CTimeOutTimer @ 106 NONAME
- _ZTV14CMMAMIDIPlayer @ 107 NONAME
- _ZTV16CMMAVideoControl @ 108 NONAME
- _ZTV17CMMAMMFPlayerBase @ 109 NONAME
- _ZTV17CMMAStreamRequest @ 110 NONAME
- _ZTV17CMMAVolumeControl @ 111 NONAME
- _ZTV17MMAFunctionServer @ 112 NONAME
- _ZTV18CHXMetaDataUtility @ 113 NONAME
- _ZTV18CMMAVideoUrlPlayer @ 114 NONAME
- _ZTV20CMMAMMFPlayerFactory @ 115 NONAME
- _ZTV26CPlaybackCompletedCallback @ 116 NONAME
- _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 117 NONAME
- _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 118 NONAME
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 119 NONAME
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 120 NONAME
- _ZTVN19CMMAStopTimeControl10CStopTimerE @ 121 NONAME
- _ZThn160_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 122 NONAME
- _ZThn288_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 123 NONAME
- _ZThn288_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 124 NONAME
- _ZThn296_N15CMMAVideoPlayer10SourceSizeEv @ 125 NONAME
- _ZThn296_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 126 NONAME
- _ZThn296_N15CMMAVideoPlayer11SnapshoterLEv @ 127 NONAME
- _ZThn296_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 128 NONAME
- _ZThn296_N18CMMAVideoUrlPlayerD0Ev @ 129 NONAME
- _ZThn296_N18CMMAVideoUrlPlayerD1Ev @ 130 NONAME
- _ZThn300_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 131 NONAME
- _ZThn300_N15CMMAVideoPlayer14SnapshotBitmapEv @ 132 NONAME
- _ZThn300_N15CMMAVideoPlayer15SnapshotEncodedEv @ 133 NONAME
- _ZThn300_N18CMMAVideoUrlPlayerD0Ev @ 134 NONAME
- _ZThn300_N18CMMAVideoUrlPlayerD1Ev @ 135 NONAME
- _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 136 NONAME
- _ZThn4_N18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 137 NONAME
- _ZThn4_N18CMMAEMCAudioPlayerD0Ev @ 138 NONAME
- _ZThn4_N18CMMAEMCAudioPlayerD1Ev @ 139 NONAME
- _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 140 NONAME
- _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 141 NONAME
- _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 142 NONAME
- _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 143 NONAME
- _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 144 NONAME
- _ZThn8_N16CMMAVideoControlD0Ev @ 145 NONAME
- _ZThn8_N16CMMAVideoControlD1Ev @ 146 NONAME
+ _ZN10CMMAPlayer19PostActionCompletedEi @ 9 NONAME
+ _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 10 NONAME
+ _ZN10CMMAPlayer7ControlEi @ 11 NONAME
+ _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 12 NONAME
+ _ZN13CTimeOutTimer4NewLEiR14MTimeOutNotify @ 13 NONAME
+ _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 14 NONAME
+ _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 15 NONAME
+ _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 16 NONAME
+ _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 17 NONAME
+ _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 18 NONAME
+ _ZN15CMMAVideoPlayer10SourceSizeEv @ 19 NONAME
+ _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 20 NONAME
+ _ZN15CMMAVideoPlayer11SnapshoterLEv @ 21 NONAME
+ _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 22 NONAME
+ _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 23 NONAME
+ _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 24 NONAME
+ _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 25 NONAME
+ _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 26 NONAME
+ _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 27 NONAME
+ _ZN15CMMAVideoPlayer4TypeEv @ 28 NONAME
+ _ZN16CMMAVideoControl13SnapshotReadyEv @ 29 NONAME
+ _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 30 NONAME
+ _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 31 NONAME
+ _ZN16CMMAVideoControlD0Ev @ 32 NONAME
+ _ZN16CMMAVideoControlD1Ev @ 33 NONAME
+ _ZN16CMMAVideoControlD2Ev @ 34 NONAME
+ _ZN17CMMAEMCPlayerBase13StreamControlEv @ 35 NONAME
+ _ZN17CMMAEMCPlayerBase9MMFactoryEv @ 36 NONAME
+ _ZN17CMMAMMFPlayerBase10ControllerEv @ 37 NONAME
+ _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 38 NONAME
+ _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 39 NONAME
+ _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 40 NONAME
+ _ZN17CMMAVolumeControl9AddLevelLEv @ 41 NONAME
+ _ZN17MMAFunctionServer25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 42 NONAME
+ _ZN17MMAFunctionServer26StaticAddObjectFromHandleLEPS_i @ 43 NONAME
+ _ZN17MMAFunctionServer7PlayersEv @ 44 NONAME
+ _ZN18CMMAEMCAudioPlayer10ConstructLEv @ 45 NONAME
+ _ZN18CMMAEMCAudioPlayer13PlayCompleteLEi @ 46 NONAME
+ _ZN18CMMAEMCAudioPlayer13PrefetchDataLERK6TDesC8 @ 47 NONAME
+ _ZN18CMMAEMCAudioPlayer13PrefetchFileLEv @ 48 NONAME
+ _ZN18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 49 NONAME
+ _ZN18CMMAEMCAudioPlayer4TypeEv @ 50 NONAME
+ _ZN18CMMAEMCAudioPlayer8RealizeLEv @ 51 NONAME
+ _ZN18CMMAEMCAudioPlayer9PrefetchLEv @ 52 NONAME
+ _ZN18CMMAEMCAudioPlayerC1EP15CMMAEMCResolver @ 53 NONAME
+ _ZN18CMMAEMCAudioPlayerC2EP15CMMAEMCResolver @ 54 NONAME
+ _ZN18CMMAEMCAudioPlayerD0Ev @ 55 NONAME
+ _ZN18CMMAEMCAudioPlayerD1Ev @ 56 NONAME
+ _ZN18CMMAEMCAudioPlayerD2Ev @ 57 NONAME
+ _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 58 NONAME
+ _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 59 NONAME
+ _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 60 NONAME
+ _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 61 NONAME
+ _ZN18CMMAVideoUrlPlayer5StopLEi @ 62 NONAME
+ _ZN18CMMAVideoUrlPlayer6CloseLEv @ 63 NONAME
+ _ZN18CMMAVideoUrlPlayer6StartLEv @ 64 NONAME
+ _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 65 NONAME
+ _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 66 NONAME
+ _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 67 NONAME
+ _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 68 NONAME
+ _ZN18CMMAVideoUrlPlayerD0Ev @ 69 NONAME
+ _ZN18CMMAVideoUrlPlayerD1Ev @ 70 NONAME
+ _ZN18CMMAVideoUrlPlayerD2Ev @ 71 NONAME
+ _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 72 NONAME
+ _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 73 NONAME
+ _ZN20CMMAMMFPlayerFactoryC2Ev @ 74 NONAME
+ _ZN20CMMAMMFPlayerFactoryD0Ev @ 75 NONAME
+ _ZN20CMMAMMFPlayerFactoryD1Ev @ 76 NONAME
+ _ZN20CMMAMMFPlayerFactoryD2Ev @ 77 NONAME
+ _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 78 NONAME
+ _ZN25CMMAEMCAudioVolumeControl11DoGetLevelLEv @ 79 NONAME
+ _ZN25CMMAEMCAudioVolumeControl11DoSetLevelLEi @ 80 NONAME
+ _ZN25CMMAEMCAudioVolumeControl4NewLER18CMMAEMCAudioPlayer @ 81 NONAME
+ _ZN25CMMAEMCAudioVolumeControlC1ER18CMMAEMCAudioPlayer @ 82 NONAME
+ _ZN25CMMAEMCAudioVolumeControlC2ER18CMMAEMCAudioPlayer @ 83 NONAME
+ _ZNK11CMMAControl15PublicClassNameEv @ 84 NONAME
+ _ZNK14CMMAMIDIPlayer10MidiClientEv @ 85 NONAME
+ _ZNK16CMMAVideoControl9ClassNameEv @ 86 NONAME
+ _ZTI10CMMAPlayer @ 87 NONAME
+ _ZTI11CMMAControl @ 88 NONAME
+ _ZTI13CTimeOutTimer @ 89 NONAME
+ _ZTI14CMMAMIDIPlayer @ 90 NONAME
+ _ZTI16CMMAVideoControl @ 91 NONAME
+ _ZTI17CMMAMMFPlayerBase @ 92 NONAME
+ _ZTI17CMMAStreamRequest @ 93 NONAME
+ _ZTI17CMMAVolumeControl @ 94 NONAME
+ _ZTI17MMAFunctionServer @ 95 NONAME
+ _ZTI18CHXMetaDataUtility @ 96 NONAME
+ _ZTI18CMMAVideoUrlPlayer @ 97 NONAME
+ _ZTI20CMMAMMFPlayerFactory @ 98 NONAME
+ _ZTI26CPlaybackCompletedCallback @ 99 NONAME
+ _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 100 NONAME
+ _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 101 NONAME
+ _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 102 NONAME
+ _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 103 NONAME
+ _ZTIN19CMMAStopTimeControl10CStopTimerE @ 104 NONAME
+ _ZTV10CMMAPlayer @ 105 NONAME
+ _ZTV11CMMAControl @ 106 NONAME
+ _ZTV13CTimeOutTimer @ 107 NONAME
+ _ZTV14CMMAMIDIPlayer @ 108 NONAME
+ _ZTV16CMMAVideoControl @ 109 NONAME
+ _ZTV17CMMAMMFPlayerBase @ 110 NONAME
+ _ZTV17CMMAStreamRequest @ 111 NONAME
+ _ZTV17CMMAVolumeControl @ 112 NONAME
+ _ZTV17MMAFunctionServer @ 113 NONAME
+ _ZTV18CHXMetaDataUtility @ 114 NONAME
+ _ZTV18CMMAVideoUrlPlayer @ 115 NONAME
+ _ZTV20CMMAMMFPlayerFactory @ 116 NONAME
+ _ZTV26CPlaybackCompletedCallback @ 117 NONAME
+ _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 118 NONAME
+ _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 119 NONAME
+ _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 120 NONAME
+ _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 121 NONAME
+ _ZTVN19CMMAStopTimeControl10CStopTimerE @ 122 NONAME
+ _ZThn160_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 123 NONAME
+ _ZThn288_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 124 NONAME
+ _ZThn288_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 125 NONAME
+ _ZThn296_N15CMMAVideoPlayer10SourceSizeEv @ 126 NONAME
+ _ZThn296_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 127 NONAME
+ _ZThn296_N15CMMAVideoPlayer11SnapshoterLEv @ 128 NONAME
+ _ZThn296_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 129 NONAME
+ _ZThn296_N18CMMAVideoUrlPlayerD0Ev @ 130 NONAME
+ _ZThn296_N18CMMAVideoUrlPlayerD1Ev @ 131 NONAME
+ _ZThn300_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 132 NONAME
+ _ZThn300_N15CMMAVideoPlayer14SnapshotBitmapEv @ 133 NONAME
+ _ZThn300_N15CMMAVideoPlayer15SnapshotEncodedEv @ 134 NONAME
+ _ZThn300_N18CMMAVideoUrlPlayerD0Ev @ 135 NONAME
+ _ZThn300_N18CMMAVideoUrlPlayerD1Ev @ 136 NONAME
+ _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 137 NONAME
+ _ZThn4_N18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 138 NONAME
+ _ZThn4_N18CMMAEMCAudioPlayerD0Ev @ 139 NONAME
+ _ZThn4_N18CMMAEMCAudioPlayerD1Ev @ 140 NONAME
+ _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 141 NONAME
+ _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 142 NONAME
+ _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 143 NONAME
+ _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 144 NONAME
+ _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 145 NONAME
+ _ZThn8_N16CMMAVideoControlD0Ev @ 146 NONAME
+ _ZThn8_N16CMMAVideoControlD1Ev @ 147 NONAME
--- a/javauis/mmapi_qt/directcontent/inc/cmmadcdisplay.h Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/directcontent/inc/cmmadcdisplay.h Wed Jun 23 18:07:10 2010 +0300
@@ -48,13 +48,14 @@
* @param aPlayer provides content
*/
static CMMADCDisplay* NewLC(MMMAGuiPlayer* aPlayer,
- MMAFunctionServer* aEventSource,
- jobject aGUIObject);
- virtual ~CMMADCDisplay();
+ MMAFunctionServer* aEventSource,
+ JNIEnv* aJni,
+ jobject aGUIObject);
+ virtual ~CMMADCDisplay();
public: // From MMMADisplay
void DrawFrameL(const CFbsBitmap* aBitmap);
- void SetDisplaySizeL(const TSize& aSize);
+ //void SetDisplaySizeL(const TSize& aSize);
void SetDisplayLocationL(const TPoint& aPosition);
TPoint DisplayLocation();
void SetFullScreenL(TBool aFullScreen);
--- a/javauis/mmapi_qt/directcontent/src/cmmadcdisplay.cpp Fri Jun 11 13:33:44 2010 +0300
+++ b/javauis/mmapi_qt/directcontent/src/cmmadcdisplay.cpp Wed Jun 23 18:07:10 2010 +0300
@@ -35,12 +35,16 @@
// Static constructor, leaves pointer to cleanup-stack
CMMADCDisplay* CMMADCDisplay::NewLC(MMMAGuiPlayer* aPlayer,
MMAFunctionServer* aEventSource,
+ JNIEnv* aJni,
jobject aGUIObject)
{
CMMADCDisplay* self =
new(ELeave) CMMADCDisplay(aPlayer, aEventSource, aGUIObject);
CleanupStack::PushL(self);
self->iRepaint = new(ELeave) CMMADCRepaintEvent(aGUIObject);
+ self->iIseSWT = ETrue;
+ self->Construct(aEventSource, aJni, aGUIObject);
+
return self;
}
@@ -75,7 +79,7 @@
}
}
}
-
+/*
// interface MMMADisplay
void CMMADCDisplay::SetDisplaySizeL(const TSize& aSize)
{
@@ -91,7 +95,7 @@
iEventSource->PostEvent(event, CMMAEvent::EEventPriority);
}
}
-
+*/
// interface MMMADisplay
void CMMADCDisplay::SetDisplayLocationL(const TPoint& /*aPosition*/)
{
@@ -110,19 +114,106 @@
}
// interface MMMADisplay
+
void CMMADCDisplay::SetFullScreenL(TBool aFullScreen)
{
LOG1(EJavaMMAPI, EInfo, "CMMADCDisplay::SetFullScreenL %d", aFullScreen);
// This method tries to set eSWT Widget size to its parent size.
// If real full screen mode is needed parent Composite must be in
// fullscreen mode (for example with MobileShell's setFullScreenMode method).
- if (iContainer)
+ //if (iContainer)
+ //{
+ // CMMADCFullScreenEvent* event =
+ // new(ELeave)CMMADCFullScreenEvent(iGUIObject, aFullScreen);
+ // iEventSource->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
--- 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() - ");
--- 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 -");
--- 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;
}
--- 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()");
}
}
--- 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 @@
<property name="midlet.permissions" value=""/>
<property name="package.name" value="Midp_Alert_01"/>
<property name="company.name" value="Nokia"/>
- <property name="midlet.version" value="1.1"/>
+ <property name="midlet.version" value="1.2"/>
<property name="midlet.description" value=""/>
<!-- Get settings for a basic MIDlet. -->
--- 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)
{
--- 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 <data_caging_paths_for_iby.hrh>
-
-// 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
--- /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 <data_caging_paths_for_iby.hrh>
+
+// 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
--- 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 //