# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1277123570 -10800 # Node ID 4376525cdefb089cb1b83c32fe58b463c36ebda1 # Parent 71c436fe3ce075d1edd4a02ff8db85bbf9f4491e Revision: v2.1.30 Kit: 2010125 diff -r 71c436fe3ce0 -r 4376525cdefb build/Makefile.comp --- a/build/Makefile.comp Wed Jun 09 09:34:07 2010 +0300 +++ b/build/Makefile.comp Mon Jun 21 15:32:50 2010 +0300 @@ -119,7 +119,7 @@ # Symbian ---------------------------------- ifeq ($(BUILDENV),symbian) -all: qmake java native +all: qmake java native codescanner # Extract basename of current component BASENAME = $(basename $(PRO_FILE)) @@ -170,6 +170,12 @@ clean_qmake: -$(call RMFILES,abld.bat bld.inf* Makefile* $(BASENAME).mmp $(BASENAME)_*.mmp $(BASENAME)_*.pkg $(BASENAME)_reg.rss eabi_stl4/*) +# Use Carbide CodeScanner to list high-level issues +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,..) +endif + # Symbian SBS ------------------------------ ifdef USESBS diff -r 71c436fe3ce0 -r 4376525cdefb build/Makefile.defs --- a/build/Makefile.defs Wed Jun 09 09:34:07 2010 +0300 +++ b/build/Makefile.defs Mon Jun 21 15:32:50 2010 +0300 @@ -57,6 +57,7 @@ MKDIR = if [ ! -d $(1)]; then mkdir $(1); fi RMDIR = if [ -d $(1)]; then rmdir $(1); fi DELTREE = if [ -d $(1)]; then rm -fr $(1); fi + PATHSEARCH = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) else # CMD.exe definitions @@ -74,6 +75,7 @@ MKDIR = if not exist $(1) mkdir $(1) RMDIR = if exist $(1) rmdir $(1) DELTREE = if exist $(1) rmdir /S/Q $(1) + PATHSEARCH = $(firstword $(wildcard $(addsuffix /$(1),$(subst ;, ,$(PATH))))) endif @@ -103,6 +105,7 @@ export ANT_OPTS= BLDMAKE = perl -S bldmake.pl ABLDMAKE = set MAKELEVEL=&&set MAKEFLAGS=&&set MFLAGS=&&make -r + CODESCANNER = codescanner -c $(JAVA_SRC_ROOT)/build/codescanner_high.xml -o std $(1) | perl -ne "print if /error:/;" ifdef NODEP # Makmake does not make dependency checks with this flag diff -r 71c436fe3ce0 -r 4376525cdefb build/Makefile.nonqt --- a/build/Makefile.nonqt Wed Jun 09 09:34:07 2010 +0300 +++ b/build/Makefile.nonqt Mon Jun 21 15:32:50 2010 +0300 @@ -43,19 +43,24 @@ # Symbian ---------------------------------- ifeq ($(BUILDENV),symbian) -all: native +all: native codescanner javareleasables: makestubs: +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,..) +endif + # Symbian SBS ------------------------------ ifdef USESBS # BUILD combines commands EXPORT MAKEFILE BITMAP RESOURCE LIBRARY TARGET FINAL native: $(PHASEINFO) - $(SBS) -c $(PLATFORM)_$(CFG) BUILD + $(SBS) -c $(PLATFORM)_$(CFG) clean_java: diff -r 71c436fe3ce0 -r 4376525cdefb build/Makefile.subsystem --- a/build/Makefile.subsystem Wed Jun 09 09:34:07 2010 +0300 +++ b/build/Makefile.subsystem Mon Jun 21 15:32:50 2010 +0300 @@ -188,6 +188,11 @@ bld.inf: $(MAKE) -f subsystem.mk makestubs qmake +# Use Carbide CodeScanner to list high-level issues +codescanner: +ifneq ($(call PATHSEARCH,codescanner.exe),) + $(call CODESCANNER,.) +endif # Symbian SBS ------------------------------ ifdef USESBS diff -r 71c436fe3ce0 -r 4376525cdefb build/loc/resources.jar Binary file build/loc/resources.jar has changed diff -r 71c436fe3ce0 -r 4376525cdefb build/loc/resources_qt.jar Binary file build/loc/resources_qt.jar has changed diff -r 71c436fe3ce0 -r 4376525cdefb build/makefile.javaversion --- a/build/makefile.javaversion Wed Jun 09 09:34:07 2010 +0300 +++ b/build/makefile.javaversion Mon Jun 21 15:32:50 2010 +0300 @@ -1,6 +1,6 @@ # Set Java version (must be dot separated, without spaces) ifdef RD_JAVA_S60_RELEASE_5_0_IAD - JAVA_VERSION = 2.1.28 + JAVA_VERSION = 2.1.30 else - JAVA_VERSION = 2.1.28 + JAVA_VERSION = 2.1.30 endif diff -r 71c436fe3ce0 -r 4376525cdefb inc/build_defines.hrh --- a/inc/build_defines.hrh Wed Jun 09 09:34:07 2010 +0300 +++ b/inc/build_defines.hrh Mon Jun 21 15:32:50 2010 +0300 @@ -15,7 +15,7 @@ * */ -#define RD_JAVA_VERSION 2,1,28 +#define RD_JAVA_VERSION 2,1,30 #define RD_JAVA_SYMBIAN_TARGET #define RD_JAVA_S60_RELEASE_9_2 #define RD_JAVA_S60_RELEASE_9_2_ONWARDS diff -r 71c436fe3ce0 -r 4376525cdefb inc/java.txt --- a/inc/java.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/inc/java.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,1 +1,1 @@ -2.1.28 +2.1.30 diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/comms/build/comms_0x2002DCA6.mmp --- a/javacommons/comms/build/comms_0x2002DCA6.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/comms/build/comms_0x2002DCA6.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -143,3 +143,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacomms.def +#elif defined EABI +DEFFILE ./eabi/javacomms.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/comms/ipclib/clientserver/build/ipc_0x2002DCB7.mmp --- a/javacommons/comms/ipclib/clientserver/build/ipc_0x2002DCB7.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/comms/ipclib/clientserver/build/ipc_0x2002DCB7.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -136,3 +136,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaipc.def +#elif defined EABI +DEFFILE ./eabi/javaipc.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/connectionmanager/build/javaconnectionmanager_0x2002DCA7.mmp --- a/javacommons/connectionmanager/build/javaconnectionmanager_0x2002DCA7.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/connectionmanager/build/javaconnectionmanager_0x2002DCA7.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -141,3 +141,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaconnectionmanager.def +#elif defined EABI +DEFFILE ./eabi/javaconnectionmanager.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/fileutils/build/fileutils_0x2002DCAD.mmp --- a/javacommons/fileutils/build/fileutils_0x2002DCAD.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/fileutils/build/fileutils_0x2002DCAD.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -158,3 +158,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javafileutils.def +#elif defined EABI +DEFFILE ./eabi/javafileutils.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfbase/build/javagcf_0x2002DCAE.mmp --- a/javacommons/gcfbase/build/javagcf_0x2002DCAE.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfbase/build/javagcf_0x2002DCAE.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -146,3 +146,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javagcf.def +#elif defined EABI +DEFFILE ./eabi/javagcf.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java --- a/javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -115,7 +115,7 @@ */ public String toString() { - return "javax.microedition.io.PushRegistryPermission"; + return "javax.microedition.io.PushRegistry"; } /** diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/file/build/javafile_0x2002DCAC.mmp --- a/javacommons/gcfprotocols/file/build/javafile_0x2002DCAC.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/file/build/javafile_0x2002DCAC.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -137,3 +137,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javafile.def +#elif defined EABI +DEFFILE ./eabi/javafile.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java --- a/javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java Mon Jun 21 15:32:50 2010 +0300 @@ -95,7 +95,17 @@ public String toString() { - return "javax.microedition.io.FileProtocolPermission"; + if (intent.equals("read")) + { + return "javax.microedition.io.Connector.file.read"; + } + + if (intent.equals("write")) + { + return "javax.microedition.io.Connector.file.write"; + } + + return null; } /** diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/http/build/javahttp_0x2002DCB1.mmp --- a/javacommons/gcfprotocols/http/build/javahttp_0x2002DCB1.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/http/build/javahttp_0x2002DCB1.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -154,3 +154,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javahttp.def +#elif defined EABI +DEFFILE ./eabi/javahttp.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java --- a/javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -45,7 +45,7 @@ public String toString() { - return "javax.microedition.io.HttpProtocolPermission"; + return "javax.microedition.io.Connector.http"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/https/build/javahttps_0x2002DCB2.mmp --- a/javacommons/gcfprotocols/https/build/javahttps_0x2002DCB2.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/https/build/javahttps_0x2002DCB2.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -147,3 +147,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javahttps.def +#elif defined EABI +DEFFILE ./eabi/javahttps.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java --- a/javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -51,7 +51,7 @@ public String toString() { - return "javax.microedition.io.HttpsProtocolPermission"; + return "javax.microedition.io.Connector.https"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/secureconnection/build/javassl_0x2002DCD7.mmp --- a/javacommons/gcfprotocols/secureconnection/build/javassl_0x2002DCD7.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/secureconnection/build/javassl_0x2002DCD7.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -149,3 +149,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javassl.def +#elif defined EABI +DEFFILE ./eabi/javassl.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java --- a/javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -55,7 +55,7 @@ public String toString() { - return "javax.microedition.io.SSLProtocolPermission"; + return "javax.microedition.io.Connector.ssl"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/socket/serverconnection/build/javasocketscplugin_0x2002DCD5.mmp --- a/javacommons/gcfprotocols/socket/serverconnection/build/javasocketscplugin_0x2002DCD5.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/socket/serverconnection/build/javasocketscplugin_0x2002DCD5.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -135,3 +135,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasocketscplugin.def +#elif defined EABI +DEFFILE ./eabi/javasocketscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/socket/socket/build/javasocket_0x2002DCD4.mmp --- a/javacommons/gcfprotocols/socket/socket/build/javasocket_0x2002DCD4.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/socket/socket/build/javasocket_0x2002DCD4.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -150,3 +150,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasocket.def +#elif defined EABI +DEFFILE ./eabi/javasocket.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java --- a/javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -55,7 +55,7 @@ public String toString() { - return "javax.microedition.io.SocketProtocolPermission"; + return "javax.microedition.io.Connector.socket"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/javaenv/build/javaenv_0x2001B2A5.mmp --- a/javacommons/javaenv/build/javaenv_0x2001B2A5.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/javaenv/build/javaenv_0x2001B2A5.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -128,3 +128,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaenvinfo.def +#elif defined EABI +DEFFILE ./eabi/javaenvinfo.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/javastorage/build/javastorage_0x2002DCD8.mmp --- a/javacommons/javastorage/build/javastorage_0x2002DCD8.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/javastorage/build/javastorage_0x2002DCD8.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -153,3 +153,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javastorage.def +#elif defined EABI +DEFFILE ./eabi/javastorage.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/jvms/j9utils/threaddump/build/javathreaddumper_0x2002DCD9.mmp --- a/javacommons/jvms/j9utils/threaddump/build/javathreaddumper_0x2002DCD9.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/jvms/j9utils/threaddump/build/javathreaddumper_0x2002DCD9.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -130,3 +130,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javathreaddumper.def +#elif defined EABI +DEFFILE ./eabi/javathreaddumper.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/jvms/nativeportlayer/build/jvmnativeport_0x2002DCDE.mmp --- a/javacommons/jvms/nativeportlayer/build/jvmnativeport_0x2002DCDE.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/jvms/nativeportlayer/build/jvmnativeport_0x2002DCDE.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/jvmnativeport.def +#elif defined EABI +DEFFILE ./eabi/jvmnativeport.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/build/javasecurity_0x2002DCCF.mmp --- a/javacommons/security/build/javasecurity_0x2002DCCF.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/build/javasecurity_0x2002DCCF.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -168,3 +168,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasecurity.def +#elif defined EABI +DEFFILE ./eabi/javasecurity.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/att_manufacturer.txt --- a/javacommons/security/data/att_manufacturer.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/att_manufacturer.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/att_operatorextra.txt --- a/javacommons/security/data/att_operatorextra.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/att_operatorextra.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } \ No newline at end of file diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/msa_manufacturer.txt --- a/javacommons/security/data/msa_manufacturer.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/msa_manufacturer.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/msa_operator.txt --- a/javacommons/security/data/msa_operator.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/msa_operator.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/msa_trustedthirdparty.txt --- a/javacommons/security/data/msa_trustedthirdparty.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/msa_trustedthirdparty.txt Mon Jun 21 15:32:50 2010 +0300 @@ -71,6 +71,8 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/msa_untrusted.txt --- a/javacommons/security/data/msa_untrusted.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/msa_untrusted.txt Mon Jun 21 15:32:50 2010 +0300 @@ -60,6 +60,8 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/s60_manufacturer.txt --- a/javacommons/security/data/s60_manufacturer.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/s60_manufacturer.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/s60_operator.txt --- a/javacommons/security/data/s60_operator.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/s60_operator.txt Mon Jun 21 15:32:50 2010 +0300 @@ -36,5 +36,7 @@ grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/s60_trustedthirdparty.txt --- a/javacommons/security/data/s60_trustedthirdparty.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/s60_trustedthirdparty.txt Mon Jun 21 15:32:50 2010 +0300 @@ -72,6 +72,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { + +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/data/s60_untrusted.txt --- a/javacommons/security/data/s60_untrusted.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/data/s60_untrusted.txt Mon Jun 21 15:32:50 2010 +0300 @@ -60,6 +60,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } -grant assigned { + +grant assigned "Location" { permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java --- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Mon Jun 21 15:32:50 2010 +0300 @@ -359,7 +359,8 @@ ((PolicyBasedPermission)grantedPermissions.elementAt(i)); UserSecuritySettings settings = permission.getUserSecuritySettings(); - if (settings == null) + if (permission.getType() != PolicyBasedPermission.USER_TYPE + || settings == null) { // not a user permission -> move on to the next permission Logger.log("Permission " + permission.getName() + " is not a user permission, therefore is is not returned as part of the group of blanket permissions"); @@ -586,7 +587,9 @@ for (int i=0; i hande it as deny + Logger.logWarning("User permission was denied by platform since it did not provide any security prompt question " + userPermission); + return handleDenyAnswer(settings); + } // check if the two texts are equal if ((mostPowerfulInteractionModeText != null && mostPowerfulInteractionModeText.equalsIgnoreCase( diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java Mon Jun 21 15:32:50 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://*")); diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java Mon Jun 21 15:32:50 2010 +0300 @@ -26,6 +26,7 @@ public static final int USER_TYPE = 1; public static final int ALLOWED_TYPE = 2; public static final int ASSIGNED_TYPE = 3; + public static final int USER_ASSIGNED_TYPE = 4; public String getName(); public String getTarget(); diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -33,17 +33,27 @@ String name, String target, String actionList, + int type, UserSecuritySettings userSettings, PermissionBase securityPromptDetails) { super(name, target, actionList, userSettings, securityPromptDetails); + this.type = type; + } - this.type = USER_TYPE; + public PolicyBasedPermissionImpl( + String name, + String target, + String actionList, + int type, + UserSecuritySettings userSettings) + { + this(name, target, actionList, type, userSettings, null); } public PolicyBasedPermissionImpl(PolicyBasedPermission p) { - this(p.getName(), p.getTarget(), p.getActionList(), + this(p.getName(), p.getTarget(), p.getActionList(), p.getType(), (p.getUserSecuritySettings() != null ? new UserSecuritySettingsImpl(p.getUserSecuritySettings().getName(), p.getUserSecuritySettings().getCurrentInteractionMode(), @@ -57,7 +67,7 @@ String actionList, UserSecuritySettings userSettings) { - this(name, target, actionList, userSettings, null); + this(name, target, actionList, USER_TYPE, userSettings, null); } @@ -67,10 +77,7 @@ String actionList, int type) { - super(name, target, actionList, null); - - // Check type - this.type = type; + this(name, target, actionList, type, null, null); } public int getType() diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java Mon Jun 21 15:32:50 2010 +0300 @@ -25,6 +25,7 @@ public interface UserSecuritySettings { // interaction modes + public static final int UNDEFINED_INTERACTION_MODE = -1; public static final int ONESHOT_INTERACTION_MODE = 1; public static final int SESSION_INTERACTION_MODE = 2; public static final int BLANKET_INTERACTION_MODE = 3; @@ -55,6 +56,7 @@ public static final String SECURITY_WARNINGS_DEFAULT_MODE = "2"; public String getName(); + public boolean isActive(); public int getCurrentInteractionMode(); public int[] getAllowedInteractionModes(); public boolean isInteractionModeAllowed(int interactionMode); diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -33,6 +33,7 @@ private int[] allowedInteractionModes; private boolean blanketPrompt; private static ResourceLoader resLoader = null; + private boolean active; private static final String NET_ACCESS_ID = "setting_net_access"; private static final String LOW_LEVEL_NET_ACCESS_ID = "setting_low_level_net_access"; @@ -65,12 +66,28 @@ String name, int currentInteractionMode, int[] allowedInteractionModes, - boolean blanketPrompt) + boolean blanketPrompt, + boolean active) { this.name = name; setCurrentInteractionMode(currentInteractionMode); setAllowedInteractionModes(allowedInteractionModes); this.blanketPrompt = blanketPrompt; + this.active = active; + } + + public UserSecuritySettingsImpl( + String name, + int currentInteractionMode, + int[] allowedInteractionModes, + boolean blanketPrompt) + { + this(name, currentInteractionMode, allowedInteractionModes, blanketPrompt, true); + } + + public boolean isActive() + { + return active; } public String getName() diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Mon Jun 21 15:32:50 2010 +0300 @@ -314,12 +314,13 @@ StorageNames.NAME); String actionList = getStorageAttributeValue(permEntries[i], StorageNames.ACTION); - String fgName = getStorageAttributeValue(permEntries[i], - StorageNames.FUNCTION_GROUP); - if (fgName != null) + FunctionGroup fg = decodeFunctionGroup( + getStorageAttributeValue(permEntries[i], + StorageNames.FUNCTION_GROUP)); + if (fg != null) { UserSecuritySettings cachedSettings = - (UserSecuritySettings)fGroups.get(fgName); + (UserSecuritySettings)fGroups.get(fg.name); if (cachedSettings != null) { permissions.addElement( @@ -327,6 +328,7 @@ className, target, actionList, + fg.type, cachedSettings)); } else @@ -338,7 +340,7 @@ appUID.getStringValue())); fgQuery.addAttribute(new StorageAttribute( StorageNames.FUNCTION_GROUP, - fgName)); + fg.name)); fgQuery.addAttribute(new StorageAttribute( StorageNames.ALLOWED_SETTINGS, "")); @@ -364,17 +366,19 @@ String blanketPrompt = getStorageAttributeValue(fgEntries[0], StorageNames.BLANKET_PROMPT); UserSecuritySettings settings = new UserSecuritySettingsImpl( - fgName, + fg.name, currentSetting, decodeAllowedSettings(allowedSettings), - ("1".equals(blanketPrompt) ? true : false)); + ("1".equals(blanketPrompt) ? true : false), + fg.isActive); permissions.addElement( new PolicyBasedPermissionImpl( className, target, actionList, + fg.type, settings)); - fGroups.put(fgName, settings); + fGroups.put(fg.name, settings); } catch (NumberFormatException e) { @@ -394,7 +398,10 @@ null)); } // cleanup the query, so it can be used at the next interation - query.removeAttribute(fgName); + if (fg != null) + { + query.removeAttribute(fg.name); + } } } // add the non user permissions into the set of returned permissions @@ -483,7 +490,33 @@ StorageAttribute fgAttribute = new StorageAttribute( StorageNames.FUNCTION_GROUP, fgName); - permEntry.addAttribute(fgAttribute); + if (p.getType() == PolicyBasedPermission.USER_ASSIGNED_TYPE + || !settings.isActive()) + { + // the inactive settings or the settings of assigned + // permissions with user settings should be activated + // only after the first usage of the permission. + // Otherwise it creates confusion for the user, + // like in the following use cases: + // 1) the installation time dialog would include the assigned + // permissions even though the MIDlet did not request it + // 2) after installing a MIDlet suite and before accessing + // some protected functionality (which is guarder by + // assigned permission with user setting) the user sees + // the settings of the permissions in the MIDlet settings + // (even though the MIDlet might never access such + // functionality) + // + // disabling the settings = alter the name of the function + // group stored in PERMISSIONS table + permEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + encodeFunctionGroup(p.getType(),fgName))); + } + else + { + permEntry.addAttribute(fgAttribute); + } // Do we need to check if the settings which already exist // are equal to the ones which are to be inserted? // This won't even happen, since all the settings are read @@ -722,6 +755,10 @@ validCerts)); } int securityWarningsMode = data.getSecurityWarningsMode(); + if (update) + { + securityWarningsMode = readSecurityWarningsMode(appUID); + } if (securityWarningsMode == GeneralSecuritySettings.DEFAULT_SECURITY_MODE || securityWarningsMode == GeneralSecuritySettings.USER_SECURITY_MODE) { @@ -1014,6 +1051,42 @@ } } } + + /** + * Activates user security settings + * + * @param appUID the UID of the application whose user + settings are activatesversion is read + * @param settingsName the name of permission whose settings + * which are activated + */ + public void activateUserSecuritySettings( + Uid msUID, + PolicyBasedPermission permission) + { + if (permission.getUserSecuritySettings() == null) + { + return; + } + StorageEntry oldEntry = new StorageEntry(); + oldEntry.addAttribute(new StorageAttribute( + StorageAttribute.ID, + msUID.getStringValue())); + oldEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + encodeFunctionGroup(permission.getType(), + permission.getUserSecuritySettings().getName()))); + StorageEntry newEntry = new StorageEntry(); + newEntry.addAttribute(new StorageAttribute( + StorageAttribute.ID, + msUID.getStringValue())); + newEntry.addAttribute(new StorageAttribute( + StorageNames.FUNCTION_GROUP, + permission.getUserSecuritySettings().getName())); + doStorageUpdate(StorageNames.MIDP_PERMISSIONS_TABLE, + newEntry, + oldEntry); + } /** * Reads the value of the suite version attribute @@ -1213,16 +1286,24 @@ if (oldSettings != null && newSettings != null) { + boolean activeSettings = false; + if (oldSettings.isActive() + || newSettings.isActive()) + { + activeSettings = true; + } newGrantedPermissions.addElement( new PolicyBasedPermissionImpl( p.getName(), p.getTarget(), p.getActionList(), + p.getType(), new UserSecuritySettingsImpl( newSettings.getName(), oldSettings.getCurrentInteractionMode(), newSettings.getAllowedInteractionModes(), - oldSettings.getBlanketPrompt()))); + oldSettings.getBlanketPrompt(), + activeSettings))); } else { @@ -1792,4 +1873,46 @@ } return NOT_FOUND; } + + private String encodeFunctionGroup(int type, String name) + { + return (type + ";" + name); + } + + private FunctionGroup decodeFunctionGroup(String fg) + { + boolean isActive = true; + if (fg != null) + { + int sepIndex = fg.indexOf(";"); + int type = PolicyBasedPermission.USER_TYPE; + if (sepIndex != -1) + { + isActive = false; + try + { + type = Integer.valueOf( + fg.substring(0, sepIndex)).intValue(); + } + catch (NumberFormatException e) + { + } + } + return new FunctionGroup(type, fg.substring(sepIndex + 1), isActive); + } + return null; + } + + private class FunctionGroup + { + FunctionGroup(int type, String name, boolean isActive) + { + this.type = type; + this.name = name; + this.isActive = isActive; + } + private boolean isActive; + private int type; + private String name; + } } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/src.s60/telutils.cpp --- a/javacommons/security/src.s60/telutils.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/src.s60/telutils.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -63,6 +63,18 @@ } } +signed int TelUtils::getSecureTime() +{ + TTime t; + if (t.UniversalTimeSecure()) + { + t.UniversalTime(); + } + TTimeIntervalSeconds sec; + TTime baseTime(MAKE_TINT64(0x00dcddb3 ,0x0f2f8000)); // 1st Jan 1970 + t.SecondsFrom(baseTime, sec); + return sec.Int(); +} void TelUtils::ConstructL() { diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/src.s60/telutils.h --- a/javacommons/security/src.s60/telutils.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/src.s60/telutils.h Mon Jun 21 15:32:50 2010 +0300 @@ -35,6 +35,7 @@ static TelUtils* createInstance(); void getNetworkCodes(std::string& mnc, std::string& mcc); void getImei(std::string& imei); + static signed int getSecureTime(); virtual ~TelUtils(); private: //Methods diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/src/midpauthenticationmoduleimpl.cpp --- a/javacommons/security/src/midpauthenticationmoduleimpl.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/src/midpauthenticationmoduleimpl.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -22,6 +22,7 @@ #include "midpauthenticationmoduleimpl.h" #include "storagehandler.h" #include "securityutils.h" +#include "telutils.h" #include "javacertstorehandler.h" #include "securitycommsmessagedefs.h" #include "javastorage.h" @@ -38,7 +39,6 @@ #include #include #include -#include #include using namespace java::security; @@ -455,9 +455,7 @@ break; } - struct timeval tv; - int i = gettimeofday(&tv, NULL); - X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, tv.tv_sec); + X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, TelUtils::getSecureTime()); // set the callback for validation - needed for the critical extension // used by developer certificates X509_STORE_CTX_set_verify_cb(x509_ctx, verify_callback); @@ -475,7 +473,7 @@ { bool extKeyUsageKnown = false; char EXT_KEY_USAGE_OID[80]; - for (i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) + for (int i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) { ASN1_OBJECT *usage = sk_ASN1_OBJECT_value(extKeyUsage,i); OBJ_obj2txt(EXT_KEY_USAGE_OID, diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java --- a/javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java Mon Jun 21 15:32:50 2010 +0300 @@ -32,6 +32,11 @@ return null; } + public boolean isActive() + { + return true; + } + public int getCurrentInteractionMode() { return 0; diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java --- a/javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java Mon Jun 21 15:32:50 2010 +0300 @@ -22,6 +22,11 @@ private class myInnerClass implements com.nokia.mj.impl.security.midp.common.UserSecuritySettings { + + public boolean isActive() + { + return true; + } public String getName() { diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/policies/all.txt --- a/javacommons/security/tsrc/data/policies/all.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/all.txt Mon Jun 21 15:32:50 2010 +0300 @@ -3,5 +3,4 @@ grant assigned { permission java.util.PropertyPermission "microedition.*" "read"; permission javax.microedition.PropertyPermission "mobinfo.publicinfo" "read"; - permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/policies/test_manufacturer.txt --- a/javacommons/security/tsrc/data/policies/test_manufacturer.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_manufacturer.txt Mon Jun 21 15:32:50 2010 +0300 @@ -34,5 +34,8 @@ } grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/policies/test_operator.txt --- a/javacommons/security/tsrc/data/policies/test_operator.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_operator.txt Mon Jun 21 15:32:50 2010 +0300 @@ -34,5 +34,8 @@ } grant assigned { permission javax.microedition.PropertyPermission "mobinfo.msisdn" "read"; + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; permission javax.microedition.midlet.AutoStartPermission; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt --- a/javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt Mon Jun 21 15:32:50 2010 +0300 @@ -72,3 +72,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } + +grant assigned "Location" { + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; +} diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/policies/test_untrusted.txt --- a/javacommons/security/tsrc/data/policies/test_untrusted.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/policies/test_untrusted.txt Mon Jun 21 15:32:50 2010 +0300 @@ -60,3 +60,9 @@ permission javax.microedition.io.Connector.mms "mms://*" "open,receive"; permission javax.microedition.io.Connector.cbs "cbs://*" "open,receive"; } + +grant assigned "Location" { + permission javax.microedition.PropertyPermission "mobinfo.cellid" "read"; + permission javax.microedition.PropertyPermission "mobinfo.countrycode" "read"; + permission javax.microedition.PropertyPermission "mobinfo.networkid" "read"; +} diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/assigned_settings_only.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/assigned_settings_only.txt Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,4 @@ +domain operator; +grant assigned "Settings" oneshot { + permission assigned.permission.invalid.settings; +} diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/assigned_settings_orphaned.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/assigned_settings_orphaned.txt Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,4 @@ +domain operator; +grant assigned "Settings" { + permission assigned.permission.orphaned; +} diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/assigned_and_user_settings.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_and_user_settings.txt Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,3 @@ +domain=mydomain +user_assigned?Settings:blanket:no?assigned.user.permission +user?Settings:blanket:no?user.permission diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_only.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_only.txt Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,2 @@ +domain=operator +user_assigned?Settings:oneshot:no?assigned.permission.invalid.settings diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_orphaned.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_orphaned.txt Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,2 @@ +domain=operator +assigned?assigned.permission.orphaned diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,2 +1,2 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,17 +1,17 @@ domain=IdentifiedThirdParty -user,NetAccess:session:blanket:oneshot:no,javax.microedition.io.HttpProtocolPermission,http://* -user,NetAccess:session:blanket:oneshot:no,javax.microedition.io.HttpsProtocolPermission,https://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.DatagramProtocolPermission,datagram://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.DatagramProtocolPermission,datagram:// -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SocketProtocolPermission,socket://* -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SocketProtocolPermission,socket:// -user,LowLevelNetAccess:session:blanket:oneshot:no,javax.microedition.io.SSLProtocolPermission,ssl://* -user,ApplicationAutoInvocation:oneshot:blanket:session:no,javax.microedition.io.PushRegistryPermission,* -user,LocalConnectivity:session:blanket:oneshot:no,javax.microedition.io.CommProtocolPermission,comm:* -user,MultimediaRecording:session:blanket:oneshot:no,javax.microedition.media.PlayerPermission,*,record -user,MultimediaRecording:session:blanket:oneshot:no,javax.microedition.media.PlayerPermission,*,snapshot -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +user?NetAccess:session:blanket:oneshot:no?javax.microedition.io.HttpProtocolPermission,http://* +user?NetAccess:session:blanket:oneshot:no?javax.microedition.io.HttpsProtocolPermission,https://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.DatagramProtocolPermission,datagram://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.DatagramProtocolPermission,datagram:// +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SocketProtocolPermission,socket://* +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SocketProtocolPermission,socket:// +user?LowLevelNetAccess:session:blanket:oneshot:no?javax.microedition.io.SSLProtocolPermission,ssl://* +user?ApplicationAutoInvocation:oneshot:blanket:session:no?javax.microedition.io.PushRegistryPermission,* +user?LocalConnectivity:session:blanket:oneshot:no?javax.microedition.io.CommProtocolPermission,comm:* +user?MultimediaRecording:session:blanket:oneshot:no?javax.microedition.media.PlayerPermission,*,record +user?MultimediaRecording:session:blanket:oneshot:no?javax.microedition.media.PlayerPermission,*,snapshot +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,3 +1,3 @@ domain=Manufacturer -allowed,javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpProtocolPermission,http://* diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,23 +1,23 @@ domain=Manufacturer -allowed,javax.microedition.io.HttpProtocolPermission,http://* -allowed,javax.microedition.io.HttpsProtocolPermission,https://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram:// -allowed,javax.microedition.io.SocketProtocolPermission,socket://* -allowed,javax.microedition.io.SocketProtocolPermission,socket:// -allowed,javax.microedition.io.SSLProtocolPermission,ssl://* -allowed,javax.microedition.io.PushRegistryPermission,* -allowed,javax.microedition.io.CommProtocolPermission,comm:* -allowed,javax.microedition.media.PlayerPermission,*,record -allowed,javax.microedition.media.PlayerPermission,*,snapshot -allowed,java.util.PropertyPermission,*,read -allowed,javax.microedition.event.EventPermission,*,read -allowed,javax.microedition.event.EventPermission,*,register -allowed,javax.microedition.event.EventPermission,*,post -allowed,javax.microedition.midlet.ActionsDeniedPermission -allowed,javax.microedition.midlet.AutoStartPermission -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +allowed?javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpsProtocolPermission,https://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram:// +allowed?javax.microedition.io.SocketProtocolPermission,socket://* +allowed?javax.microedition.io.SocketProtocolPermission,socket:// +allowed?javax.microedition.io.SSLProtocolPermission,ssl://* +allowed?javax.microedition.io.PushRegistryPermission,* +allowed?javax.microedition.io.CommProtocolPermission,comm:* +allowed?javax.microedition.media.PlayerPermission,*,record +allowed?javax.microedition.media.PlayerPermission,*,snapshot +allowed?java.util.PropertyPermission,*,read +allowed?javax.microedition.event.EventPermission,*,read +allowed?javax.microedition.event.EventPermission,*,register +allowed?javax.microedition.event.EventPermission,*,post +allowed?javax.microedition.midlet.ActionsDeniedPermission +allowed?javax.microedition.midlet.AutoStartPermission +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,3 +1,3 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,3 +1,3 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,22 +1,22 @@ domain=Operator -allowed,javax.microedition.io.HttpProtocolPermission,http://* -allowed,javax.microedition.io.HttpsProtocolPermission,https://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram://* -allowed,javax.microedition.io.DatagramProtocolPermission,datagram:// -allowed,javax.microedition.io.SocketProtocolPermission,socket://* -allowed,javax.microedition.io.SocketProtocolPermission,socket:// -allowed,javax.microedition.io.SSLProtocolPermission,ssl://* -allowed,javax.microedition.io.PushRegistryPermission,* -allowed,javax.microedition.io.CommProtocolPermission,comm:* -allowed,javax.microedition.media.PlayerPermission,*,record -allowed,javax.microedition.media.PlayerPermission,*,snapshot -allowed,java.util.PropertyPermission,*,read -allowed,javax.microedition.event.EventPermission,*,read -allowed,javax.microedition.event.EventPermission,*,register -allowed,javax.microedition.event.EventPermission,*,post -allowed,javax.microedition.midlet.ActionsDeniedPermission -allowed,javax.microedition.midlet.AutoStartPermission -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +allowed?javax.microedition.io.HttpProtocolPermission,http://* +allowed?javax.microedition.io.HttpsProtocolPermission,https://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram://* +allowed?javax.microedition.io.DatagramProtocolPermission,datagram:// +allowed?javax.microedition.io.SocketProtocolPermission,socket://* +allowed?javax.microedition.io.SocketProtocolPermission,socket:// +allowed?javax.microedition.io.SSLProtocolPermission,ssl://* +allowed?javax.microedition.io.PushRegistryPermission,* +allowed?javax.microedition.io.CommProtocolPermission,comm:* +allowed?javax.microedition.media.PlayerPermission,*,record +allowed?javax.microedition.media.PlayerPermission,*,snapshot +allowed?java.util.PropertyPermission,*,read +allowed?javax.microedition.event.EventPermission,*,read +allowed?javax.microedition.event.EventPermission,*,register +allowed?javax.microedition.event.EventPermission,*,post +allowed?javax.microedition.midlet.ActionsDeniedPermission +allowed?javax.microedition.midlet.AutoStartPermission +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,5 +1,5 @@ domain=operator -allowed,javax.microedition.midlet.AutoStartPermission -allowed,javax.microedition.midlet.OtherAutoStartPermission +allowed?javax.microedition.midlet.AutoStartPermission +allowed?javax.microedition.midlet.OtherAutoStartPermission diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt --- a/javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt Mon Jun 21 15:32:50 2010 +0300 @@ -1,16 +1,16 @@ domain=UnidentifiedThirdParty -user,NetAccess:oneshot:session:no,javax.microedition.io.HttpProtocolPermission,http://* -user,NetAccess:oneshot:session:no,javax.microedition.io.HttpsProtocolPermission,https://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.DatagramProtocolPermission,datagram://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.DatagramProtocolPermission,datagram:// -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SocketProtocolPermission,socket://* -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SocketProtocolPermission,socket:// -user,LowLevelNetAccess:oneshot:session:no,javax.microedition.io.SSLProtocolPermission,ssl://* -user,ApplicationAutoInvocation:oneshot:session:no,javax.microedition.io.PushRegistryPermission,* -user,LocalConnectivity:session:blanket:oneshot:no,javax.microedition.io.CommProtocolPermission,comm:* -user,MultimediaRecording:session:oneshot:no,javax.microedition.media.PlayerPermission,*,record -user,MultimediaRecording:session:oneshot:no,javax.microedition.media.PlayerPermission,*,snapshot -assigned,java.util.PropertyPermission,microedition.*,read -assigned,javax.microedition.event.EventPermission,*.*,read -assigned,javax.microedition.event.EventPermission,*.*,register -assigned,javax.microedition.event.EventPermission,*.*,post +user?NetAccess:oneshot:session:no?javax.microedition.io.HttpProtocolPermission,http://* +user?NetAccess:oneshot:session:no?javax.microedition.io.HttpsProtocolPermission,https://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.DatagramProtocolPermission,datagram://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.DatagramProtocolPermission,datagram:// +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SocketProtocolPermission,socket://* +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SocketProtocolPermission,socket:// +user?LowLevelNetAccess:oneshot:session:no?javax.microedition.io.SSLProtocolPermission,ssl://* +user?ApplicationAutoInvocation:oneshot:session:no?javax.microedition.io.PushRegistryPermission,* +user?LocalConnectivity:session:blanket:oneshot:no?javax.microedition.io.CommProtocolPermission,comm:* +user?MultimediaRecording:session:oneshot:no?javax.microedition.media.PlayerPermission,*,record +user?MultimediaRecording:session:oneshot:no?javax.microedition.media.PlayerPermission,*,snapshot +assigned?java.util.PropertyPermission,microedition.*,read +assigned?javax.microedition.event.EventPermission,*.*,read +assigned?javax.microedition.event.EventPermission,*.*,register +assigned?javax.microedition.event.EventPermission,*.*,post diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java Mon Jun 21 15:32:50 2010 +0300 @@ -740,7 +740,27 @@ UserSecuritySettings.SESSION_INTERACTION_MODE})), new PolicyBasedPermissionImpl("java.util.PropertyPermission", "microedition.*", "read", null), new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.publicinfo", "read", null), - new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.cellid", "read", null), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.cellid", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.countrycode", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), + new PolicyBasedPermissionImpl(p4.getName(), "mobinfo.networkid", "read", + new UserSecuritySettingsImpl("Location", + UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE, + UserSecuritySettings.NO_INTERACTION_MODE, + UserSecuritySettings.ONESHOT_INTERACTION_MODE, + UserSecuritySettings.SESSION_INTERACTION_MODE})), new PolicyBasedPermissionImpl("com.nokia.ext2.internal.Ext2Perm", "ext2.target4", "ext2.action4", null), })); // getBlanketPermissions: while installing V1 the permissions are not put to blanket, while installing V2 there are some blanket permissions returned @@ -779,6 +799,8 @@ StorageNames.VALUE, "MIICWDCCAcECBEhQwOgwDQYJKoZIhvcNAQEEBQAwczELMAkGA1UEBhMCZmkxEjAQBgNVBAgTCVBpcmthbm1hYTEQMA4GA1UEBxMHVGFtcGVyZTEOMAwGA1UEChMFTm9raWExDTALBgNVBAsTBEphdmExHzAdBgNVBAMMFkpQX1RoaXJkX1BhcnR5X1RydXN0ZWQwHhcNMDgwNjEyMDYyMzM2WhcNMTgwNjEwMDYyMzM2WjBzMQswCQYDVQQGEwJmaTESMBAGA1UECBMJUGlya2FubWFhMRAwDgYDVQQHEwdUYW1wZXJlMQ4wDAYDVQQKEwVOb2tpYTENMAsGA1UECxMESmF2YTEfMB0GA1UEAwwWSlBfVGhpcmRfUGFydHlfVHJ1c3RlZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArAesh03rswICRUjexWMoIH9ZZqUtlx+tfhZhuzuYhiL6cLdhxNlU8yuIdw4f17XP3yxVIB8rz1EEagCMd0Y5ZleNFZ992ReLcf9VH13RxaZ88PRxBLLROm1jcwTknYSS6AxGMup77DMwwFSN8XPnOHWt4aLGUrecMeUyI2c5UbsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQAylJ+3aSq6a7AAL7UM8V8JhGZlLneErF7A/BJGDi7Vmr5gmlGyf6RCJJIg4qCp+J3Tv3eCRNNuphQaSRdFpaulwCmtfCzSZNtvZg0VhMOVsZqTwQgmP6NzKoIbqqzlgm5U+yUJw8FmX17vgdeSEdJ/oL/WT4AKrWFJYl8MdQ9ZnQ==")); session.write(StorageNames.APPLICATION_PACKAGE_ATTRIBUTES_TABLE, appPackageEntry); + permissionGranter.cleanup(); + PermissionResolver.testClearCache(); allAttributes.clear(); allAttributes.put(MIDP_PROFILE_ATTRIBUTE_NAME,new Attribute("",MIDP2)); allAttributes.put(AuthenticationAttribute.MAIN_ATTRIBUTE_PREFIX + "1-1", new Attribute("", "MIICWDCCAcECBEhQwOgwDQYJKoZIhvcNAQEEBQAwczELMAkGA1UEBhMCZmkxEjAQBgNVBAgTCVBpcmthbm1hYTEQMA4GA1UEBxMHVGFtcGVyZTEOMAwGA1UEChMFTm9raWExDTALBgNVBAsTBEphdmExHzAdBgNVBAMMFkpQX1RoaXJkX1BhcnR5X1RydXN0ZWQwHhcNMDgwNjEyMDYyMzM2WhcNMTgwNjEwMDYyMzM2WjBzMQswCQYDVQQGEwJmaTESMBAGA1UECBMJUGlya2FubWFhMRAwDgYDVQQHEwdUYW1wZXJlMQ4wDAYDVQQKEwVOb2tpYTENMAsGA1UECxMESmF2YTEfMB0GA1UEAwwWSlBfVGhpcmRfUGFydHlfVHJ1c3RlZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArAesh03rswICRUjexWMoIH9ZZqUtlx+tfhZhuzuYhiL6cLdhxNlU8yuIdw4f17XP3yxVIB8rz1EEagCMd0Y5ZleNFZ992ReLcf9VH13RxaZ88PRxBLLROm1jcwTknYSS6AxGMup77DMwwFSN8XPnOHWt4aLGUrecMeUyI2c5UbsCAwEAATANBgkqhkiG9w0BAQQFAAOBgQAylJ+3aSq6a7AAL7UM8V8JhGZlLneErF7A/BJGDi7Vmr5gmlGyf6RCJJIg4qCp+J3Tv3eCRNNuphQaSRdFpaulwCmtfCzSZNtvZg0VhMOVsZqTwQgmP6NzKoIbqqzlgm5U+yUJw8FmX17vgdeSEdJ/oL/WT4AKrWFJYl8MdQ9ZnQ==")); diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java Mon Jun 21 15:32:50 2010 +0300 @@ -218,6 +218,7 @@ IMPL_PERMISSION_MAPPING_TABLE = PermissionMappingTable.setMappingTable(TestPermissionMappingTable.getMappingTable()); SecurityPolicyModule.policiesDir = TEST_DATA_DIR; SecurityPolicyModule.policiesFileNamePrefix = "test_"; + String[] blanketPermissions = null; // data structures used in tests AuthenticationStorageData authData = null; AuthenticationCredentials[] authCredentials = null; @@ -823,7 +824,6 @@ }, getAssignedPermissions("IdentifiedThirdParty"))); // 19. getBlanketPermissions - null appUID - String[] blanketPermissions = null; storage.removeAuthenticationStorageData(appUID); permissionGranter.removeSecurityData(session, appUID); blanketPermissions = permissionGranter.getBlanketPermissions(null); @@ -975,7 +975,7 @@ ((PolicyBasedPermission)grantedPermissions.elementAt(i)); UserSecuritySettings settings = permission.getUserSecuritySettings(); - if (settings != null) + if (settings != null && settings.getName() == UserSecuritySettings.LOCAL_CONNECTIVITY_SETTINGS) { assertTrue(settings.getCurrentInteractionMode() == UserSecuritySettings.BLANKET_INTERACTION_MODE); } @@ -1041,7 +1041,8 @@ && findString(policyPerms[i].getName(), permissionNameFilter) != -1) || permissionNameFilter == null) && (permissionTypeFilter == null || (permissionTypeFilter.equals("assigned") - && policyPerms[i].getUserSecuritySettings() == null))) + && (policyPerms[i].getType() == PolicyBasedPermission.ASSIGNED_TYPE + || policyPerms[i].getType() == PolicyBasedPermission.USER_ASSIGNED_TYPE)))) { vPermissions.addElement(new MIDPPermission(policyPerms[i].getName(), policyPerms[i].getTarget(), policyPerms[i].getActionList())); } @@ -1087,10 +1088,12 @@ private static MIDPPermission[] getDefaultPermissions() { - MIDPPermission[] defaultPerms = new MIDPPermission[3]; + MIDPPermission[] defaultPerms = new MIDPPermission[5]; defaultPerms[0] = new MIDPPermission("java.util.PropertyPermission", "microedition.*", "read"); defaultPerms[1] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.publicinfo", "read"); defaultPerms[2] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.cellid", "read"); + defaultPerms[3] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.countrycode", "read"); + defaultPerms[4] = new MIDPPermission("javax.microedition.PropertyPermission", "mobinfo.networkid", "read"); return defaultPerms; } diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java Mon Jun 21 15:32:50 2010 +0300 @@ -39,111 +39,115 @@ static final SecurityPolicyPermission[] MANUFACTURER_PERMS = { - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", null), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,PolicyBasedPermission.ALLOWED_TYPE), }; static final SecurityPolicyPermission[] OPERATOR_PERMS = { - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", null), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpProtocolPermission"),"http://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.HttpsProtocolPermission"),"https://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.DatagramProtocolPermission"),"datagram://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SocketProtocolPermission"),"socket://", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.SSLProtocolPermission"),"ssl://*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.CommProtocolPermission"),"comm:*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "read_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "read_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "write_contacts", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.EventList"), "pim://*" , "write_events", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","staticregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","dynamicregistration",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*","autoinvocation",PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.obex.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.server"),"*", "server", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.bluetooth.client"),"*", "client", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "position", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"location://*", "orientation", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "read", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "write", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "category", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"landmarks://*", "management", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.location.LocationPermission"),"proximity://*", "registerlistener", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.aid"),"apdu://*", "aid", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.apdu.sat"),"apdu://*", "sat", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.securityservice.CMSMessageSignatureService"),"pki://*", "authenticate", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.RecordControl"),"*", "record", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.media.control.VideoControl.getSnapshot"),"*", "snapshot", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.imsi","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.msisdn","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.AutoStartPermission"),null,null,PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null,null,PolicyBasedPermission.ALLOWED_TYPE), }; static final SecurityPolicyPermission[] IDENTIFIED_THIRD_PARTY_PERMS = { @@ -189,18 +193,18 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", new SecurityPolicyPermissionSettings("Read User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -219,7 +223,7 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*", "staticregistration", new SecurityPolicyPermissionSettings("Application Auto Invocation",UserSecuritySettings.BLANKET_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE})), @@ -265,8 +269,16 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, new SecurityPolicyPermissionSettings("Net Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.SESSION_INTERACTION_MODE, + new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), new SecurityPolicyPermission(getPermissionName("javax.microedition.midlet.CmdLineArgsPermission"),null, null, new SecurityPolicyPermissionSettings("Url start",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -315,18 +327,18 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.FileProtocolPermission"),"*", "write", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.sms"), "sms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "send", new SecurityPolicyPermissionSettings("Messaging",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.mms"), "mms://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "open", PolicyBasedPermission.ALLOWED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.cbs"), "cbs://*" , "receive", PolicyBasedPermission.ALLOWED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ContactList"), "pim://*" , "read_contacts", new SecurityPolicyPermissionSettings("Read User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), @@ -345,7 +357,7 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.pim.ToDoList"), "pim://*" , "write_todos", new SecurityPolicyPermissionSettings("Write User Data Access",UserSecuritySettings.ONESHOT_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",null), + new SecurityPolicyPermission(getPermissionName("java.util.PropertyPermission"),"microedition.*","read",PolicyBasedPermission.ASSIGNED_TYPE), new SecurityPolicyPermission(getPermissionName("javax.microedition.io.PushRegistryPermission"),"*", "staticregistration", new SecurityPolicyPermissionSettings("Application Auto Invocation",UserSecuritySettings.BLANKET_INTERACTION_MODE, new int[]{UserSecuritySettings.BLANKET_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE,UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE})), @@ -385,8 +397,16 @@ new SecurityPolicyPermission(getPermissionName("javax.microedition.io.Connector.rtsp"),"*", null, new SecurityPolicyPermissionSettings("Net Access",UserSecuritySettings.SESSION_INTERACTION_MODE, new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",null), - new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",null), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.publicinfo","read",PolicyBasedPermission.ASSIGNED_TYPE), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.cellid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.countrycode","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), + new SecurityPolicyPermission(getPermissionName("javax.microedition.PropertyPermission"),"mobinfo.networkid","read",PolicyBasedPermission.USER_ASSIGNED_TYPE, + new SecurityPolicyPermissionSettings("Location",UserSecuritySettings.ONESHOT_INTERACTION_MODE, + new int[]{UserSecuritySettings.ONESHOT_INTERACTION_MODE,UserSecuritySettings.NO_INTERACTION_MODE,UserSecuritySettings.SESSION_INTERACTION_MODE})), }; // Begin j2meunit test framework setup diff -r 71c436fe3ce0 -r 4376525cdefb javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java --- a/javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java Mon Jun 21 15:32:50 2010 +0300 @@ -336,7 +336,7 @@ initBoolArray(permsChecked); for (int i=0; i currentToken) + if (permDetails.length > currentToken) { - target = permTokens[currentToken]; + target = permDetails[currentToken]; currentToken++; } - if (permTokens.length > currentToken) + if (permDetails.length > currentToken) { - actionList = permTokens[currentToken]; + actionList = permDetails[currentToken]; actionList = actionList.replace(':',','); } - PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, settings); + PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, type, settings); for (int j=0; j #include #include +#include #include "com_nokia_mj_impl_utils_Formatter.h" #include "com_nokia_mj_impl_utils_ResourceLoader.h" #include "javajniutils.h" +#include "s60commonutils.h" #include "logger.h" enum EDateTimeFormat @@ -41,6 +43,7 @@ // const TInt KMaxDateTimeStringSize = 50; const TInt KMaxDateFormatSize = 30; const TInt KMaxNumberFormatSize = 40; +using namespace java::util; // _LIT( KAvkonResFile, "z:\\resource\\avkon.rsc" ); @@ -65,6 +68,7 @@ "Cannot format %d to current locale. Error: %d", aNumber, error); } + AknTextUtils::LanguageSpecificNumberConversion( numberPtr ); return aJni->NewString( (const jchar*)numberPtr.Ptr(), numberPtr.Length()); } @@ -105,3 +109,15 @@ return (jint)User::Language(); } +JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_utils_Formatter__1formatDigits + (JNIEnv * aEnv, jclass, jstring str) +{ + jstring ret = str; + std::wstring wstr = JniUtils::jstringToWstring(aEnv, str); + HBufC* buf = S60CommonUtils::wstringToDes(wstr.c_str()); + TPtr ptr(buf->Des()); + AknTextUtils::LanguageSpecificNumberConversion( ptr ); + ret = S60CommonUtils::NativeToJavaString(*aEnv, ptr); + delete buf; buf = NULL; + return ret; +} diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluecove/build/javabluecove_0x2002DC97.mmp --- a/javaextensions/bluetooth/bluecove/build/javabluecove_0x2002DC97.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluecove/build/javabluecove_0x2002DC97.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabluecove.def +#elif defined EABI +DEFFILE ./eabi/javabluecove.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluetoothcommons/build/javabluetoothcommons_0x2002DC99.mmp --- a/javaextensions/bluetooth/bluetoothcommons/build/javabluetoothcommons_0x2002DC99.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/build/javabluetoothcommons_0x2002DC99.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -166,3 +166,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabluetoothcommons.def +#elif defined EABI +DEFFILE ./eabi/javabluetoothcommons.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluetoothplugins/btgoeppushplugin/build/javabtgoepscplugin_0x2002DC9A.mmp --- a/javaextensions/bluetooth/bluetoothplugins/btgoeppushplugin/build/javabtgoepscplugin_0x2002DC9A.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btgoeppushplugin/build/javabtgoepscplugin_0x2002DC9A.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -142,3 +142,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabtgoepscplugin.def +#elif defined EABI +DEFFILE ./eabi/javabtgoepscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluetoothplugins/btjavacaptainplugin/build/javacaptain_ext_btdeviceclassmanager_0x2002DC9D.mmp --- a/javaextensions/bluetooth/bluetoothplugins/btjavacaptainplugin/build/javacaptain_ext_btdeviceclassmanager_0x2002DC9D.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btjavacaptainplugin/build/javacaptain_ext_btdeviceclassmanager_0x2002DC9D.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -136,3 +136,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_btdeviceclassmanager.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_btdeviceclassmanager.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/build/javabtl2capscplugin_0x2002DC9B.mmp --- a/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/build/javabtl2capscplugin_0x2002DC9B.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/build/javabtl2capscplugin_0x2002DC9B.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -144,3 +144,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabtl2capscplugin.def +#elif defined EABI +DEFFILE ./eabi/javabtl2capscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/bluetoothplugins/btspppushplugin/build/javabtsppscplugin_0x2002DC9C.mmp --- a/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/build/javabtsppscplugin_0x2002DC9C.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/build/javabtsppscplugin_0x2002DC9C.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -144,3 +144,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabtsppscplugin.def +#elif defined EABI +DEFFILE ./eabi/javabtsppscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/bluetooth/omjbluetooth/build/javabluetooth_0x2002DC98.mmp --- a/javaextensions/bluetooth/omjbluetooth/build/javabluetooth_0x2002DC98.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/bluetooth/omjbluetooth/build/javabluetooth_0x2002DC98.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -158,3 +158,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabluetooth.def +#elif defined EABI +DEFFILE ./eabi/javabluetooth.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/broadcast_stub/build/javabroadcast_0x2002DCE0.mmp --- a/javaextensions/broadcast_stub/build/javabroadcast_0x2002DCE0.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/broadcast_stub/build/javabroadcast_0x2002DCE0.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javabroadcast.def +#elif defined EABI +DEFFILE ./eabi/javabroadcast.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/comm/build/javacomm_0x2002DCA5.mmp --- a/javaextensions/comm/build/javacomm_0x2002DCA5.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/comm/build/javacomm_0x2002DCA5.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -145,3 +145,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacomm.def +#elif defined EABI +DEFFILE ./eabi/javacomm.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java --- a/javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -47,7 +47,7 @@ public String toString() { - return "javax.microedition.io.CommProtocolPermission"; + return "javax.microedition.io.Connector.comm"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/datagram/datagram/build/javadatagram_0x2002DCA9.mmp --- a/javaextensions/datagram/datagram/build/javadatagram_0x2002DCA9.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/datagram/datagram/build/javadatagram_0x2002DCA9.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -144,3 +144,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javadatagram.def +#elif defined EABI +DEFFILE ./eabi/javadatagram.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java --- a/javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -56,7 +56,7 @@ public String toString() { - return "javax.microedition.io.DatagramProtocolPermission"; + return "javax.microedition.io.Connector.datagram"; } public boolean implies(Permission p) diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/datagram/serverconnection/build/javadatagramscplugin_0x2002DCAA.mmp --- a/javaextensions/datagram/serverconnection/build/javadatagramscplugin_0x2002DCAA.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/datagram/serverconnection/build/javadatagramscplugin_0x2002DCAA.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -135,3 +135,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javadatagramscplugin.def +#elif defined EABI +DEFFILE ./eabi/javadatagramscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/globalindicators/build/javaglobalindicators_0x2002DCAF.mmp --- a/javaextensions/globalindicators/build/javaglobalindicators_0x2002DCAF.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/globalindicators/build/javaglobalindicators_0x2002DCAF.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -141,3 +141,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaglobalindicators.def +#elif defined EABI +DEFFILE ./eabi/javaglobalindicators.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/iapinfo/build/javaiapinfo_0x2002DCB3.mmp --- a/javaextensions/iapinfo/build/javaiapinfo_0x2002DCB3.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/iapinfo/build/javaiapinfo_0x2002DCB3.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -143,3 +143,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaiapinfo.def +#elif defined EABI +DEFFILE ./eabi/javaiapinfo.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/location/build/javalocation_0x2002DCBC.mmp --- a/javaextensions/location/build/javalocation_0x2002DCBC.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/location/build/javalocation_0x2002DCBC.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -185,3 +185,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javalocation.def +#elif defined EABI +DEFFILE ./eabi/javalocation.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/midppush/build/javapushregistry_0x2002DCC9.mmp --- a/javaextensions/midppush/build/javapushregistry_0x2002DCC9.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/midppush/build/javapushregistry_0x2002DCC9.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -139,3 +139,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javapushregistry.def +#elif defined EABI +DEFFILE ./eabi/javapushregistry.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/midppush/pushcontroller/build/javapushcontroller_0x2002DCC8.mmp --- a/javaextensions/midppush/pushcontroller/build/javapushcontroller_0x2002DCC8.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/midppush/pushcontroller/build/javapushcontroller_0x2002DCC8.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -138,3 +138,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javapushcontroller.def +#elif defined EABI +DEFFILE ./eabi/javapushcontroller.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/midppush/pushregistryplugin/build/javacaptain_ext_pushregistryplugin_0x2002DCA2.mmp --- a/javaextensions/midppush/pushregistryplugin/build/javacaptain_ext_pushregistryplugin_0x2002DCA2.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/midppush/pushregistryplugin/build/javacaptain_ext_pushregistryplugin_0x2002DCA2.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -143,3 +143,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_pushregistryplugin.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_pushregistryplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/midprms_db/build/javarms_0x2002DCCB.mmp --- a/javaextensions/midprms_db/build/javarms_0x2002DCCB.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/midprms_db/build/javarms_0x2002DCCB.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -136,3 +136,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javarms.def +#elif defined EABI +DEFFILE ./eabi/javarms.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/midprms_db/rmsplugin/build/javacaptain_ext_ondemand_2_0x2002DD01.mmp --- a/javaextensions/midprms_db/rmsplugin/build/javacaptain_ext_ondemand_2_0x2002DD01.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/midprms_db/rmsplugin/build/javacaptain_ext_ondemand_2_0x2002DD01.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_ondemand_2.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_ondemand_2.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/mobinfo/build/mobinfo_0x2002DCC3.mmp --- a/javaextensions/mobinfo/build/mobinfo_0x2002DCC3.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/mobinfo/build/mobinfo_0x2002DCC3.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -142,3 +142,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javamobinfo.def +#elif defined EABI +DEFFILE ./eabi/javamobinfo.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java --- a/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java Mon Jun 21 15:32:50 2010 +0300 @@ -28,6 +28,8 @@ private static final String IMSI_TARGET_NAME = "mobinfo.imsi"; private static final String MSISDN_TARGET_NAME = "mobinfo.msisdn"; private static final String CELLID_TARGET_NAME = "mobinfo.cellid"; + private static final String COUNTRYCODE_TARGET_NAME = "mobinfo.countrycode"; + private static final String NETWORKID_TARGET_NAME = "mobinfo.networkid"; private static final String PUBLIC_INFO_TARGET_NAME = "mobinfo.publicinfo"; private String iTarget = null; @@ -40,7 +42,9 @@ if (IMSI_TARGET_NAME.equals(aUri) || MSISDN_TARGET_NAME.equals(aUri) || CELLID_TARGET_NAME.equals(aUri) - || PUBLIC_INFO_TARGET_NAME.equals(aUri)) + || PUBLIC_INFO_TARGET_NAME.equals(aUri) + || COUNTRYCODE_TARGET_NAME.equals(aUri) + || NETWORKID_TARGET_NAME.equals(aUri)) { // aUri contains a known target name -> save it as such iTarget = aUri; @@ -62,6 +66,14 @@ { iTarget = CELLID_TARGET_NAME; } + else if (MobileInfoProperties.COUNTRY_CODE.equals(aUri)) + { + iTarget = COUNTRYCODE_TARGET_NAME; + } + else if (MobileInfoProperties.NETWORK_ID.equals(aUri)) + { + iTarget = NETWORKID_TARGET_NAME; + } else { iTarget = PUBLIC_INFO_TARGET_NAME; @@ -78,6 +90,14 @@ */ public String getSecurityPromptQuestion(int aInteractionMode) { + if (CELLID_TARGET_NAME.equals(iTarget) + || COUNTRYCODE_TARGET_NAME.equals(iTarget) + || NETWORKID_TARGET_NAME.equals(iTarget)) + { + return SecurityPromptMessage.getInstance().getText( + SecurityPromptMessage.QUESTION_ID_READING_LOCATION_DATA, + null); + } return null; } @@ -91,6 +111,18 @@ { return "com.nokia.mid.Mobinfo.MSISDN"; } + else if (CELLID_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.cellid"; + } + else if (COUNTRYCODE_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.countrycode"; + } + else if (NETWORKID_TARGET_NAME.equals(iTarget)) + { + return "com.nokia.mid.Mobinfo.networkid"; + } return null; } diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java --- a/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java Mon Jun 21 15:32:50 2010 +0300 @@ -51,7 +51,7 @@ private static final String BATTERY_LEVEL = "com.nokia.mid.batterylevel"; - private static final String COUNTRY_CODE = "com.nokia.mid.countrycode"; + static final String COUNTRY_CODE = "com.nokia.mid.countrycode"; private static final String IMEI = "com.nokia.mid.imei"; @@ -59,7 +59,7 @@ private static final String NETWORK_AVAILABILITY = "com.nokia.mid.networkavailability"; - private static final String NETWORK_ID = "com.nokia.mid.networkid"; + static final String NETWORK_ID = "com.nokia.mid.networkid"; private static final String NETWORK_SIGNAL = "com.nokia.mid.networksignal"; diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/pim/build/javapim_0x2002DCC5.mmp --- a/javaextensions/pim/build/javapim_0x2002DCC5.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/pim/build/javapim_0x2002DCC5.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -286,3 +286,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javapim.def +#elif defined EABI +DEFFILE ./eabi/javapim.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/satsa/build/javasatsa_0x2002DCCE.mmp --- a/javaextensions/satsa/build/javasatsa_0x2002DCCE.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/satsa/build/javasatsa_0x2002DCCE.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -243,3 +243,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasatsa.def +#elif defined EABI +DEFFILE ./eabi/javasatsa.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/sensor/build/javasensor_0x2002DCD0.mmp --- a/javaextensions/sensor/build/javasensor_0x2002DCD0.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/sensor/build/javasensor_0x2002DCD0.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -157,3 +157,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasensor.def +#elif defined EABI +DEFFILE ./eabi/javasensor.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/webservices/build/javawebservices_0x2002DCDB.mmp --- a/javaextensions/webservices/build/javawebservices_0x2002DCDB.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/webservices/build/javawebservices_0x2002DCDB.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javawebservices.def +#elif defined EABI +DEFFILE ./eabi/javawebservices.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/mms/build/javawmamms_0x2002DCDD.mmp --- a/javaextensions/wma/mms/build/javawmamms_0x2002DCDD.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/mms/build/javawmamms_0x2002DCDD.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -156,3 +156,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javawmamms.def +#elif defined EABI +DEFFILE ./eabi/javawmamms.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/mms/pushplugin/build/javammsscplugin_0x2002DCC1.mmp --- a/javaextensions/wma/mms/pushplugin/build/javammsscplugin_0x2002DCC1.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/mms/pushplugin/build/javammsscplugin_0x2002DCC1.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -138,3 +138,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javammsscplugin.def +#elif defined EABI +DEFFILE ./eabi/javammsscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/sms_cbs/build/javawma_0x2002DCDC.mmp --- a/javaextensions/wma/sms_cbs/build/javawma_0x2002DCDC.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/sms_cbs/build/javawma_0x2002DCDC.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -152,3 +152,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javawma.def +#elif defined EABI +DEFFILE ./eabi/javawma.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java --- a/javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -21,6 +21,7 @@ import java.security.PermissionCollection; import com.nokia.mj.impl.security.common.PermissionBase; import com.nokia.mj.impl.security.utils.SecurityPromptMessage; +import com.nokia.mj.impl.utils.Formatter; public class SMSPermissionImpl extends PermissionBase { @@ -76,15 +77,25 @@ } else if (iAction.compareTo("send") == 0) { + String prefix = ""; + String formattedDestination = iDestination; + if (formattedDestination.startsWith("+")) + { + formattedDestination = iDestination.substring(1); + prefix = "+"; + } + formattedDestination = Formatter.formatDigits(formattedDestination) + + prefix; if (iNumberOfSegments > 1) { return (SecurityPromptMessage.getInstance()).getText( SecurityPromptMessage.QUESTION_ID_SMS_SENDING, - new Object[] {new Integer(iNumberOfSegments),iDestination}); + new Object[] {new Integer(iNumberOfSegments), + formattedDestination}); } return (SecurityPromptMessage.getInstance()).getText( SecurityPromptMessage.QUESTION_ID_SMS_SINGLE_SENDING, - new Object[] {iDestination}); + new Object[] {formattedDestination}); } return null; } diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/sms_cbs/pushplugin/cbs/build/javacbsscplugin_0x2002DCA4.mmp --- a/javaextensions/wma/sms_cbs/pushplugin/cbs/build/javacbsscplugin_0x2002DCA4.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/sms_cbs/pushplugin/cbs/build/javacbsscplugin_0x2002DCA4.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -149,3 +149,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacbsscplugin.def +#elif defined EABI +DEFFILE ./eabi/javacbsscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaextensions/wma/sms_cbs/pushplugin/sms/build/javasmsscplugin_0x2002DCD3.mmp --- a/javaextensions/wma/sms_cbs/pushplugin/sms/build/javasmsscplugin_0x2002DCD3.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaextensions/wma/sms_cbs/pushplugin/sms/build/javasmsscplugin_0x2002DCD3.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -146,3 +146,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasmsscplugin.def +#elif defined EABI +DEFFILE ./eabi/javasmsscplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/debugapi/build/debugapi_0x2002DCAB.mmp --- a/javamanager/debugapi/build/debugapi_0x2002DCAB.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/debugapi/build/debugapi_0x2002DCAB.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -135,3 +135,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javadebugapi.def +#elif defined EABI +DEFFILE ./eabi/javadebugapi.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp --- a/javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -881,6 +881,9 @@ attribute.setEntry(ON_SCREEN_KEYPAD, iStringVector[count++]); insertEntry.insert(attribute); + + attribute.setEntry(SECURITY_WARNINGS, iStringVector[count++]); + insertEntry.insert(attribute); try { @@ -1620,6 +1623,16 @@ str = (*findIterator).entryValue(); } iStringVector.push_back(str); + + attribute.setEntry(SECURITY_WARNINGS, L""); + str = emptyString; + findIterator = (*applications).find(attribute); + + if (findIterator != (*applications).end()) + { + str = (*findIterator).entryValue(); + } + iStringVector.push_back(str); rowsCount++; } diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javacaptain/extensionplugins/config/build/javacaptain_ext_config_0x2002DC9E.mmp --- a/javamanager/javacaptain/extensionplugins/config/build/javacaptain_ext_config_0x2002DC9E.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/config/build/javacaptain_ext_config_0x2002DC9E.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -133,3 +133,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_config.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_config.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javacaptain/extensionplugins/javacertstore/build/javacaptain_ext_javacertstore_0x2002DC9F.mmp --- a/javamanager/javacaptain/extensionplugins/javacertstore/build/javacaptain_ext_javacertstore_0x2002DC9F.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/javacertstore/build/javacaptain_ext_javacertstore_0x2002DC9F.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -142,3 +142,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_ondemand_7.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_ondemand_7.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javacaptain/extensionplugins/preinstallerstarter/build/javacaptain_ext_preinstallerstarter_0x2002DCA0.mmp --- a/javamanager/javacaptain/extensionplugins/preinstallerstarter/build/javacaptain_ext_preinstallerstarter_0x2002DCA0.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/preinstallerstarter/build/javacaptain_ext_preinstallerstarter_0x2002DCA0.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_preinstallerstarter.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_preinstallerstarter.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javacaptain/extensionplugins/storageserver/build/javacaptain_ext_storageserverplugin_0x2002DCA3.mmp --- a/javamanager/javacaptain/extensionplugins/storageserver/build/javacaptain_ext_storageserverplugin_0x2002DCA3.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/storageserver/build/javacaptain_ext_storageserverplugin_0x2002DCA3.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacaptain_ext_storageserverplugin.def +#elif defined EABI +DEFFILE ./eabi/javacaptain_ext_storageserverplugin.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javainstaller/installer/build/javainstaller_0x2002DCB4.mmp --- a/javamanager/javainstaller/installer/build/javainstaller_0x2002DCB4.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javainstaller/installer/build/javainstaller_0x2002DCB4.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -172,3 +172,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javainstaller.def +#elif defined EABI +DEFFILE ./eabi/javainstaller.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java Mon Jun 21 15:32:50 2010 +0300 @@ -67,7 +67,7 @@ */ public String toString() { - return "javax.microedition.midlet.AutoStartPermission"; + return "AutoStartPermission"; } /** diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -112,7 +112,7 @@ boolean userPromptAllowed = false; if (aPermission.toString().equals( - "javax.microedition.io.PushRegistryPermission")) + "javax.microedition.io.PushRegistry")) { // PushRegistryPermission is the only permission which // must be prompted from the user during installation. diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javainstaller/installerui/build/javainstallerui_0x2002DCB6.mmp --- a/javamanager/javainstaller/installerui/build/javainstallerui_0x2002DCB6.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javainstaller/installerui/build/javainstallerui_0x2002DCB6.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javainstallerui.def +#elif defined EABI +DEFFILE ./eabi/javainstallerui.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javaregistry/build/javaregistryclient_0x10282476.mmp --- a/javamanager/javaregistry/build/javaregistryclient_0x10282476.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javaregistry/build/javaregistryclient_0x10282476.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -143,3 +143,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaregistryclient.def +#elif defined EABI +DEFFILE ./eabi/javaregistryclient.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javaregistry/javasizehelper/client/build/javasizehelperclient_0x2002DCD1.mmp --- a/javamanager/javaregistry/javasizehelper/client/build/javasizehelperclient_0x2002DCD1.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javaregistry/javasizehelper/client/build/javasizehelperclient_0x2002DCD1.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasizehelperclient.def +#elif defined EABI +DEFFILE ./eabi/javasizehelperclient.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javaregistry/javasizehelper/server/build/javasizehelperserver_0x2002DCD2.mmp --- a/javamanager/javaregistry/javasizehelper/server/build/javasizehelperserver_0x2002DCD2.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javaregistry/javasizehelper/server/build/javasizehelperserver_0x2002DCD2.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -134,3 +134,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasizehelperserver.def +#elif defined EABI +DEFFILE ./eabi/javasizehelperserver.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingshandler.cpp --- a/javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingshandler.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingshandler.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -422,7 +422,7 @@ query.insert(attr); attr.setEntry(FUNCTION_GROUP, L""); query.insert(attr); - iStorage->search(MIDP_FUNC_GRP_SETTINGS_TABLE, query, queryResult); + iStorage->search(MIDP_PERMISSIONS_TABLE, query, queryResult); JavaStorageApplicationList_t::const_iterator iterator; JavaStorageApplicationList_t settingsQueryResult; MidletSuiteSecuritySettings settings; @@ -431,33 +431,49 @@ std::wstring settingsName = L""; JavaStorageApplicationEntry_t entry = (*iterator); findColumn(entry, FUNCTION_GROUP, settingsName); - entry.clear(); - query.clear(); - attr.setEntry(ID, iMidletSuiteUid.toString()); - query.insert(attr); - attr.setEntry(FUNCTION_GROUP, settingsName); - query.insert(attr); - attr.setEntry(CURRENT_SETTING, L""); - query.insert(attr); - attr.setEntry(ALLOWED_SETTINGS , L""); - query.insert(attr); - settingsQueryResult.clear(); - iStorage->search(MIDP_FUNC_GRP_SETTINGS_TABLE, query, settingsQueryResult); - if (settingsQueryResult.size() > 0) + if (settingsName.size() > 0) { - wstring currentInteractionMode = L""; - wstring allowedInteractionModes = L""; - findEntry(settingsQueryResult,CURRENT_SETTING , currentInteractionMode); - findEntry(settingsQueryResult,ALLOWED_SETTINGS , allowedInteractionModes); - if (currentInteractionMode.size() > 0 && allowedInteractionModes.size() > 0) + // go on only if the setting does not exist already + bool found = false; + for(int j=0; jsearch(MIDP_FUNC_GRP_SETTINGS_TABLE, query, settingsQueryResult); + if (settingsQueryResult.size() > 0) + { + wstring currentInteractionMode = L""; + wstring allowedInteractionModes = L""; + findEntry(settingsQueryResult,CURRENT_SETTING , currentInteractionMode); + findEntry(settingsQueryResult,ALLOWED_SETTINGS , allowedInteractionModes); + if (currentInteractionMode.size() > 0 && allowedInteractionModes.size() > 0) + { + settings = MidletSuiteSecuritySettings( + settingsName, + currentInteractionMode, + allowedInteractionModes); + aMidletSuiteSecuritySettings.push_back(settings); + } + } } } - aMidletSuiteSecuritySettings.push_back(settings); } } catch (JavaStorageException& aJse) diff -r 71c436fe3ce0 -r 4376525cdefb javamanager/preinstaller/build/javapreinstaller_0x2002DCC6.mmp --- a/javamanager/preinstaller/build/javapreinstaller_0x2002DCC6.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javamanager/preinstaller/build/javapreinstaller_0x2002DCC6.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javapreinstaller.def +#elif defined EABI +DEFFILE ./eabi/javapreinstaller.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/installer/starterdll/build/javainstallerstarter_0x2002DCB5.mmp --- a/javaruntimes/installer/starterdll/build/javainstallerstarter_0x2002DCB5.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/installer/starterdll/build/javainstallerstarter_0x2002DCB5.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -141,3 +141,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javainstallerstarter.def +#elif defined EABI +DEFFILE ./eabi/javainstallerstarter.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/jvmargmodifier/default/build/javajvmargsmodifier_0x2002DCB8.mmp --- a/javaruntimes/jvmargmodifier/default/build/javajvmargsmodifier_0x2002DCB8.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/jvmargmodifier/default/build/javajvmargsmodifier_0x2002DCB8.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -128,3 +128,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javajvmargsmodifier.def +#elif defined EABI +DEFFILE ./eabi/javajvmargsmodifier.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/jvmargmodifier/file/build/javajvmargsmodifierfile_0x2002DCB9.mmp --- a/javaruntimes/jvmargmodifier/file/build/javajvmargsmodifierfile_0x2002DCB9.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/jvmargmodifier/file/build/javajvmargsmodifierfile_0x2002DCB9.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -131,3 +131,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javajvmargsmodifierfile.def +#elif defined EABI +DEFFILE ./eabi/javajvmargsmodifierfile.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/midp/runtime/build/javamidpruntime_0x2002DCBF.mmp --- a/javaruntimes/midp/runtime/build/javamidpruntime_0x2002DCBF.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/midp/runtime/build/javamidpruntime_0x2002DCBF.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -149,3 +149,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javamidpruntime.def +#elif defined EABI +DEFFILE ./eabi/javamidpruntime.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java Mon Jun 21 15:32:50 2010 +0300 @@ -27,6 +27,8 @@ import java.security.AccessControlException; +import com.nokia.mj.impl.gcf.PushSecurityUtils; + import com.nokia.mj.impl.rt.utils.ExtensionUtil; import com.nokia.mj.impl.rt.utils.CmdLineArgsPermission; @@ -992,16 +994,35 @@ DrmUtil.consumeRightsStart(); } - // If the MIDlet launch is a result of auto invocation we need to + // If the MIDlet launch is a result of push auto invocation we need to // ensure that user allows the start up. - if ((mMainArgs.findArgument("-autoinvocation") != null) || - mAutoinvocationFromUrl) + if (mMainArgs.findArgument("-autoinvocation") != null) { - if (Log.mOn) Log.logI("Ensuring autoinvocation."); + if (Log.mOn) Log.logI("Ensuring push autoinvocation."); String pushAdditionalInfo = mMainArgs.findArgument("-autoInvocationAdditional"); if (Log.mOn) Log.logI(" addInfo: '" + pushAdditionalInfo + "'"); + try + { + PushSecurityUtils.ensurePermission("autoinvocation", + pushAdditionalInfo); + }catch(SecurityException e) + { + // The user didn't allow starting. Throw StartupException and + // mark it as non fatal. + if (Log.mOn) Log.logI("Push autoinvocation NOT allowed."); + throw new StartupException(e.toString(), + false); + } + } + + // If the MIDlet launch is triggered from url we need to + // ensure that user allows the start up. + if (mAutoinvocationFromUrl) + { + if (Log.mOn) Log.logI("Ensuring web start invocation."); + // ensure security try { @@ -1009,10 +1030,10 @@ CmdLineArgsPermission cmdLineArgsPermission = new CmdLineArgsPermission(); appUtils.checkPermission(cmdLineArgsPermission); - if (Log.mOn) Log.logI("Autoinvocation allowed."); + if (Log.mOn) Log.logI("Web start invocation allowed."); }catch(AccessControlException e) { - if (Log.mOn) Log.logI("Autoinvocation NOT allowed."); + if (Log.mOn) Log.logI("Web start invocation NOT allowed."); throw new StartupException(e.toString(), false); } diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/midp/runtimestarter/build/javamidpstarter_0x2002DCC0.mmp --- a/javaruntimes/midp/runtimestarter/build/javamidpstarter_0x2002DCC0.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/midp/runtimestarter/build/javamidpstarter_0x2002DCC0.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -132,3 +132,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javamidpstarter.def +#elif defined EABI +DEFFILE ./eabi/javamidpstarter.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/starter/build/javamidp_installer.pkg --- a/javaruntimes/starter/build/javamidp_installer.pkg Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/starter/build/javamidp_installer.pkg Mon Jun 21 15:32:50 2010 +0300 @@ -1,4 +1,4 @@ -; javamidp_installer.pkg generated by qmake at 2010-05-25T10:01:51 +; javamidp_installer.pkg generated by qmake at 2010-06-08T10:21:53 ; This file is generated by qmake and should not be modified by the user ; @@ -27,5 +27,5 @@ -"R:/sf/app/jrt/javaruntimes/starter/build/javamidp.sis" - "c:\adm\javamidp.sis" -@"R:/sf/mw/qt/smartinstaller.sis",(0x2002CCCD) +"X:/sf/app/jrt/javaruntimes/starter/build/javamidp.sis" - "c:\adm\javamidp.sis" +@"X:/sf/mw/qt/smartinstaller.sis",(0x2002CCCD) diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/starter/build/javamidp_template.pkg --- a/javaruntimes/starter/build/javamidp_template.pkg Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/starter/build/javamidp_template.pkg Mon Jun 21 15:32:50 2010 +0300 @@ -1,4 +1,4 @@ -; javamidp_template.pkg generated by qmake at 2010-05-25T10:01:51 +; javamidp_template.pkg generated by qmake at 2010-06-08T10:21:53 ; This file is generated by qmake and should not be modified by the user ; diff -r 71c436fe3ce0 -r 4376525cdefb javaruntimes/starterutils/build/javaruntimestarterutils_0x2002DCCC.mmp --- a/javaruntimes/starterutils/build/javaruntimestarterutils_0x2002DCCC.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javaruntimes/starterutils/build/javaruntimestarterutils_0x2002DCCC.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -139,3 +139,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaruntimestarterutils.def +#elif defined EABI +DEFFILE ./eabi/javaruntimestarterutils.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar Binary file javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar has changed diff -r 71c436fe3ce0 -r 4376525cdefb javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java --- a/javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java Mon Jun 21 15:32:50 2010 +0300 @@ -18,6 +18,7 @@ package com.nokia.mj.tools.security.midp; import java.util.Vector; +import java.util.Hashtable; import java.io.IOException; import java.io.FileInputStream; import java.util.StringTokenizer; @@ -46,7 +47,7 @@ * domain: 'domain' Identifier ';' grant+; * grant: 'grant' (grant_user | grant_allowed | grant_assigned); * grant_allowed: 'allowed' permissions; - * grant_assigned: 'assigned' permissions; + * grant_assigned: 'assigned' grant_name? (initial_mode other_modes permissions)? permissions; * grant_user: 'user' grant_name initial_mode other_modes permissions; * grant_name: '"' Identifier '"'; * permissions: '{' permission+ '}'; @@ -70,6 +71,7 @@ private SecurityPolicy securityPolicy; private static String destPath; private static final String POLICY_FILE_EXTENSION = ".txt"; + private Hashtable allSettings = new Hashtable(); public static void main(String[] args) { @@ -159,14 +161,17 @@ } domain = extractToken(';'); Vector perms = new Vector(); + Vector unconfirmedPerms = new Vector(); find("grant"); while (offset < policy.length) { SecurityPolicyPermissionSettings settings = null; + SecurityPolicyPermissionSettings unconfirmedSettings = null; int type = getType(extractToken()); + String settingsName = null; if (type == PolicyBasedPermission.USER_TYPE) { - String settingsName = extractToken('"', '"'); + settingsName = extractToken('"', '"'); check(settingsName, "User grant group without name"); // trim off the leading and trailing double-quotes if (settingsName.startsWith("\"")) @@ -192,6 +197,44 @@ interactionModes); settings = new SecurityPolicyPermissionSettings(settingsName, currentInteractionMode, allowedInteractionModes); + allSettings.put(settingsName, settings); + } + else if (type == PolicyBasedPermission.ASSIGNED_TYPE) + { + settingsName = extractToken('"', '"'); + if (settingsName != null + && settingsName.length() > 0 + && settingsName.indexOf("{") == -1) + { + type = PolicyBasedPermission.USER_ASSIGNED_TYPE; + settings = (SecurityPolicyPermissionSettings)allSettings.get( + settingsName); + if (settings == null) + { + // parse the rest of the settings and store it as + // unconfirmed settings: after all the parsing is + // done go through the unconfirmed settings and + // replace them with settings from user permissions + // (if found) or use the unconfirmed settings if no + // other user settings were found + String strInteractionModes = extractToken('{'); + String[] interactionModes = split(strInteractionModes,","); + if (interactionModes != null && interactionModes.length > 0) + { + int currentInteractionMode = getInteractionMode( + interactionModes[0]); + int[] allowedInteractionModes = getInteractionModes( + interactionModes); + unconfirmedSettings = new SecurityPolicyPermissionSettings( + settingsName, currentInteractionMode, allowedInteractionModes); + } + else + { + unconfirmedSettings = new SecurityPolicyPermissionSettings( + settingsName); + } + } + } } find("permission"); while (offset < policy.length && policy[offset] != '}') @@ -246,28 +289,75 @@ // return multiple permissions with simple actions. This step is // to be removed when APIs support composite actions String[] actions = split(pActionList,","); + if (unconfirmedSettings != null + && unconfirmedSettings.getCurrentInteractionMode() + == UserSecuritySettings.UNDEFINED_INTERACTION_MODE) + { + // discard the settings since they are not vald + unconfirmedSettings = null; + } if (actions != null) { for (int i=0; i + // if found then use those settings, otherwise use the unconfirmed settings + for(int i=0; i - +class CMMAVolumeControl; // CONSTANTS _LIT(KAMMSAudioOutputControl, "AudioOutputControl"); @@ -45,7 +45,8 @@ * @since X.X */ NONSHARABLE_CLASS(CAMMSAudioOutputControl) - : public CAMMSControl, public MMMAPlayerStateListener ,public MAudioOutputObserver,public MAccMonitorObserver + : public CAMMSControl, public MMMAPlayerStateListener , + public MAccMonitorObserver { public: // Constructors and destructor @@ -124,7 +125,7 @@ public: // From MAudioOutputObserver - void DefaultAudioOutputChanged(CAudioOutput& aAudioOutput, CAudioOutput::TAudioOutputPreference aNewDefault); + void DisconnectedL(CAccMonitorInfo *aAccessoryInfo); void ConnectedL(CAccMonitorInfo* aAccessoryInfo); void AccMonitorObserverError(TInt aError); @@ -152,6 +153,8 @@ */ void ConstructL(); + CMMAVolumeControl* GetVolumeControl(); + private: //Data // Preference visible in AMMS. @@ -162,12 +165,13 @@ TInt iCurrentPreference; // owned CAudioOutput* iAudioOutput; - CMMAPlayer::TPlayerState playerState; - //To get the peripheral attached/detached notification - CAccMonitorInfo* iAccessoryInfo; - RAccMonCapabilityArray capabilityArray; + CMMAPlayer::TPlayerState iPlayerState; + // Reference to volume control to set the current audio o/p preference. + // Not owning + CMMAVolumeControl* iVolumeControl; + // Owning CAccMonitor *iAccMonitor; - RConnectedAccessories array; + RConnectedAccessories iArray; jobject iJavaAudioOutputObj; JNIEnv* iJni; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/amms_akn/mmacontrol/src/cammsaudiooutputcontrol.cpp --- a/javauis/amms_akn/mmacontrol/src/cammsaudiooutputcontrol.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/amms_akn/mmacontrol/src/cammsaudiooutputcontrol.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -19,6 +19,7 @@ #include #include #include "cammsaudiooutputcontrol.h" +#include "cmmavolumecontrol.h" #include #include #include @@ -58,7 +59,6 @@ DEBUG("AMMS::CAMMSAudioOutputControl::~"); if (iAudioOutput) { - iAudioOutput->UnregisterObserver(*this); delete iAudioOutput; } if (iAccMonitor) @@ -189,14 +189,14 @@ TInt CAMMSAudioOutputControl::GetDeviceDefaultPreference() { DEBUG_INT("AMMS::CAMMSAudioOutputControl::GetDeviceDefaultPreference %d", (TInt)iDefaultDevicePreference); - array.Reset(); + iArray.Reset(); TInt temp = 0; - TRAPD(err,iAccMonitor->GetConnectedAccessoriesL(array)); + TRAPD(err,iAccMonitor->GetConnectedAccessoriesL(iArray)); if (err) { temp = -1; } - TInt count = array.Count(); + TInt count = iArray.Count(); if (count == 0) { temp = (TInt)CAudioOutput::EPublic; @@ -204,8 +204,8 @@ DEBUG_INT("AMMS::CAMMSAudioOutputControl::GetDeviceDefaultPreference :RConnectedAccessories count = %d",count); for (TInt i = 0; i != count; i++) { - TAccMonCapability deviceType = array[ i ]->AccDeviceType(); - if ((deviceType == KAccMonHeadset)||(deviceType == KAccMonBluetooth)) + TAccMonCapability deviceType = iArray[ i ]->AccDeviceType(); + if (deviceType == KAccMonHeadset) { DEBUG("AMMS::CAMMSAudioOutputControl::CreateHeadsetStateObserverL info = Headset Connected "); temp = (TInt)CAudioOutput::EPrivate; @@ -222,7 +222,7 @@ void CAMMSAudioOutputControl::StateChanged(TInt aState) { DEBUG_INT("AMMS::CAMMSAudioOutputControl::StateChanged +, state = %d", aState); - playerState = (CMMAPlayer::TPlayerState)aState; + iPlayerState = (CMMAPlayer::TPlayerState)aState; if (aState == CMMAPlayer::EStarted) { NotifyJavaOnChange(); @@ -242,35 +242,51 @@ TInt CAMMSAudioOutputControl::SetAudioOutputToMmf(CAudioOutput::TAudioOutputPreference aPref) { DEBUG("AMMS::CAMMSAudioOutputControl::SetAudioOutputToMmfL +"); - CAudioOutput::TAudioOutputPreference tempPreference = iRoutingUserPreference ; - iRoutingUserPreference = aPref; TRAPD(err,CreateNativeAudioOutputControlL(); iAudioOutput->SetAudioOutputL(aPref)); if (KErrNone != err) { - iRoutingUserPreference = tempPreference; TBuf errorMessage; errorMessage.Format(KErrAudioOutputControlError, err); iPlayer->PostStringEvent(CMMAPlayerEvent::EError, errorMessage); + return (TInt)iRoutingUserPreference; + } + iRoutingUserPreference = aPref; + if (iVolumeControl) + { + TRAPD(err, + { + // If current audio o/p preference is default and Headset or + // Bluetooth device is connected or if preference is private then + // set the audio preference as private to volume control else set it + // as public + if ( (iRoutingUserPreference == (TInt)(CAudioOutput::ENoPreference) && + GetDeviceDefaultPreference() == (TInt)(CAudioOutput::EPrivate))|| + iRoutingUserPreference == (TInt)(CAudioOutput::EPrivate)) + { + iVolumeControl->SetAudioOutputPreferenceL( + (TInt)(CAudioOutput::EPrivate)); + } + else + { + iVolumeControl->SetAudioOutputPreferenceL( + (TInt)(CAudioOutput::EPublic)); + } + }); + if (KErrNone > err) + { + TBuf errorMessage; + errorMessage.Format(KErrAudioOutputControlError, err); + iPlayer->PostStringEvent(CMMAPlayerEvent::EError, errorMessage); + } } // if during play user set a preference event should be sent to java - if (playerState == CMMAPlayer::EStarted) + if (iPlayerState == CMMAPlayer::EStarted) { NotifyJavaOnChange(); } return (TInt)iRoutingUserPreference; } -// ----------------------------------------------------------------------------- -// CAMMSAudioOutputControl::DefaultAudioOutputChanged -// MAudioOutputObserver's function is implemented to notify about the change in routing preference -// ----------------------------------------------------------------------------- - -void CAMMSAudioOutputControl::DefaultAudioOutputChanged(CAudioOutput& /*aAudioOutput*/, - CAudioOutput::TAudioOutputPreference /*aNewDefault*/) -{ - DEBUG("AMMS::CAMMSAudioOutputControl::DefaultAudioOutputChanged "); - -} void CAMMSAudioOutputControl::NotifyJavaOnChange() { @@ -287,9 +303,12 @@ iPlayer->PostObjectEvent(CMMAPlayerEvent::EAudioOutputPreferenceChangeEvent, iJavaAudioOutputObj); } -void CAMMSAudioOutputControl::AccMonitorObserverError(TInt /*aError*/) +void CAMMSAudioOutputControl::AccMonitorObserverError(TInt aError) { DEBUG("AMMS::CAMMSAudioOutputControl::AccMonitorObserverError"); + TBuf errorMessage; + errorMessage.Format(KErrAudioOutputControlError, aError); + iPlayer->PostStringEvent(CMMAPlayerEvent::EError, errorMessage); } // ----------------------------------------------------------------------------- // CAMMSAudioOutputControl::CAMMSAudioOutputControl @@ -303,23 +322,22 @@ } // HEADSET CONNECTED OR NOT void CAMMSAudioOutputControl::ConnectedL(CAccMonitorInfo* aAccessoryInfo) -{ // Reserve memory for the accessory information instance if necessary +{ DEBUG("AMMS::CAMMSAudioOutputControl::ConnectedL +"); - if (!iAccessoryInfo) - { - iAccessoryInfo = CAccMonitorInfo::NewL(); - DEBUG("AMMS::CAMMSAudioOutputControl::ConnectedL iAccessoryInfo created"); - } - // Otherwise just reset accessory information instance - else - { - iAccessoryInfo->Reset(); - } - iAccessoryInfo->CopyL(aAccessoryInfo); - TAccMonCapability deviceType = iAccessoryInfo->AccDeviceType() ; - if ((deviceType == KAccMonHeadset) || (deviceType == KAccMonBluetooth)) + TAccMonCapability deviceType = aAccessoryInfo->AccDeviceType() ; + if (deviceType == KAccMonHeadset) { DEBUG("AMMS::CAMMSAudioOutputControl::DisconnectedL: Headset connected"); + // If audio o/p preference is default set the preference as private + // to volume control + if ( iRoutingUserPreference == (TInt)(CAudioOutput::ENoPreference)) + { + if (iVolumeControl) + { + iVolumeControl->SetAudioOutputPreferenceL( + (TInt)(CAudioOutput::EPrivate)); + } + } //send a callback if (iRoutingUserPreference == (TInt)(CAudioOutput::ENoPreference)) { @@ -331,23 +349,25 @@ void CAMMSAudioOutputControl::DisconnectedL(CAccMonitorInfo* aAccessoryInfo) -{ // Reserve memory for the accessory information instance if necessary - +{ DEBUG("AMMS::CAMMSAudioOutputControl::DisconnectedL +"); - if (!iAccessoryInfo) - { - iAccessoryInfo = CAccMonitorInfo::NewL(); - DEBUG("AMMS::CAMMSAudioOutputControl::DisconnectedL: iAccessoryInfo created"); - } - else - { - iAccessoryInfo->Reset(); - } - iAccessoryInfo->CopyL(aAccessoryInfo); - TAccMonCapability deviceType = iAccessoryInfo->AccDeviceType(); - if ((deviceType == KAccMonHeadset)||(deviceType == KAccMonBluetooth)) + TAccMonCapability deviceType = aAccessoryInfo->AccDeviceType(); + if (deviceType == KAccMonHeadset) { DEBUG("AMMS::CAMMSAudioOutputControl::DisconnectedL: Headset Disconnected"); + // If audio o/p preference is default and no accessories is connected or + // o/p preference is not private then set the preference as public to + // volume control + if ( (iRoutingUserPreference == (TInt)(CAudioOutput::ENoPreference) && + GetDeviceDefaultPreference() == (TInt)(CAudioOutput::EPublic)) || + iRoutingUserPreference != (TInt)(CAudioOutput::EPrivate)) + { + if (iVolumeControl) + { + iVolumeControl->SetAudioOutputPreferenceL( + (TInt)(CAudioOutput::EPublic)); + } + } //send a callback if (iRoutingUserPreference == (TInt)(CAudioOutput::ENoPreference)) { @@ -362,12 +382,12 @@ void CAMMSAudioOutputControl::CreateHeadsetStateObserverL() { // Headset connection and disconnection - iAccessoryInfo = NULL; + RAccMonCapabilityArray capabilityArray; capabilityArray.Append(KAccMonHeadset); - capabilityArray.Append(KAccMonBluetooth); iAccMonitor = CAccMonitor::NewL(); - iDefaultDevicePreference = (CAudioOutput::TAudioOutputPreference)GetDeviceDefaultPreference(); + iDefaultDevicePreference = (CAudioOutput::TAudioOutputPreference) + GetDeviceDefaultPreference(); iCurrentPreference = (TInt)iDefaultDevicePreference; TBool isObserving = iAccMonitor->IsObserving(); if (!isObserving) @@ -387,9 +407,34 @@ { DEBUG("AMMS::CAMMSAudioOutputControl::ConstructL +"); // create an observer to notify the state of headset - //and initialize iDefaultDevicePreference with CAudioOutput::EPrivate if headset is connected. + // and initialize iDefaultDevicePreference with CAudioOutput::EPrivate + // if headset is connected. CreateHeadsetStateObserverL(); iPlayer->AddStateListenerL(this); + // set the current preference to volume control + iVolumeControl = GetVolumeControl(); + if (iVolumeControl) + { + iVolumeControl->SetAudioOutputPreferenceL(iCurrentPreference); + } + +} + +CMMAVolumeControl* CAMMSAudioOutputControl::GetVolumeControl() +{ + // loop through all the available controls of player and return + // volume control if found else return null. + TInt count(iPlayer->ControlCount()); + for (TInt i(0); i < count; i++) + { + CMMAControl* control = iPlayer->Control(i); + // Check that if this control supports volume control + if (control->ClassName() == KMMAVolumeControlName) + { + return static_cast< CMMAVolumeControl* >(control); + } + } + return 0; } void CAMMSAudioOutputControl::CreateNativeAudioOutputControlL() @@ -420,15 +465,6 @@ CAMMSCustomCommandUtility::NewL(mmfController); iAudioOutput = CAudioOutput::NewL(*customCommandUtility); } - - if (iAudioOutput) - { - iAudioOutput->RegisterObserverL(*this); - } - else - { - User::Leave(KErrNotSupported); - } } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/coreui_akn/build/javacoreui_0x2002DCA8.mmp --- a/javauis/coreui_akn/build/javacoreui_0x2002DCA8.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/coreui_akn/build/javacoreui_0x2002DCA8.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -162,3 +162,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javacoreui.def +#elif defined EABI +DEFFILE ./eabi/javacoreui.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/coreui_akn/src/startupscreen/startscreencontainer.cpp --- a/javauis/coreui_akn/src/startupscreen/startscreencontainer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/coreui_akn/src/startupscreen/startscreencontainer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -105,6 +105,11 @@ void CStartScreenContainer::ShowExitScreen() { + TRAP_IGNORE(DoShowExitScreenL()); +} + +void CStartScreenContainer::DoShowExitScreenL() +{ JELOG2(EJavaUI); TRect rect; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/coreui_akn/src/startupscreen/startscreencontainer.h --- a/javauis/coreui_akn/src/startupscreen/startscreencontainer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/coreui_akn/src/startupscreen/startscreencontainer.h Mon Jun 21 15:32:50 2010 +0300 @@ -85,6 +85,7 @@ void ShowIndicator(CEikStatusPane* aSp, TInt aId, TBool aVisible); void ShowIndicators(TBool aVisible); void FlushScreenL(); + void DoShowExitScreenL(); // Data private: diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/eswtdirectcontent/build/eswtdirectcontent_0x2002DC94.mmp --- a/javauis/eswt_akn/eswtdirectcontent/build/eswtdirectcontent_0x2002DC94.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/eswtdirectcontent/build/eswtdirectcontent_0x2002DC94.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -147,3 +147,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/eswtdirectcontent.def +#elif defined EABI +DEFFILE ./eabi/eswtdirectcontent.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/build/eswt_0x2002DC93.mmp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/build/eswt_0x2002DC93.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/build/eswt_0x2002DC93.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -318,3 +318,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/eswt.def +#elif defined EABI +DEFFILE ./eabi/eswt.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swttree.h --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swttree.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swttree.h Mon Jun 21 15:32:50 2010 +0300 @@ -146,9 +146,19 @@ // Last focused item. TInt iLastFocusedItem; - // CAknTree ignore images, that don't have mask + // CAknTree ignores images, that don't have mask // This class creates such masks CSwtMaskHandler* iMaskHandler; + + /* + * Attributes used for reverting pointer events on Scrollable Composite + * iPointerRevertExpandNeeded - need to expand item in pointer revert + * iPointerRevertCollapseNeeded - need to collapse item in pointer revert + * iRevertedItem - item, that should revert its state + */ + TBool iPointerRevertExpandNeeded; + TBool iPointerRevertCollapseNeeded; + TAknTreeItemID iRevertedItem; }; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcaptionedcontrol.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcaptionedcontrol.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcaptionedcontrol.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -326,7 +326,7 @@ } else { - colorIndex = EAknsCIQsnTextColorsCG8; + colorIndex = EAknsCIQsnTextColorsCG6; } if (AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), defaultColor, KAknsIIDQsnTextColors, colorIndex) == KErrNone) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcomposite.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcomposite.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcomposite.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -445,10 +445,6 @@ if (Abs(drag.iX) > iPhysics->DragThreshold() || Abs(drag.iY) > iPhysics->DragThreshold()) { - iPhysicsTimer->Cancel(); - iPhysics->RegisterPanningPosition(drag); - iPhysicsAction = KSwtPhysicsPanning; - // Unfocus MSwtControl* ctrl = GetShell().FocusControl(); if (ctrl) @@ -474,6 +470,10 @@ iPointerGrabbingControl->HandlePointerEventL(ev); iDisplay.SetRevertPointerEvent(EFalse); } + + iPhysicsTimer->Cancel(); + iPhysics->RegisterPanningPosition(drag); + iPhysicsAction = KSwtPhysicsPanning; } } } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtdateeditor.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtdateeditor.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtdateeditor.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -222,7 +222,7 @@ void CSwtDateEditor::MakeVisible(TBool aVisible) { // Close VKB. Do it here instead of FocusChange to avoid split input flicker. - if (iEditor->IsFocused() && !aVisible) + if (iEditor && iEditor->IsFocused() && !aVisible) { CCoeFep* fep = iDisplay.CoeEnv()->Fep(); if (fep) @@ -541,7 +541,7 @@ ASSERT(iEditor); // Close VKB. Do it here instead of FocusChange to avoid split input flicker. - if (iEditor->IsFocused() && aDimmed) + if (iEditor && iEditor->IsFocused() && aDimmed) { CCoeFep* fep = iDisplay.CoeEnv()->Fep(); if (fep) @@ -1177,7 +1177,7 @@ TSwtPeer CSwtDateEditor::Dispose() { // Close VKB. - if (iEditor->IsFocused()) + if (iEditor && iEditor->IsFocused()) { CCoeFep* fep = iDisplay.CoeEnv()->Fep(); if (fep) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtjavabufferdrawer.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtjavabufferdrawer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtjavabufferdrawer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -438,7 +438,7 @@ aWindow->BeginRedraw(aDrawRect); #endif // RD_JAVA_S60_RELEASE_9_2 - aGc->CopyAreaL(*image, pos); + TRAP_IGNORE(aGc->CopyAreaL(*image, pos)); } break; case OP_DRAWM2GIMAGE: diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtshell.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtshell.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtshell.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -1022,8 +1022,15 @@ newRect = iNormalBounds; } + if (!aMaximized) + { + iIsMaximized = EFalse; + } SetBounds(newRect); - iIsMaximized = aMaximized; + if (aMaximized) + { + iIsMaximized = ETrue; + } Redraw(); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttree.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttree.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttree.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -45,6 +45,9 @@ MSwtComposite& aParent, TInt aStyle, TBool aVisibility, TBool aDimmed) : CSwtComposite(aDisplay, aPeer, &aParent, aStyle, aVisibility, aDimmed) , iItemHeightValid(EFalse) + , iPointerRevertExpandNeeded(EFalse) + , iPointerRevertCollapseNeeded(EFalse) + , iRevertedItem(KAknTreeIIDNone) { } @@ -410,6 +413,20 @@ iLastFocusedItem = iTree->FocusedItem(); CSwtComposite::HandlePointerEventL(aPointerEvent); + // Expanding node as part of pointer event reverting + if (iPointerRevertExpandNeeded) + { + iTree->ExpandNode(iRevertedItem, ETrue); + iPointerRevertExpandNeeded = EFalse; + } + + // Collapsing node as part of pointer event reverting + if (iPointerRevertCollapseNeeded) + { + iTree->CollapseNode(iRevertedItem, ETrue); + iPointerRevertCollapseNeeded = EFalse; + } + #ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK if (feedback) { @@ -813,36 +830,64 @@ { case MAknTreeListObserver::ENodeExpanded: { - TInt count = iTree->ChildCount(aItem); - if (count > 0) + /* + * Pointer reverting has to be done after HandlePointerEvent. So here + * just setting attributes and actual reverting is done in + * CSwtTree::HandlePointerEventL + * In case of reverting event, Java will not get any notifications. + */ + if (iDisplay.RevertPointerEvent() && !iPointerRevertExpandNeeded) { - TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventExpand, aItem)); - } - if (IsMarkable()) - { - if (count == 0) - { - iTree->SetMarked(aItem, ETrue, ETrue); - } + iPointerRevertCollapseNeeded = ETrue; + iRevertedItem = aItem; } else { - TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventDefaultSelection, aItem)); + TInt count = iTree->ChildCount(aItem); + if (count > 0) + { + TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventExpand, aItem)); + } + if (IsMarkable()) + { + if (count == 0) + { + iTree->SetMarked(aItem, ETrue, ETrue); + } + } + else + { + TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventDefaultSelection, aItem)); + } } break; } case MAknTreeListObserver::ENodeCollapsed: { - TInt count = iTree->ChildCount(aItem); - if (count > 0) + /* + * Pointer reverting has to be done after HandlePointerEvent. So here + * just setting attributes and actual reverting is done in + * CSwtTree::HandlePointerEventL + * In case of reverting event, Java will not get any notifications. + */ + if (iDisplay.RevertPointerEvent() && !iPointerRevertCollapseNeeded) { - TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventCollapse, aItem)); + iPointerRevertExpandNeeded = ETrue; + iRevertedItem = aItem; } - if (IsMarkable()) + else { - if (count == 0) + TInt count = iTree->ChildCount(aItem); + if (count > 0) { - iTree->SetMarked(aItem, EFalse, ETrue); + TRAP_IGNORE(iDisplay.PostTreeEventL(iPeer, ESwtEventCollapse, aItem)); + } + if (IsMarkable()) + { + if (count == 0) + { + iTree->SetMarked(aItem, EFalse, ETrue); + } } } break; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/javalegacyutils/build/build.xml --- a/javauis/javalegacyutils/build/build.xml Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/javalegacyutils/build/build.xml Mon Jun 21 15:32:50 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"/> + + + + + diff -r 71c436fe3ce0 -r 4376525cdefb javauis/javalegacyutils/build/javalegacyutils_0x2002DCBB.mmp --- a/javauis/javalegacyutils/build/javalegacyutils_0x2002DCBB.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/javalegacyutils/build/javalegacyutils_0x2002DCBB.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -161,3 +161,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javalegacyutils.def +#elif defined EABI +DEFFILE ./eabi/javalegacyutils.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/build/javalcdui_0x2002DCBA.mmp --- a/javauis/lcdui_akn/javalcdui/build/javalcdui_0x2002DCBA.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/build/javalcdui_0x2002DCBA.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -222,3 +222,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javalcdui.def +#elif defined EABI +DEFFILE ./eabi/javalcdui.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/inc.nokialcdui/MMIDTextEditor.h --- a/javauis/lcdui_akn/javalcdui/inc.nokialcdui/MMIDTextEditor.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/inc.nokialcdui/MMIDTextEditor.h Mon Jun 21 15:32:50 2010 +0300 @@ -64,7 +64,11 @@ // The editor cannot scroll down anymore. EActionScrollDown = 0x400, // The scrollbar should be updated - EActionScrollbarChange = 0x800 + EActionScrollbarChange = 0x800, + // The partial virtual keyboard is opened + EActionPartialInputEnabled = 0x1000, + // The partial virtual keyboard is closed + EActionPartialInputDisabled = 0x2000 }; public: // New methods diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/inc/MMIDCustomComponentContainer.h --- a/javauis/lcdui_akn/javalcdui/inc/MMIDCustomComponentContainer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/inc/MMIDCustomComponentContainer.h Mon Jun 21 15:32:50 2010 +0300 @@ -26,6 +26,9 @@ // FORWARD DECLARATIONS class MMIDCustomComponent; class CCoeControl; +#ifdef RD_JAVA_S60_RELEASE_9_2 +class CMIDDisplayable; +#endif // RD_JAVA_S60_RELEASE_9_2 /** @@ -117,6 +120,16 @@ */ virtual TBool IsFullScreen() const = 0; +#ifdef RD_JAVA_S60_RELEASE_9_2 + /** + * Gets the Displayable from container. + * + * @return The Displayable from container. + * @since S60 5.0 + */ + virtual CMIDDisplayable* GetDisplayable() const = 0; +#endif // RD_JAVA_S60_RELEASE_9_2 + protected: // Destructor /** diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/inc/lcdui.h --- a/javauis/lcdui_akn/javalcdui/inc/lcdui.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/inc/lcdui.h Mon Jun 21 15:32:50 2010 +0300 @@ -823,7 +823,7 @@ */ virtual void UpdateRect(const TRect& aRect) = 0; #endif // RD_JAVA_NGA_ENABLED - + virtual TBool ReadyToBlit() const = 0; }; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java Mon Jun 21 15:32:50 2010 +0300 @@ -28,6 +28,8 @@ import com.nokia.mj.impl.rt.legacy.NativeError; import com.nokia.mj.impl.rt.legacy.ToolkitInvoker; +import com.nokia.mj.impl.rt.support.Finalizer; + /** *

* A CanvasGraphicsItem is a drawable component that is used with a @@ -86,6 +88,9 @@ // LCDUI Toolkit object. Object iToolkit; + //Object finalizer + private Finalizer mFinalizer; + private com.nokia.mid.ui.CanvasGraphicsItemPainter iItemPainter; /** @@ -149,6 +154,14 @@ // Construction was successful. Store handle and register for // finalization. iHandle = handle; + + mFinalizer = new Finalizer() + { + public void finalizeImpl() + { + registeredFinalize(); + } + }; } /** @@ -460,6 +473,23 @@ iItemPainter.Repaint(0, 0, getWidth(), getHeight()); } + /* + * Disposes the Landmark native peer object, if the handles are valid. + * Invalid (negative) handles indicate that their creation failed in the + * first place. + */ + final void registeredFinalize() + { + synchronized (iToolkit) + { + if (iHandle > 0) + { + _dispose(getToolkitHandle(), iHandle); + iHandle = 0; + } + } + } + void Repaint(Graphics aGraphics) { paint(aGraphics); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/Clipboard.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/Clipboard.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/Clipboard.java Mon Jun 21 15:32:50 2010 +0300 @@ -22,7 +22,6 @@ import com.nokia.mj.impl.rt.legacy.NativeError; import com.nokia.mj.impl.rt.legacy.ToolkitInvoker; - /** * Class to provide extra functionality that is related to text-editing * @@ -37,7 +36,10 @@ } /** - * Copies characters into the system-clipboard + * Copies characters into the system clipboard. + *

+ * If text parameter is null or empty string, + * it clears the system clipboard. * * @param text the text to be copied */ @@ -48,13 +50,53 @@ ToolkitInvoker toolkitInvoker = ToolkitInvoker.getToolkitInvoker(); Object toolkit = toolkitInvoker.getToolkit(); + synchronized (toolkit) { + if ((text != null) && (text.length() == 0)) + { + text = null; + } NativeError.check(_copyToClipboard( toolkitInvoker.toolkitGetHandle(toolkit), text)); } } + /** + * Copies characters from the system clipboard. + *

+ * Returns empty string when there is nothing in the system clipboard. + *

+ * This method is not supported on S40 platform, returns null. + *

+ * @return the content in clipboard + */ + public static String copyFromClipboard() + { + String text = null; + + int[] error = new int[1]; + // Toolkit invoker is needed for accessing javax.microedition.lcdui + // package + ToolkitInvoker toolkitInvoker = ToolkitInvoker.getToolkitInvoker(); + + Object toolkit = toolkitInvoker.getToolkit(); + + synchronized (toolkit) + { + text = _copyFromClipboard( + toolkitInvoker.toolkitGetHandle(toolkit), + error); + } + + NativeError.check(error[0]); + if (text == null) + { + text = ""; + } + return text; + } + /* * Stores the text into the clipboard. * @@ -67,6 +109,19 @@ */ private static native int _copyToClipboard(int toolkit, String text); + /* + * Copies characters from the system-clipboard. + * + * @param toolkit A handle to the LCDUI toolkit. + * + * @param error On return contains the error code for the operation. + * + * @return The content of clipboard. + */ + private static native String _copyFromClipboard( + int toolkit, + int[] error); + } // END OF FILE \ No newline at end of file diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/S60TextEditor.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/S60TextEditor.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/S60TextEditor.java Mon Jun 21 15:32:50 2010 +0300 @@ -21,7 +21,7 @@ /** *

* S60 platform specific extensions to TextEditor. These methods - * are only available in S60 Java Runtime. + * are only available in Java Runtime for Symbian. *

* *

@@ -61,6 +61,15 @@ * preferred or enabled. *

* + *

Touch screen virtual keyboard

+ *

+ * In touch-only devices when user taps on a text editor touch screen + * virtual keyboard is opened. The keyboard takes part of the screen space, so + * canvas is smaller when virtual keyboard is visible. + * Application is notified about this by events, so it can react on this + * change and resize, move TextEditor to the visible area and adjust the + * whole Canvas. + *

* @see TextEditor * @since 1.4 */ @@ -105,6 +114,16 @@ public static final int TOUCH_INPUT_MINI_ITUT = 32; /** + * Indicates that the touch screen virtual keyboard is opened. + */ + public static final int ACTION_VIRTUAL_KEYBOARD_OPEN = 0x1000; + + /** + * Indicates that the touch screen virtual keyboard is closed. + */ + public static final int ACTION_VIRTUAL_KEYBOARD_CLOSE = 0x2000; + + /** *

* If the default indicator location is not used then sets the drawing * location for input indicators relative to the TextEditor's diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorExtensionAccess.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorExtensionAccess.java Mon Jun 21 15:32:50 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: Touch-support for TextEditor-API +* +*/ + +package com.nokia.mid.ui; + +import com.nokia.mid.ui.TextEditorTouchControl; + +/** + * This interface provides access to extended functionality related to the TextEditor-API + * The object returned by the method {@link com.nokia.mid.ui.TextEditor#createTextEditor(int, int, int, int)} and + * {@link com.nokia.mid.ui.TextEditor#createTextEditor(int, int, int, int)} implements this interface. + * It depends on the capabilities of the device whether the extensions provided via this interface are + * supported or not. For unsupported extensions, the getter-methods of this interface will return null. + */ +public interface TextEditorExtensionAccess +{ + + /** + * Gets the Touch-extensions of the TextEditor-API. See also {@link TextEditorTouchControl} + * @return the extension, or null if the device does not support touch. + */ + public TextEditorTouchControl getTouchControl(); + +} diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorImpl.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorImpl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorImpl.java Mon Jun 21 15:32:50 2010 +0300 @@ -10,7 +10,7 @@ * * Contributors: * - * Description: Package private class implementing the S60 interfaces + * Description: Package private class implementing the S60 interfaces * for TextEditor * */ @@ -34,8 +34,9 @@ * @since 1.4 */ class TextEditorImpl - extends com.nokia.mid.ui.TextEditor - implements com.nokia.mid.ui.S60TextEditor { + extends com.nokia.mid.ui.TextEditor + implements com.nokia.mid.ui.S60TextEditor +{ /* * Indicates that all input methods are available. *

@@ -128,7 +129,8 @@ * if the width or height is less than one pixel */ TextEditorImpl(String aText, int aMaxSize, int aConstraints, int aWidth, - int aHeight) { + int aHeight) + { super(aText, aMaxSize, aConstraints, aWidth, aHeight, false); } @@ -171,10 +173,11 @@ * @throws IllegalArgumentException * if the width is less than one pixel */ - TextEditorImpl(int aMaxSize, int aConstraints, int aWidth, int aRows) { + TextEditorImpl(int aMaxSize, int aConstraints, int aWidth, int aRows) + { super(null, aMaxSize, aConstraints, aWidth, aRows, true); } - + /* * Set the parent object of this TextEditor. Typically in LCDUI the parent * object would be Canvas or CustomItem. Setting the parameter to null @@ -186,10 +189,12 @@ * if aParent is not a valid object with which a * TextEditor can be associated */ - public void setParent( Object aParent ) { - super.setParent( aParent ); + public void setParent(Object aParent) + { + super.setParent(aParent); // Update indicator location to their default position. - if( aParent != null ) { + if (aParent != null) + { setDefaultIndicators(); } } @@ -228,10 +233,12 @@ * the y coordinate of the anchor point, in pixels. * */ - public void setIndicatorLocation(int x, int y) { - synchronized (iToolkit) { + public void setIndicatorLocation(int x, int y) + { + synchronized (iToolkit) + { NativeError.check(_setIndicatorLocation(getToolkitHandle(), - iHandle, x, y)); + iHandle, x, y)); } } @@ -260,17 +267,20 @@ * If the TextEditor is not added to * Canvas */ - public void setDefaultIndicators() { - synchronized (iToolkit) { + public void setDefaultIndicators() + { + synchronized (iToolkit) + { Object parent = getParent(); boolean fullScreen = false; - if (parent instanceof Canvas) { + if (parent instanceof Canvas) + { fullScreen = iLCDUIPackageInvoker.isFullScreen((Canvas) parent); } NativeError.check(_setDefaultIndicators(getToolkitHandle(), - iHandle, fullScreen)); + iHandle, fullScreen)); } } @@ -294,10 +304,12 @@ * @see #setIndicatorLocation(int, int) * @see #setDefaultIndicators() */ - public void setIndicatorVisibility(boolean visible) { - synchronized (iToolkit) { + public void setIndicatorVisibility(boolean visible) + { + synchronized (iToolkit) + { NativeError.check(_setIndicatorVisibility(getToolkitHandle(), - iHandle, visible)); + iHandle, visible)); } } @@ -317,12 +329,14 @@ * @return the width and height of area needed for drawing input indicators * @see #setDefaultIndicators() */ - public int[] getIndicatorSize() { + public int[] getIndicatorSize() + { int[] size = new int[INDICATOR_SIZE_COUNT]; - synchronized (iToolkit) { + synchronized (iToolkit) + { NativeError.check(_getIndicatorSize(getToolkitHandle(), iHandle, - size)); + size)); } return size; } @@ -349,17 +363,20 @@ * @see #setPreferredTouchMode(int) * @see #getDisabledTouchInputModes() */ - public void setDisabledTouchInputModes(int touchInputModes) { + public void setDisabledTouchInputModes(int touchInputModes) + { // Validate touch input modes. There must not be additional modes // 0 is valid. // See com.nokia.mid.ui.s60.TextEditor.TOUCH_INPUT_ALL_AVAILABLE. - if ((touchInputModes & ~MASK) != 0) { + if ((touchInputModes & ~MASK) != 0) + { throw new IllegalArgumentException(); } - synchronized (iToolkit) { + synchronized (iToolkit) + { NativeError.check(_setDisabledTouchInputModes(getToolkitHandle(), - iHandle, touchInputModes)); + iHandle, touchInputModes)); } } @@ -378,10 +395,12 @@ * @see #setDisabledTouchInputModes(int) * @see #setPreferredTouchMode(int) */ - public int getDisabledTouchInputModes() { + public int getDisabledTouchInputModes() + { int disabled = 0; - synchronized (iToolkit) { + synchronized (iToolkit) + { disabled = _getDisabledTouchInputModes(getToolkitHandle(), iHandle); } @@ -410,17 +429,20 @@ * @see #getPreferredTouchMode() * */ - public void setPreferredTouchMode(int touchInputModes) { + public void setPreferredTouchMode(int touchInputModes) + { int mask = touchInputModes & MASK; // Validate touch input mode. if (touchInputModes == 0 || (touchInputModes & ~MASK) != 0 - || (mask & (mask - 1)) != 0) { + || (mask & (mask - 1)) != 0) + { throw new IllegalArgumentException(); } - synchronized (iToolkit) { + synchronized (iToolkit) + { NativeError.check(_setPreferredTouchMode(getToolkitHandle(), - iHandle, touchInputModes)); + iHandle, touchInputModes)); } } @@ -436,37 +458,42 @@ * @see #setPreferredTouchMode(int) * @see #setDisabledTouchInputModes(int) */ - public int getPreferredTouchMode() { + public int getPreferredTouchMode() + { int preferredMode = 0; - synchronized (iToolkit) { + synchronized (iToolkit) + { preferredMode = _getPreferredTouchMode(getToolkitHandle(), iHandle); } NativeError.check(preferredMode); return preferredMode; } - + /* * Sets the caret in the Editor at x, y location. - * + * * @param x * The x coordinate of the wanted caret position. * * @param y * The y coordinate of the wanted caret position. */ - public void setCaretXY(int x, int y) { - synchronized (iToolkit) { + public void setCaretXY(int x, int y) + { + synchronized (iToolkit) + { NativeError.check(_setCaretXY(getToolkitHandle(), - iHandle, x, y)); + iHandle, x, y)); } } /* * Hidden default constructor. */ - private TextEditorImpl() { + private TextEditorImpl() + { } // Private methods. diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorListener.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorListener.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorListener.java Mon Jun 21 15:32:50 2010 +0300 @@ -98,6 +98,8 @@ */ public static final int ACTION_SCROLLBAR_CHANGED = 0x800; + // Events 0x1000 and 0x2000 are used in s60 extension + /** * This method is called by the platform to notify the client about events * in a TextEditor. A call to this method may represent more than one event. diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorTouchControl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorTouchControl.java Mon Jun 21 15:32:50 2010 +0300 @@ -0,0 +1,164 @@ +/* +* 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: TextEditor-API alignment for Nokia-UI +* +*/ +package com.nokia.mid.ui; + +import com.nokia.mid.ui.TextEditorListener; + +/** + * Touch-devices can use a virtual control-panel to replace physical keys, and to facilitate + * textual input. The purpose of this interface is to provide some level of access and control over such a panel, when + * using the TextEditor-API.

+ * + * MIDlets can obtain an instance of this interface via the {@link TextEditorExtensionAccess} in the + * following way: + *

+ * TextEditor editor = com.nokia.mid.ui.TextEditor.createTextEditor("hello world", 50, TextField.ANY, 100, 100);
+ * TextEditorTouchControl touchControl = ((TextEditorExtensionAccess)editor).getTouchControl();
+ * if(touchControl!=null){
+ *   // this is a touch-device
+ * }
+ * else{
+ *   // this is a non-touch-device
+ * }
+ * 
+ * The instance is associated with the editor it has been obtained from, and controls only this editor.

+ * + * Because a control-panel covers parts of the display which would otherwise be available to the application, MIDlets may + * choose to only display the panel at certain times, e.g. when the editor is focussed. This is possible with + * {@link TextEditorTouchControl#setPanelMode(int)}. Furthermore, a panel can be positioned anywhere an the display via + * {@link TextEditorTouchControl#setPanelPosition(int, int)}. This interface also allows to query the size of the panel, so + * that applications can integrate it into the Canvas.

+ * + * On touch-devices, the platform can make use of pointer-input to let the user interact with a TextEditor on a Canvas, without + * that the application knows about this. For example, if the user taps with his stylus or finger somewhere inside a visible + * and focussed TextEditor, the MIDlet might not receive any notification about this via the Canvas-methods pointerPressed, + * pointerDragged or pointerReleased. Instead, the platform could change the position of the cursor and generate the + * according event for the editors {@link TextEditorListener}. Or it may even just ignore this event completely. In general, + * an application should not expect to receive any pointer-events after a "press" inside a focussed TextEditor. + * Under certain circumstances however, for example as a response to the {@link TextEditorTouchControl#ACTION_TRAVERSE_OUT_SCROLL_UP} + * or {@link TextEditorTouchControl#ACTION_TRAVERSE_OUT_SCROLL_DOWN} event, an application can decide at any time to override this + * behaviour, and force the platform to deliver all subsequent pointer-events to the Canvas. + * This can be done with {@link TextEditorTouchControl#setTouchEnabled(boolean)}. Note that a TextEditor which has been touch-disabled + * this way will not be able to perform any interaction like cursor-positioning or scrolling via touch-input, until is has been + * enabled again. + */ +public interface TextEditorTouchControl +{ + + + //native_const(JAVA_TEXTEDITOR) + //{ + + /** + * Constant to disable the display of a keypad/control-panel + */ + public static final int PANEL_OFF = 1; + + /** + * Constant to enable the display of a keypad/control-panel. + * In this mode the user cannot change the position of the panel, however + * the MIDlet can still do so via {@link TextEditorTouchControl#setPanelPosition(int, int)} + */ + public static final int PANEL_FIXED_POSITION = 2; + + /** + * Constant to enable the display of a keypad/control-panel. + * In this mode, the user can change the position of the panel of the display e.g. by + * dragging, if this is supported by the device. Changes to the position will generate the + * {@link TextEditorTouchControl#ACTION_PANEL_MOVED}-event. The current panel-position is + * provided via {@link TextEditorTouchControl#getPanelX()} and {@link TextEditorTouchControl#getPanelY()} + */ + public static final int PANEL_FLOATING = 3; + //} + + /** + * Event to indicate that the keypad/control-panel has been moved by the user + */ + public static final int ACTION_PANEL_MOVED = 0x10000000; + + + /** + * Controls the behaviour of the virtual keypad/control-panel, if the device provides one. + * This is a hint which may be disregarded if the device does not support a virtual keypad/control-panel. + * @param mode One of {@link TextEditorTouchControl#PANEL_OFF} {@link TextEditorTouchControl#PANEL_FIXED_POSITION} + * or {@link TextEditorTouchControl#PANEL_FLOATING} + */ + public void setPanelMode(int mode); + + /** + * Gets the current panel-mode + * @return the mode, see {@link TextEditorTouchControl#setPanelMode(int)} + */ + public int getPanelMode(); + + /** + * Sets the position of the panel on the display. + * @param x x-position of the keypad + * @param y y-position of the keypad + */ + public void setPanelPosition(int x, int y); + + /** + * Gets the width of the panel + * @return the width + */ + public int getPanelWidth(); + + /** + * Gets the height of the panel + * @return the height + */ + public int getPanelHeight(); + + /** + * Gets the current x-position of the panel on the display + * @return the x-coordinate + */ + public int getPanelX(); + + /** + * Gets the current y-position of the panel on the display + * @return the y-coordinate + */ + public int getPanelY(); + + /** + * Specifies whether or not the editor will receive touch-events. This is enabled by default. + * An editor with touch-event disabled won't be able to perform any touch-related functionality + * such as scrolling or positioning the cursor. It may however still be controlled via the + * virtual keypad/control-panel if that is enabled, or receive other input e.g. via physical + * keys + * @param enabled true to enabled touch-event, false to disable + */ + public void setTouchEnabled(boolean enabled); + + /** + * Gets the current touch-enabled state + * @return true if the editor is touch-enabled, false otherwise + */ + public boolean isTouchEnabled(); + + /** + * Sets the caret as close as possible to a given x/y location. This is a hint to the implementation + * that may be disregarded. + * @param x new x-coordinate for the caret, relative to the editors origin + * @param y new y-coordinate for the caret, relative to the editors origin + */ + public void setCaret(int x, int y); + + +} diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java --- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java Mon Jun 21 15:32:50 2010 +0300 @@ -20,7 +20,7 @@ import com.nokia.mj.impl.rt.legacy.NativeError; import com.nokia.mid.ui.CanvasGraphicsItem; - +import com.nokia.mj.impl.rt.support.Finalizer; class CanvasGraphicsItemPainter extends com.nokia.mid.ui.CanvasGraphicsItemPainter @@ -34,6 +34,9 @@ // Graphics private Graphics iGraphics; + //Object finalizer + private Finalizer mFinalizer; + // // Repainting // @@ -64,6 +67,14 @@ } iGraphics = null; + + mFinalizer = new Finalizer() + { + public void finalizeImpl() + { + registeredFinalize(); + } + }; } /** @@ -245,8 +256,34 @@ } } + /* + * Disposes the Landmark native peer object, if the handles are valid. + * Invalid (negative) handles indicate that their creation failed in the + * first place. + */ + final void registeredFinalize() + { + synchronized (iToolkit) + { + if (iHandle > 0) + { + _dispose(iToolkit.getHandle(), iHandle); + iHandle = 0; + } + } + } + // Native methods + /* + * Disposes the native side peer object. + * + * @param aToolkitHandle A handle to the LCDUI toolkit. + * + * @param aNativePeerHandle A handle to the native side peer object. + */ + private native void _dispose(int aToolkitHandle, int aNativePeerHandle); + private native int _createNativePeer( int aToolkit, int aWidth, diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Canvas.java --- a/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Canvas.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Canvas.java Mon Jun 21 15:32:50 2010 +0300 @@ -88,7 +88,7 @@ // This flag is valid only in NGA private boolean iM3GContent; - + private boolean iM3GDraw = false; /** * This member variable is set true if the Nokia-UI-Enhancement * attribute is "CanvasHasBackground". The attribute may be placed in the JAD or the manifest. @@ -637,14 +637,14 @@ break; case Toolkit.EVENT_M3G_DRAW: if (shown) - { + { synchronized (iCallbackLock) { - Graphics graphics = GetPaintGraphics(); - graphics.M3Gdraw(aData0); + Graphics graphics = GetPaintGraphics(); + iM3GDraw = aData0 != 0; } - } - break; + } + break; default: super.handleEvent(aEvent, aData0, aData1); break; @@ -913,6 +913,14 @@ iM3GContent = aValue; } + /* + * This function blocking downscaled when M3G drawing some content + */ + boolean m3gDraw() + { + return iM3GDraw; + } + private native int _create( int aToolkit, int aDisplayable, boolean aIsGameCanvas, int[] aCanvasAttribArray); static native int _getGameAction(int aToolkit, int aKeyCode); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Graphics.java --- a/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Graphics.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Graphics.java Mon Jun 21 15:32:50 2010 +0300 @@ -157,7 +157,7 @@ private Font iScalableFont; private boolean iFontSet; private boolean iScalableFontSet; - private boolean iM3Gdraw; + private boolean iPrevScalingFlag = false; private int iOnScreenWidth; // width of screen private int iOnScreenHeight; // height of screen @@ -196,7 +196,6 @@ iToolkit = aToolkit; iBuffer = aToolkit.iBuffer; iTarget = aTarget; - iM3Gdraw = false; iIsSetTargetSize = false; // If a Graphics is drawing to image then a image is saved. Null otherwise iImage = (aTarget instanceof Image) ? (Image)aTarget : null; @@ -1404,7 +1403,7 @@ // Check that aImage haven't been disposed yet if (aImage.iHandle != 0) { - // If downscaling off, + // If downscaling off, // then it only send data to native side iBuffer.write(iHandle, OP_DRAW_REGION, @@ -1475,40 +1474,31 @@ } } - /** - *this function blocking downscaled when M3G drawing some content - **/ - void M3Gdraw(int aM3Gdraw) - { - if (aM3Gdraw == 0) - { - iM3Gdraw = false; - } - else - { - iM3Gdraw = true; - } - } + /** * This function return flag if Graphics is downscaled. * Graphics is downscaled on if we have set original size, this size is bigger then screen * (at least on one measure) and iTarget is Canvas in full screen Canvas or a target size is * smaller than original size. * @return true if Graphics is downscaled, false otherwise - */ + */ boolean isDownscaled() { - // If M3G is drawnig then downscaling is turn off. - if (iM3Gdraw) - { - return false; - } + boolean ret = false; + // If M3G is drawnig then downscaling is turn off. if ((iTarget instanceof Canvas) && ((Canvas)iTarget).getFullScreenMode() - && iIsSetOriginalSize) + && iIsSetOriginalSize && !((Canvas)iTarget).m3gDraw()) { - return iOnScreenHeight < iHeight || iOnScreenWidth < iWidth ; + ret = iOnScreenHeight < iHeight || iOnScreenWidth < iWidth; } - return false; + // If downscaling is turn off then disable scalable font + if (iPrevScalingFlag != ret && iPrevScalingFlag == true) + { + iFontSet = false; + iScalableFontSet = false; + } + iPrevScalingFlag = ret; + return ret; } /** diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Image.java --- a/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Image.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Image.java Mon Jun 21 15:32:50 2010 +0300 @@ -569,7 +569,7 @@ /** * destroy native image. - * Synchronization prevents Image to be disposed when in use. + * Synchronization prevents Image to be disposed when in use. */ synchronized private void dispose() { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/src.nokialcdui/CanvasGraphicsItemPainter.cpp --- a/javauis/lcdui_akn/javalcdui/src.nokialcdui/CanvasGraphicsItemPainter.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/src.nokialcdui/CanvasGraphicsItemPainter.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -26,6 +26,40 @@ #include #include +/** + * Local helper function for disposing graphics item painter + * native side component. + * + * @param aItem The graphics item painter to be destroyed. + */ +LOCAL_C void Dispose(CMIDToolkit* aToolkit, MMIDCanvasGraphicsItemPainter* aItem) +{ + aToolkit->DisposeObject(aItem); +} + +/* + * Class: com_nokia_mid_ui_CanvasGraphicsItemPainter + * Method: _dispose + * Signature: (II)V + */ +JNIEXPORT void JNICALL Java_javax_microedition_lcdui_CanvasGraphicsItemPainter__1dispose( + JNIEnv* /* aJniEnv */, + jobject /* aPeer */, + jint aToolkitHandle, + jint aNativePeerHandle) +{ + DEBUG("CanvasGraphicsItemPainter.cpp - dispose +"); + + CMIDToolkit* toolkit = JavaUnhand< CMIDToolkit >(aToolkitHandle); + + MMIDCanvasGraphicsItemPainter* item = + MIDUnhandObject(aNativePeerHandle); + + toolkit->ExecuteV(&Dispose, toolkit, item); + + DEBUG("CanvasGraphicsItemPainter.cpp - dispose -"); +} + LOCAL_C void CreateNativePeerL ( CMIDToolkit* aToolkit, diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/javalcdui/src.nokialcdui/Clipboard.cpp --- a/javauis/lcdui_akn/javalcdui/src.nokialcdui/Clipboard.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/javalcdui/src.nokialcdui/Clipboard.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -25,6 +25,54 @@ #include #include #include +#include +#include + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + +/** + * Local helper method for handling native strings and converting them to + * Java strings. + * + * Error is set also in this method. + * + * @param aJniEnv A valid reference JNI environment. + * @param aText The native descriptor to be converted. + * @param aError The return value from ExecuteTrap. + * @param aReturnError On return, contains an error code. + * @return The converted Java string or NULL if the conversion failed. + */ +LOCAL_C jstring HandleString( + JNIEnv& aJniEnv, + const TDesC& aText, + TInt aError, + jintArray aReturnError) +{ + DEBUG("TextEditor.cpp - HandleString +"); + + jstring javaText = NULL; + + // Create Java string if the operation was successful. + if (aError == KErrNone) + { + javaText = CreateJavaString(aJniEnv, aText); + + // If NULL is returned, it indicates that the creation failed. + if (!javaText) + { + aError = KErrNoMemory; + } + } + + jint errorArray[ 1 ] = { aError }; + aJniEnv.SetIntArrayRegion(aReturnError, 0, 1, errorArray); + + DEBUG_INT("TextEditor.cpp - HandleString -, aError=%d", aError); + + return javaText; +} /** * Local helper function for inserting the text to clipboard. @@ -33,18 +81,24 @@ */ LOCAL_C void CopyToClipboardL(const TDesC* aText) { - CClipboard* clipboard = CClipboard::NewForWritingLC( - CCoeEnv::Static()->FsSession()); + if (aText == &KNullDesC) + { + CClipboard::Clear(CCoeEnv::Static()->FsSession()); + } + else + { + CClipboard* clipboard = CClipboard::NewForWritingLC( + CCoeEnv::Static()->FsSession()); - CPlainText* text = CPlainText::NewL(); - CleanupStack::PushL(text); - text->InsertL(0, *aText); - - text->CopyToStoreL(clipboard->Store(), clipboard->StreamDictionary(), 0, - text->DocumentLength()); - CleanupStack::PopAndDestroy(); // text - clipboard->CommitL(); - CleanupStack::PopAndDestroy(); // clipboard; + CPlainText* text = CPlainText::NewL(); + CleanupStack::PushL(text); + text->InsertL(0, *aText); + text->CopyToStoreL(clipboard->Store(), clipboard->StreamDictionary(), 0, + text->DocumentLength()); + CleanupStack::PopAndDestroy(); // text + clipboard->CommitL(); + CleanupStack::PopAndDestroy(); // clipboard; + } } /* @@ -64,6 +118,7 @@ // Convert the content to a native descriptor. NULL indicates // that an empty string is set as content. const RJString content(*aJniEnv, aText); + const TDesC* nativeContent = (aText ? &content : &KNullDesC); jint error = toolkit->ExecuteTrap(&CopyToClipboardL, @@ -72,4 +127,91 @@ return error; } +/** + * Local helper function for retrieving the text from clipboard. + * + * @return The text copied from the clipboard. + */ +LOCAL_C void CopyFromClipboardL(HBufC** aText) +{ + CClipboard* cb = NULL; + TRAPD(error, (cb = CClipboard::NewForReadingL( + CCoeEnv::Static()->FsSession()))); // codescanner::eikonenvstatic + // Nothing in the clipboard, not an error + if ((error != KErrPathNotFound) && (error != KErrNotFound)) + { + TStreamId id(cb->StreamDictionary().At(KClipboardUidTypePlainText)); + if (id != KNullStreamId) + { + CleanupStack::PushL(cb); + + RStoreReadStream stream; + stream.OpenLC(cb->Store(), id); + TInt length = stream.ReadInt32L(); + CBufFlat* buffer = CBufFlat::NewL(length); + CleanupStack::PushL(buffer); + + RBufWriteStream bufStream(*buffer); + CleanupClosePushL(bufStream); + TMemoryStreamUnicodeSink sink(bufStream); + TUnicodeExpander e; + e.ExpandL(sink, stream, length); + bufStream.CommitL(); + + CleanupStack::PopAndDestroy(); // bufStream + CleanupStack::Pop(buffer); + CleanupStack::PopAndDestroy(2, cb); // stream, cb + + CleanupStack::PushL(buffer); + + TPtrC8 ptr8(buffer->Ptr(0)); + + TPtr ptr = TPtr16(reinterpret_cast(const_cast(ptr8.Ptr())), + length, + length); + + if (ptr.Length() != 0) + { + *aText = ptr.AllocL(); + CleanupStack::PopAndDestroy(); // ptr; + } + } + } +} + +/* + * Class: com_nokia_mid_ui_Clipboard + * Method: _copyFromClipboard + * Signature: (II)Z + */ +JNIEXPORT jstring JNICALL Java_com_nokia_mid_ui_Clipboard__1copyFromClipboard( + JNIEnv* aJniEnv, + jclass /* aPeer */, + jint aToolkitHandle, + jintArray aError) +{ + DEBUG("Clipboard.cpp - copyFromClipboard +"); + + CMIDToolkit* toolkit = JavaUnhand< CMIDToolkit >(aToolkitHandle); + + HBufC* text = NULL; + + jstring content = NULL; + + TInt error = toolkit->ExecuteTrap( + &CopyFromClipboardL, + &text); + if (text != NULL) + { + // Handle text conversion an errors. + content = HandleString(*aJniEnv, *text, error, aError); + + // Text is not needed anymore. + delete text; + } + + DEBUG("Clipboard.cpp - copyFromClipboard -"); + return content; +} + // End of file diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDCanvas.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDCanvas.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDCanvas.h Mon Jun 21 15:32:50 2010 +0300 @@ -709,6 +709,16 @@ */ TBool IsFullScreen() const; +#ifdef RD_JAVA_S60_RELEASE_9_2 + /** + * Gets a Displayable from the container. + * + * @return The Displayable from container. + * @since S60 5.0 + */ + CMIDDisplayable* GetDisplayable() const; +#endif // RD_JAVA_S60_RELEASE_9_2 + protected: /** @@ -885,7 +895,7 @@ TBool PointerEventInControl(MMIDCustomComponent* aControl, TPoint aPoint); -#endif // RD_SCALABLE_UI_V2 +#endif // RD_SCALABLE_UI_V2 /** * Constructor. diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItem.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItem.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItem.h Mon Jun 21 15:32:50 2010 +0300 @@ -54,8 +54,8 @@ CMIDUtils* iUtils; TCtorParams::TCtorParams() : - iPainterHandle(NULL), - iUtils(NULL) {} + iPainterHandle(NULL), + iUtils(NULL) {} }; public: // Constructors and destructor @@ -147,12 +147,6 @@ return EFalse; } -public: // From MMIDScalable - - TBool IsScalingOn() const; - -public: //Own methods - /** * Handles fullscreen state of parent Canvas. * @@ -167,6 +161,10 @@ */ void HandleResolutionChange(); +public: // From MMIDScalable + + TBool IsScalingOn() const; + public: // From MMIDCanvasGraphicsItem /** diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItemPainter.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItemPainter.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItemPainter.h Mon Jun 21 15:32:50 2010 +0300 @@ -59,9 +59,9 @@ MMIDEnv* iEnv; TCtorParams::TCtorParams() : - iWidth(0), - iHeight(0), - iEnv(NULL) + iWidth(0), + iHeight(0), + iEnv(NULL) {} }; @@ -400,7 +400,7 @@ }; inline void CMIDCanvasGraphicsItemPainter::SetItem( - CMIDCanvasGraphicsItem* aItem) + CMIDCanvasGraphicsItem* aItem) { iItem = aItem; } @@ -411,7 +411,7 @@ } inline void CMIDCanvasGraphicsItemPainter::SetOnScreenCanvasRect( - const TRect& aRect) + const TRect& aRect) { iOnScreenCanvasRect = aRect; } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDCommandList.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDCommandList.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDCommandList.h Mon Jun 21 15:32:50 2010 +0300 @@ -45,10 +45,10 @@ TInt FindCommandIndex(MMIDCommand* aCommand); TInt HighestNonMappedPriorityCommand(MMIDCommand::TCommandType aType, - TBool aIgnoreForImplicitList = EFalse) const; + TBool aIgnoreForImplicitList = EFalse) const; TInt HighestPriorityCommand(MMIDCommand::TCommandType aType) const; - TInt FindCommandForSoftKey(const CMIDSoftKey& aSoftKey, - TBool aIgnoreForImplicitList = EFalse) const; + TInt FindCommandForSoftKey(const CMIDSoftKey& aSoftKey, + TBool aIgnoreForImplicitList = EFalse) const; void UnMapCommands(); TInt Count() const; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDDisplayable.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDDisplayable.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDDisplayable.h Mon Jun 21 15:32:50 2010 +0300 @@ -119,6 +119,9 @@ void SetComponentL(MMIDComponent& aComponent); MMIDComponent* Component() const; void SetFullScreenModeL(TBool aFullScreen); +#ifdef RD_JAVA_S60_RELEASE_9_2 + void HandleSplitScreenKeyboard(TBool aOpened); +#endif // RD_JAVA_S60_RELEASE_9_2 CCoeControl& ContentWindow(); TBool SoftKeyLabelLocation(TInt aSoftKeyId, TPoint& aPosition, TSize& aSize); TInt SoftKeyLabelAnchor(TInt aSoftKeyId); @@ -552,6 +555,11 @@ //stores id of command mapped to the MSK TInt iIdOfMSKCommand; +#ifdef RD_JAVA_S60_RELEASE_9_2 + // Indicates opened split screen keyboard + TBool iSplitScreenKeyboard; +#endif // RD_JAVA_S60_RELEASE_9_2 + }; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDTextEditor.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDTextEditor.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDTextEditor.h Mon Jun 21 15:32:50 2010 +0300 @@ -72,11 +72,11 @@ CMIDUtils* iUtils; TCtorParams::TCtorParams() : - iMaxSize(0), - iWidth(0), - iHeight(0), - iHeightInRows(EFalse), - iUtils(NULL) {} + iMaxSize(0), + iWidth(0), + iHeight(0), + iHeightInRows(EFalse), + iUtils(NULL) {} }; public: // Constructors and destructor diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDTextEditorEdwin.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDTextEditorEdwin.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDTextEditorEdwin.h Mon Jun 21 15:32:50 2010 +0300 @@ -21,10 +21,15 @@ // INTERNAL INCLUDES #include "CMIDEdwinUtils.h" +#include "CMIDDisplayable.h" +// Used for scaling #include // EXTERNAL INCLUDES #include +#ifdef RD_JAVA_S60_RELEASE_9_2 +#include +#endif // RD_JAVA_S60_RELEASE_9_2 // FORWARD DECLARATIONS class CMIDEditingStateIndicator; @@ -194,7 +199,7 @@ * @param aType Resource change type. * @since S60 5.0 */ - void CMIDTextEditorEdwin::HandleResourceChange(TInt aType); + void HandleResourceChange(TInt aType); /** * Handles external text changes. @@ -228,6 +233,47 @@ public: // New methods +#ifdef RD_JAVA_S60_RELEASE_9_2 + /** + * Gets StatusPane + * + * @return pointer to StatusPane. + * @since S60 5.0 + */ + CEikStatusPane* GetStatusPane(); + + /** + * Handles lost focus. + * + * @since S60 5.0 + */ + void FocusLost(); + + /** + * Closes VKB if editor is loosing visibility, disposing etc., + * + * @since S60 5.0 + */ + void CloseVKB(); + + /** + * Handles disabling of partial VKB. + * + * @since S60 5.0 + */ + void HandlePartialVKBDisable(); + +#endif // RD_JAVA_S60_RELEASE_9_2 + + /** + * Handles Scrollbar change event sending. + * + * @return The scroll bar change event or 0 if it shouldn't be updated. + * + * @since S60 5.0 + */ + TInt ScrollBarEvent(); + /** * Sets the top parent of this control. Note that the ownership * is not transferred to this control. @@ -393,9 +439,10 @@ /** * Initializes this text editor edwin component. * + * @param aDisplayable Parent displayable. * @since S60 5.0 */ - void InitializeL(); + void InitializeL(CMIDDisplayable* aDisplayable); /** * Uninitializes this text editor edwin component. @@ -590,7 +637,18 @@ // Direction of writing TAknLayoutId iDirection; // Visible content height used for sending scroll event - TBool iVisibleContentHeight; + TInt iVisibleContentHeight; +#ifdef RD_JAVA_S60_RELEASE_9_2 + // Indicates state of partial VKB + TBool iPartialVKBOpen; + // Used for Statuspane visibility + CAknAppUi* iJavaAppUi; + /** + * Displayable. + * Not own. + */ + CMIDDisplayable* iDisplayable; +#endif // RD_JAVA_S60_RELEASE_9_2 // Canvas fullscreen size TRect iOnScreenCanvasRect; // Flag if scaling is on now. diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDTextFieldItem.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDTextFieldItem.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDTextFieldItem.h Mon Jun 21 15:32:50 2010 +0300 @@ -165,6 +165,3 @@ }; #endif // CMIDTEXTFIELDITEM_H - - - diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/inc/CMIDUtils.h --- a/javauis/lcdui_akn/lcdui/inc/CMIDUtils.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/inc/CMIDUtils.h Mon Jun 21 15:32:50 2010 +0300 @@ -436,11 +436,11 @@ } inline CMIDUtils::TScalingData::TScalingData(): iOriginalSize(), - iTargetSize(), - iScreenSize(), - iCanvasSize(), - iRatioX(1.0f), - iRatioY(1.0f) + iTargetSize(), + iScreenSize(), + iCanvasSize(), + iRatioX(1.0f), + iRatioY(1.0f) {} #endif // CMIDUTILS_H diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDCanvas.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDCanvas.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDCanvas.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -48,6 +48,10 @@ #include #include #include +#ifdef RD_JAVA_S60_RELEASE_9_2 +// Used with partial VKB +#include +#endif // RD_JAVA_S60_RELEASE_9_2 #include "javaoslayer.h" @@ -560,7 +564,7 @@ return EKeyWasNotConsumed; } - if (iDisplayable && iDisplayable->IsFullScreenMode() && + if (iDisplayable && iDisplayable->IsFullScreenMode() && iDisplayable->IsCommandListenerSet() && iDisplayable->CommandCount() > 0) { @@ -1074,7 +1078,7 @@ #ifdef RD_JAVA_NGA_ENABLED if (iFirstPaintState != EFirstPaintOccurred && - iDirectContents.Count() == 1) + iDirectContents.Count() == 1) { // The first canvas paint using NGA might be interrupted // by addition of the direct content. @@ -1082,7 +1086,7 @@ TInt posPacked = (iViewRect.iTl.iX << 16) | (iViewRect.iTl.iY); TSize size = iViewRect.Size(); TInt sizePacked = (size.iWidth << 16) | (size.iHeight); - + PostEvent(EPaint, posPacked, sizePacked); } #endif // RD_JAVA_NGA_ENABLED @@ -1446,6 +1450,17 @@ return iFullScreen; } +#ifdef RD_JAVA_S60_RELEASE_9_2 +// --------------------------------------------------------------------------- +// CMIDCanvas::GetDisplayable +// (other items are commented in the header file) +// --------------------------------------------------------------------------- +// +CMIDDisplayable* CMIDCanvas::GetDisplayable() const +{ + return iDisplayable; +} +#endif // RD_JAVA_S60_RELEASE_9_2 // --------------------------------------------------------------------------- // CMIDCanvas::SetComponentIndexL // Changes the index of the specified custom component. @@ -1578,9 +1593,9 @@ #ifdef RD_JAVA_NGA_ENABLED iCoeEnv->WsSession().Finish(); #endif - + if (iFirstPaintState == EFirstPaintInitiated || - iFirstPaintState == EFirstPaintPrepared) + iFirstPaintState == EFirstPaintPrepared) { // NGA is not used, StartScreen can be informed now if (iForeground) @@ -2081,10 +2096,16 @@ // void CMIDCanvas::HandleResourceChange(TInt aType) { +#ifdef RD_JAVA_S60_RELEASE_9_2 + if ((aType == KEikInputLanguageChange) | + (aType == KAknSplitInputEnabled) | + (aType == KAknSplitInputDisabled)) +#else if (aType == KEikInputLanguageChange) +#endif // RD_JAVA_S60_RELEASE_9_2 { if ((iFocusedComponent != KComponentFocusedNone) && - (iFocusedComponent < iCustomComponents.Count())) + (iFocusedComponent < iCustomComponents.Count())) { iCustomComponents[iFocusedComponent]-> CustomComponentControl(KComponentMainControl)-> @@ -2267,6 +2288,14 @@ // iViewRect.iBr - TSize(1, 1) -> (iContentSize.iWidth - 1, // iContentSize.iHeight - 1) point -= iViewRect.iTl; + +#ifdef RD_JAVA_NGA_ENABLED + if (iFullScreen && iScalingOn) + { + // Fix coordinates + point += iPositionRelativeToScreen; + } +#endif // RD_JAVA_NGA_ENABLED if (javaMaxCoords != nativeMaxCoords) { @@ -3402,6 +3431,7 @@ // TBool CMIDCanvas::IsNetworkIndicatorEnabledL() const { +#ifndef RD_JAVA_S60_RELEASE_9_2 if (RProcess().SecureId().iId != 0x102033E6) { // For standalone type apps we don't show indicator. @@ -3461,6 +3491,10 @@ } return enabled; +#else +// Network and Call indicator is disabled for 9_2 + return EFalse; +#endif //RD_JAVA_S60_RELEASE_9_2 } // --------------------------------------------------------------------------- diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItem.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItem.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItem.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -63,7 +63,7 @@ // --------------------------------------------------------------------------- // CMIDCanvasGraphicsItem::CMIDCanvasGraphicsItem() : - iUtils(NULL) + iUtils(NULL) { // No implementation. } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItemPainter.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItemPainter.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItemPainter.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -64,7 +64,7 @@ // --------------------------------------------------------------------------- // CMIDCanvasGraphicsItemPainter::CMIDCanvasGraphicsItemPainter(MMIDEnv& aEnv) : - iEnv(aEnv) + iEnv(aEnv) { // No implementation. } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDCommandList.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDCommandList.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDCommandList.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -133,7 +133,7 @@ command of that type. */ TInt CMIDCommandList::HighestNonMappedPriorityCommand( - MMIDCommand::TCommandType aType, TBool aIgnoreForImplicitList) const + MMIDCommand::TCommandType aType, TBool aIgnoreForImplicitList) const { TInt numCommands = Count(); for (TInt i = 0; i < numCommands; i++) @@ -141,10 +141,10 @@ CMIDCommand* cmd = At(i).iCommand; // In case of IMPLICIT List without highlight, nor OK // neither ITEM commands are mapped to soft keys. - TBool ignore = aIgnoreForImplicitList - && (cmd->CommandType() == MMIDCommand::EOk - || cmd->CommandType() == MMIDCommand::EItem); - if ((cmd->CommandType() == aType) && !cmd->IsMappedToSoftKey() + TBool ignore = aIgnoreForImplicitList + && (cmd->CommandType() == MMIDCommand::EOk + || cmd->CommandType() == MMIDCommand::EItem); + if ((cmd->CommandType() == aType) && !cmd->IsMappedToSoftKey() && !ignore) { return i; @@ -165,7 +165,7 @@ for (TInt i = 0; i < numTypes; i++) { TInt index = HighestNonMappedPriorityCommand( - aSoftKey.AllowedCommandTypes()[i], aIgnoreForImplicitList); + aSoftKey.AllowedCommandTypes()[i], aIgnoreForImplicitList); if (index != KErrNotFound) { return index; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDDisplayable.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDDisplayable.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDDisplayable.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -291,6 +291,9 @@ #endif //RD_TACTILE_FEEDBACK ,iIdOfMSKCommand(KErrNotFound) { +#ifdef RD_JAVA_S60_RELEASE_9_2 + iSplitScreenKeyboard = EFalse; +#endif // RD_JAVA_S60_RELEASE_9_2 iAppUi = (CMIDAppUi*)java::ui::CoreUiAvkonLcdui::getInstance().getJavaUiAppUi()->getLcduiChild(); } @@ -986,7 +989,7 @@ form->HandleForegroundL(aForeground); } - HandleCanvasForeground(aForeground); + HandleCanvasForeground(aForeground); if (aForeground) { @@ -1037,7 +1040,6 @@ SetRect(iDisplayableRect); // MIDlet icon is resized in cpane SizeChanged() - if (!iActive && iContentControl) {//The active displayable already gets this call by the CONE framework but //background displayables don't, so for example a background form won't be @@ -1237,7 +1239,7 @@ else { #ifdef RD_JAVA_S60_RELEASE_9_2 - canvasRect.LayoutRect( resultRect, AknLayoutScalable_Avkon::midp_canvas_pane(9).LayoutLine() ); + canvasRect.LayoutRect(resultRect, AknLayoutScalable_Avkon::midp_canvas_pane(9).LayoutLine()); #else resultRect = TRect(80,0,560,360); // Layout data not defined in older releases. DEBUG("- CMIDDisplayable::GetCanvasRectFromLaf"); @@ -1795,7 +1797,11 @@ void CMIDDisplayable::HandleOnScreenKeypadVisual() { DEBUG("+ CMIDDisplayable::HandleOnScreenKeypadVisual"); +#ifdef RD_JAVA_S60_RELEASE_9_2 + if (iActive && !iSplitScreenKeyboard) +#else if (iActive) +#endif // RD_JAVA_S60_RELEASE_9_2 { UpdateOnScreenKeypadSettings(); UpdateDisplayableRect(); @@ -2055,6 +2061,40 @@ DEBUG("- CMIDDisplayable::SetFullScreenModeL"); } +#ifdef RD_JAVA_S60_RELEASE_9_2 +// --------------------------------------------------------------------------- +// When partial screen keyboard is opened we need to +// get rid of status pane and resize Displayable. +// --------------------------------------------------------------------------- +void CMIDDisplayable::HandleSplitScreenKeyboard(TBool aOpened) +{ + iSplitScreenKeyboard = aOpened; + if (aOpened) + { + iAppUi->StatusPane()->MakeVisible(EFalse); + TRect clientRect = iAppUi->ClientRect(); + SetRect(clientRect); + if (iActive) + { + DrawDeferred(); + } + } + else + { + if (iActive) + { + UpdateOnScreenKeypadSettings(); + UpdateDisplayableRect(); + SetRect(iDisplayableRect); + // Ignoring leave + // The method was already called at least once + // and must be called here. + TRAP_IGNORE(UpdateVisualAppearanceL()); + } + } +} +#endif // RD_JAVA_S60_RELEASE_9_2 + // --------------------------------------------------------------------------- // Return true if we are in full screen mode (cavas), false otherwise. // @see iIsFullScreenMode @@ -3138,7 +3178,7 @@ iCanvasKeypad->HandleApplicationBackground(); } - HandleCanvasForeground(EFalse); + HandleCanvasForeground(EFalse); } void CMIDDisplayable::ProcessMSKCommandL() diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDEditingStateIndicator.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDEditingStateIndicator.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDEditingStateIndicator.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -628,7 +628,7 @@ // --------------------------------------------------------------------------- // CMIDEditingStateIndicator::CMIDEditingStateIndicator() : - CAknIndicatorContainer(CAknIndicatorContainer::EQueryEditorIndicators) + CAknIndicatorContainer(CAknIndicatorContainer::EQueryEditorIndicators) { DEBUG("CMIDEditingStateIndicator::CMIDEditingStateIndicator"); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDEdwin.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDEdwin.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDEdwin.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -1118,7 +1118,17 @@ // are not supported, chars need to be changed to space // SetText function before actual text change checks if line // breaks are not supported - SetTextL(*res); + TPtr16 text = res->Des(); + TInt tmpPos; + + if ((text.Locate(TChar('\n'))) >=0 || + (text.Locate(TChar('\f'))) >=0) + { + tmpPos = CEikEdwin::CursorPos(); + SetTextL(*res); + CEikEdwin::SetCursorPosL(tmpPos, EFalse); + } + textChanged = ETrue; CleanupStack::Pop(res); delete res; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDEdwinUtils.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDEdwinUtils.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDEdwinUtils.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -837,9 +837,14 @@ //on wheather the temporary char is displayed or the '*' is displayed. TRAP_IGNORE(aEdwin->SetWordWrapL(aConstraints & MMIDTextField::EPassword ? EFalse : ETrue)); } + +#ifdef RD_JAVA_S60_RELEASE_9_2 + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() & + EAknEditorFlagEnablePartialScreen); +#else aEdwin->SetAknEditorFlags(EAknEditorFlagDefault); +#endif // RD_JAVA_S60_RELEASE_9_2 aEdwin->SetAknEditorSpecialCharacterTable(-1); - // handle all constraints and the PASSWORD modifier TUint constraint = aConstraints & MMIDTextField::EConstraintMask; if ((constraint == MMIDTextField::EAny) && (aConstraints & MMIDTextField::EPassword)) @@ -857,11 +862,14 @@ // handle other modifiers if ((aConstraints & MMIDTextField::ENonPredictive) || (aConstraints & MMIDTextField::ESensitive)) { - aEdwin->SetAknEditorFlags(EAknEditorFlagNoT9 | EAknEditorFlagDeliverVirtualKeyEventsToApplication); + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagNoT9 | + EAknEditorFlagDeliverVirtualKeyEventsToApplication); } else { - aEdwin->SetAknEditorFlags(EAknEditorFlagDeliverVirtualKeyEventsToApplication); + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagDeliverVirtualKeyEventsToApplication); } if ((aConstraints & MMIDTextField::EInitialCapsWordSentence) || (aConstraints & MMIDTextField::EInitialCapsWord)) { @@ -880,7 +888,9 @@ aEdwin->SetAknEditorCurrentInputMode(EAknEditorTextInputMode); aEdwin->SetAknEditorCase(EAknEditorLowerCase); aEdwin->SetAknEditorCurrentCase(EAknEditorLowerCase); - aEdwin->SetAknEditorFlags(EAknEditorFlagNoT9 | EAknEditorFlagDeliverVirtualKeyEventsToApplication); + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagNoT9 | + EAknEditorFlagDeliverVirtualKeyEventsToApplication); aEdwin->SetAknEditorSpecialCharacterTable(R_MIDP_TEXTBOX_SPECIAL_CHARACTER_TABLE_DIALOG); break; case MMIDTextField::ENumeric: @@ -899,8 +909,10 @@ extendedInputCapabilities->Capabilities() | CAknExtendedInputCapabilities::EDisableSCT); } - aEdwin->SetAknEditorFlags(EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | - EAknEditorFlagUseSCTNumericCharmap | EAknEditorFlagDeliverVirtualKeyEventsToApplication); + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | + EAknEditorFlagUseSCTNumericCharmap | + EAknEditorFlagDeliverVirtualKeyEventsToApplication); aEdwin->SetAknEditorSpecialCharacterTable(R_MIDP_TEXTBOX_NUMERIC_MODE_DIALOG); } break; @@ -909,8 +921,10 @@ aEdwin->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); aEdwin->SetAknEditorInputMode(EAknEditorNumericInputMode); aEdwin->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode); - aEdwin->SetAknEditorFlags(EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | - EAknEditorFlagUseSCTNumericCharmap | EAknEditorFlagDeliverVirtualKeyEventsToApplication); + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | + EAknEditorFlagUseSCTNumericCharmap | + EAknEditorFlagDeliverVirtualKeyEventsToApplication); aEdwin->SetAknEditorNumericKeymap(EAknEditorPlainNumberModeKeymap); if (iDecimalSeparator == ',') { @@ -925,7 +939,8 @@ aEdwin->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); aEdwin->SetAknEditorInputMode(EAknEditorNumericInputMode); aEdwin->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode); - aEdwin->SetAknEditorFlags(EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | + aEdwin->SetAknEditorFlags(aEdwin->AknEdwinFlags() | + EAknEditorFlagFixedCase | EAknEditorFlagNoT9 | EAknEditorFlagDeliverVirtualKeyEventsToApplication); aEdwin->SetAknEditorNumericKeymap(EAknEditorStandardNumberModeKeymap); break; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDList.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDList.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDList.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -1778,11 +1778,11 @@ // We need avoid stretching list's elements. This prevents problems // with icon overlaying and bad wrapping. - if(type < EDouble2Style) + if (type < EDouble2Style) { CEikColumnListBox* clb = (static_cast(listBox)); - if(clb) + if (clb) { clb->EnableStretching(EFalse); } @@ -1791,7 +1791,7 @@ { CEikFormattedCellListBox* fclb = (static_cast(listBox)); - if(fclb) + if (fclb) { fclb->EnableStretching(EFalse); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDTextBoxQueryDialog.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDTextBoxQueryDialog.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDTextBoxQueryDialog.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -934,7 +934,9 @@ TInt illegalCharPos = -1; TPtr16 ptr = res->Des(); TInt minusPos = ptr.LocateReverse(TChar('-')); - iStrict = EFalse; + TInt pointPosL = ptr.Locate(iDecimalSeparator); + TInt pointPosR = ptr.LocateReverse(iDecimalSeparator); + TInt cursorPos = GetCaretPosition(); // check if minus sign is inserted on incorrect place // (not at the beginning) @@ -951,14 +953,38 @@ ptr.Delete(minusPos, 1); ptr.Insert(0, KMinusChar); minusPos = 0; + iStrict = EFalse; + + // Decimal separator was inserted twice and minus + // was next character in text. Minus was just set as first + // character - so in fact we have two decimal separators + // after minus character - this is not allowed, + // delete extra character + if (pointPosL != pointPosR && pointPosL == 0 && + minusPos == pointPosL) + { + // Delete both decimal separator characters + // and place new decimal separator in correct position + ptr.Delete(pointPosR, 1); + ptr.Delete((pointPosL + 1), 1); + ptr.Insert(1, KFullStopChar); + } SetTextL(*res); textChanged = ETrue; + + // Set correct cusros possition + if (pointPosL == 0 && minusPos == pointPosL) + { + SetCursorPositionL(pointPosL + 1); + } } } - TInt pointPosL = ptr.Locate(iDecimalSeparator); - TInt pointPosR = ptr.LocateReverse(iDecimalSeparator); - TInt cursorPos = GetCaretPosition(); + // Locate decimal separator again + pointPosL = ptr.Locate(iDecimalSeparator); + pointPosR = ptr.LocateReverse(iDecimalSeparator); + cursorPos = GetCaretPosition(); + if ((minusPos != KErrNotFound) && (pointPosL == 0)) { illegalCharPos = pointPosL; @@ -974,11 +1000,12 @@ // deleting second minus or dot/comma char // and set cursor position on the right place ptr.Delete(illegalCharPos, 1); + iStrict = EFalse; SetTextL(*res); textChanged = ETrue; if (cursorPos >= 1) { - if (cursorPos == illegalCharPos) + if (cursorPos == (illegalCharPos + 1)) { cursorPos--; } @@ -996,7 +1023,17 @@ // are not supported, chars need to be changed to space // SetText function before actual text change checks if line // breaks are not supported - SetTextL(*res); + TPtr16 text = res->Des(); + TInt tmpPos; + + if ((text.Locate(TChar('\n'))) >=0 || + (text.Locate(TChar('\f'))) >=0) + { + tmpPos = GetCaretPosition(); + SetTextL(*res); + SetCursorPositionL(tmpPos); + } + textChanged = ETrue; } CleanupStack::Pop(res); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDTextEditor.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDTextEditor.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDTextEditor.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -29,6 +29,7 @@ #include "CMIDEdwinUtils.h" #include "CMIDUtils.h" #include "CMIDFont.h" +#include "CMIDDisplayable.h" // Default background color. const TInt KDefColorBgRed = 0; @@ -302,7 +303,11 @@ iTextEdwin->SetContainerWindowL(control); iTextEdwin->SetTopParent(&control); // Initialize the editor window. - iTextEdwin->InitializeL(); + CMIDDisplayable* displayable = NULL; +#ifdef RD_JAVA_S60_RELEASE_9_2 + displayable = aComponentContainer->GetDisplayable(); +#endif // RD_JAVA_S60_RELEASE_9_2 + iTextEdwin->InitializeL(displayable); // Set container window also for the indicator. iEditingStateIndicator->SetContainerWindowL(&control); @@ -607,6 +612,10 @@ // Remove focus if the text editor is focused. iFocusState = EFalse; +#ifdef RD_JAVA_S60_RELEASE_9_2 + iTextEdwin->FocusLost(); +#endif // RD_JAVA_S60_RELEASE_9_2 + // Call SetFocus on edwin iTextEdwin->SetFocus(EFalse); @@ -1649,8 +1658,13 @@ { DEBUG("CMIDTextEditor::Dispose +"); +#ifdef RD_JAVA_S60_RELEASE_9_2 + if (iFocusState) + { + iTextEdwin->CloseVKB(); + } +#endif // RD_JAVA_S60_RELEASE_9_2 delete this; - DEBUG("CMIDTextEditor::Dispose -"); } @@ -1950,6 +1964,11 @@ // Update the indicator. if (iTextEdwin->IsVisible() && iTextEdwin->IsFocused()) { + if (iComponentContainer && + iComponentContainer->IsFullScreen()) + { + iEditingStateIndicator->MakeVisible(ETrue); + } iEditingStateIndicator->Redraw(); } else @@ -2028,8 +2047,8 @@ if (aParams.iHeightInRows) { // Height is specified using rows. - iTextEdwin->ConstructL( - flags, aParams.iWidth, aParams.iMaxSize, aParams.iHeight); + iTextEdwin->ConstructL(flags, aParams.iWidth, + aParams.iMaxSize, aParams.iHeight); iRowCountActive = ETrue; iRowCount = aParams.iHeight; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDTextEditorEdwin.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDTextEditorEdwin.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDTextEditorEdwin.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -21,6 +21,7 @@ #include "CMIDEdwinUtils.h" #include "CMIDTextEditorEdwinCustomDraw.h" #include "CMIDEditingStateIndicator.h" +#include "CMIDDisplayable.h" // EXTERNAL INCLUDES #include // MMIDTextEditorObserver @@ -29,6 +30,10 @@ #include #include +#ifdef RD_JAVA_S60_RELEASE_9_2 +#include +#endif // RD_JAVA_S60_RELEASE_9_2 + const TInt KColorOpaque = 255; const TInt KCharMinus = 0x2d; @@ -37,13 +42,18 @@ // --------------------------------------------------------------------------- // CMIDTextEditorEdwin::CMIDTextEditorEdwin(CMIDEdwinUtils& aEdwinUtils) - : CEikEdwin(), - iMultiline(EFalse), - iCursorPosForAction(KErrNotFound), - iEdwinUtils(aEdwinUtils) + : CEikEdwin(), + iMultiline(EFalse), + iCursorPosForAction(KErrNotFound), + iEdwinUtils(aEdwinUtils) { DEBUG("CMIDTextEditorEdwin::CMIDTextEditorEdwin +"); +#ifdef RD_JAVA_S60_RELEASE_9_2 + iPartialVKBOpen = EFalse; + iDisplayable = NULL; + iJavaAppUi = NULL; +#endif // RD_JAVA_S60_RELEASE_9_2 // Set margins to zero TMargins8 margins; margins.SetAllValuesTo(0); @@ -172,7 +182,6 @@ // Restore cursor's original position. SetCursorPosL(iCursorPosForAction, EFalse); } - CleanupStack::PopAndDestroy(oldContent); } @@ -205,12 +214,13 @@ // TBool CMIDTextEditorEdwin::Traverse(const TKeyEvent& aEvent) { - TInt cursorPos = CursorPos(); + TInt cursorPos = 0; TBool traverse = EFalse; if ((aEvent.iCode == EKeyDownArrow) || (aEvent.iScanCode == EStdKeyDownArrow)) { + cursorPos = CursorPos(); if (TextLength() == cursorPos) { traverse = ETrue; @@ -220,6 +230,7 @@ else if ((aEvent.iCode == EKeyUpArrow) || (aEvent.iScanCode == EStdKeyUpArrow)) { + cursorPos = CursorPos(); if (cursorPos == 0) { traverse = ETrue; @@ -554,6 +565,116 @@ iObserver->NotifyInputAction(event); } } +#ifdef RD_JAVA_S60_RELEASE_9_2 + if ((aType == KAknSplitInputEnabled)) + { + // Partial screen keyboard is opened + CEikStatusPane* pane = GetStatusPane(); + if (!iPartialVKBOpen || pane->IsVisible()) + { + // Hide status pane and resize displayable + iDisplayable->HandleSplitScreenKeyboard(ETrue); + // Preventing from notification when pane is visible, but VKB is + // already opened + if (iObserver && !iPartialVKBOpen) + { + iObserver->NotifyInputAction( + MMIDTextEditorObserver::EActionPartialInputEnabled); + } + iPartialVKBOpen = ETrue; + } + } + else if ((aType == KAknSplitInputDisabled) && (iPartialVKBOpen)) + { + HandlePartialVKBDisable(); + } +#endif // RD_JAVA_S60_RELEASE_9_2 +} + +#ifdef RD_JAVA_S60_RELEASE_9_2 +// --------------------------------------------------------------------------- +// CMIDTextEditorEdwin::FocusLost +// (other items were commented in the header file) +// --------------------------------------------------------------------------- +// +void CMIDTextEditorEdwin::FocusLost() +{ + if (iPartialVKBOpen) + { + DEBUG("Focus LOST - disable VKB"); + CloseVKB(); + } +} + +// --------------------------------------------------------------------------- +// CMIDTextEditorEdwin::FocusLost +// (other items were commented in the header file) +// --------------------------------------------------------------------------- +// +void CMIDTextEditorEdwin::CloseVKB() +{ + CCoeFep* fep = iCoeEnv->Fep(); + if (fep) + { + fep->HandleDestructionOfFocusedItem(); + } +} + +// --------------------------------------------------------------------------- +// CMIDTextEditorEdwin::DisablePartialVKB +// (other items were commented in the header file) +// --------------------------------------------------------------------------- +// +void CMIDTextEditorEdwin::HandlePartialVKBDisable() +{ + // Partial screen keyboard is closed + iPartialVKBOpen = EFalse; + // Show status pane if not in fullscreen and resize displayable + iDisplayable->HandleSplitScreenKeyboard(EFalse); + if (iObserver) + { + iObserver->NotifyInputAction( + MMIDTextEditorObserver::EActionPartialInputDisabled); + } +} + +// --------------------------------------------------------------------------- +// CMIDTextEditorEdwin::GetStatusPane +// (other items were commented in the header file) +// --------------------------------------------------------------------------- +// +CEikStatusPane* CMIDTextEditorEdwin::GetStatusPane() +{ + if (!iJavaAppUi) + { + iJavaAppUi = java::ui::CoreUiAvkonLcdui:: + getInstance().getJavaAknAppUi(); + } + CEikStatusPane* pane = iJavaAppUi->StatusPane(); + return pane; +} +#endif // RD_JAVA_S60_RELEASE_9_2 + +// --------------------------------------------------------------------------- +// CMIDTextEditorEdwin::GetStatusPane +// (other items were commented in the header file) +// --------------------------------------------------------------------------- +// +TInt CMIDTextEditorEdwin::ScrollBarEvent() +{ + TInt event = 0; + TInt newVisiblecontentHeight = VisibleContentPosition(); + + // Check if cursor has moved. This must be done because + // currently edwin does not report cursor position movement + // when text is changed due to user input. + if (iVisibleContentHeight != newVisiblecontentHeight) + { + event |= MMIDTextEditorObserver::EActionScrollbarChange; + // Reported, reset here to avoid multiple notifications. + iVisibleContentHeight = newVisiblecontentHeight; + } + return event; } // --------------------------------------------------------------------------- @@ -587,18 +708,7 @@ case EEventNavigation: { TInt event = MMIDTextEditorObserver::EActionCaretMove; - TInt newVisiblecontentHeight = VisibleContentPosition(); - - // Check if cursor has moved. This must be done because - // currently edwin does not report cursor position movement - // when text is changed due to user input. - if (iVisibleContentHeight != newVisiblecontentHeight) - { - event |= MMIDTextEditorObserver::EActionScrollbarChange; - // Reported, reset here to avoid multiple notifications. - iVisibleContentHeight = newVisiblecontentHeight; - } - + event |= ScrollBarEvent(); iObserver->NotifyInputAction(event); break; } @@ -617,7 +727,7 @@ // Reported, reset here to avoid multiple notifications. iCursorPosForAction = KErrNotFound; } - + event |= ScrollBarEvent(); iObserver->NotifyInputAction(event); break; } @@ -673,8 +783,7 @@ if (TextLength() >= MaxLength() || IsReadOnly()) { DEBUG("CMIDTextEditorEdwin::HandleSpecialKeyEventsL -, \ -max size reached"); - +max size reached or is read only"); return response; } @@ -962,7 +1071,11 @@ SetAknEditorCase(EAknEditorTextCase); SetAknEditorPermittedCaseModes(EAknEditorAllCaseModes); +#ifdef RD_JAVA_S60_RELEASE_9_2 + SetAknEditorFlags(EAknEditorFlagEnablePartialScreen); +#else SetAknEditorFlags(EAknEditorFlagDefault); +#endif // RD_JAVA_S60_RELEASE_9_2 SetAknEditorSpecialCharacterTable(KErrNotFound); SetAknEditorInputMode(EAknEditorTextInputMode); SetAknEditorAllowedInputModes(EAknEditorAllInputModes); @@ -1202,12 +1315,19 @@ // (other items were commented in the header file) // --------------------------------------------------------------------------- // -void CMIDTextEditorEdwin::InitializeL() +void CMIDTextEditorEdwin::InitializeL(CMIDDisplayable* aDisplayable) { DEBUG("CMIDTextEditorEdwin::InitializeL +"); if (!iInitialized) { + +#ifdef RD_JAVA_S60_RELEASE_9_2 + iDisplayable = aDisplayable; +#else + (void)aDisplayable; // Just to remove a compiler warning +#endif // RD_JAVA_S60_RELEASE_9_2 + CreateTextViewL(); ActivateL(); @@ -1251,6 +1371,9 @@ if (iInitialized) { +#ifdef RD_JAVA_S60_RELEASE_9_2 + iDisplayable = NULL; +#endif // RD_JAVA_S60_RELEASE_9_2 // Remove focus and hide the editor. SetFocus(EFalse); MakeVisible(EFalse); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/lcdui_akn/lcdui/src/CMIDTextFieldItem.cpp --- a/javauis/lcdui_akn/lcdui/src/CMIDTextFieldItem.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/lcdui_akn/lcdui/src/CMIDTextFieldItem.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -342,7 +342,7 @@ iTextField->SetFocus(EFalse); } - CMIDControlItem::FocusChanged(aDrawNow); + CMIDControlItem::FocusChanged(aDrawNow); // DoLayout and change text color when focused SizeChanged(); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/m2g_akn/build/javam2g_0x2002DCBD.mmp --- a/javauis/m2g_akn/build/javam2g_0x2002DCBD.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/m2g_akn/build/javam2g_0x2002DCBD.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -156,3 +156,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javam2g.def +#elif defined EABI +DEFFILE ./eabi/javam2g.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/m3g_akn/build/javam3g_0x2002DCBE.mmp --- a/javauis/m3g_akn/build/javam3g_0x2002DCBE.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/m3g_akn/build/javam3g_0x2002DCBE.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -148,3 +148,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javam3g.def +#elif defined EABI +DEFFILE ./eabi/javam3g.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/animated_gif/inc/cmmaanimationplayer.h --- a/javauis/mmapi_akn/animated_gif/inc/cmmaanimationplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/animated_gif/inc/cmmaanimationplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -77,7 +77,7 @@ MMMAEventPoster* aEventPoster); void RealizeL(); void PrefetchL(); - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void DeallocateL(); void GetDuration(TInt64* aDuration); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/animated_gif/src/cmmaanimationplayer.cpp --- a/javauis/mmapi_akn/animated_gif/src/cmmaanimationplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/animated_gif/src/cmmaanimationplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -171,7 +171,7 @@ DEBUG("MMA::CMMAAnimationPlayer::PrefetchL -"); } -void CMMAAnimationPlayer::StartL() +void CMMAAnimationPlayer::StartL(TBool aPostEvent) { DEBUG("MMA::CMMAAnimationPlayer::StartL +"); @@ -183,7 +183,10 @@ iViewer->SetAnimationFrame(0); iMediaTime = 0; } - PostLongEvent(CMMAPlayerEvent::EStarted, iMediaTime); + if (aPostEvent) + { + PostLongEvent(CMMAPlayerEvent::EStarted, iMediaTime); + } // process current frame ProcessCurrentFrameL(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/audiostreaming/inc.emc/cmmaaudiostreamplayer.h --- a/javauis/mmapi_akn/audiostreaming/inc.emc/cmmaaudiostreamplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/audiostreaming/inc.emc/cmmaaudiostreamplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -65,7 +65,7 @@ public: // from CMMAPlayer void DeallocateL(); - void StartL(); + void StartL(TBool aPostEvent); void PrefetchL(); CMMASourceStream* AddSourceStreamL(JNIEnv* aJNIEnv, CMMAEventSource* aEventSource, diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h --- a/javauis/mmapi_akn/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -76,7 +76,7 @@ TInt Pause(); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void PrefetchL(); CMMASourceStream* AddSourceStreamL(JNIEnv* aJNIEnv, CMMAEventSource* aEventSource, diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/audiostreaming/src.emc/cmmaaudiostreamplayer.cpp --- a/javauis/mmapi_akn/audiostreaming/src.emc/cmmaaudiostreamplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/audiostreaming/src.emc/cmmaaudiostreamplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -116,7 +116,7 @@ DEBUG("CMMAAudioStreamPlayer::PrefetchL -"); } -void CMMAAudioStreamPlayer::StartL() +void CMMAAudioStreamPlayer::StartL(TBool aPostEvent) { DEBUG("MMA::CMMAAudioStreamPlayer::StartL +"); if (iStreamHandler->LastBufferWritten() && @@ -126,8 +126,12 @@ GetMediaTime(&time); TInt err = iMStreamControl->Start(); if (err == KErrNone && iState != EStarted) - { // move to started state and post started event - PostLongEvent(CMMAPlayerEvent::EStarted, time); + { + // move to started state and post started event + if (aPostEvent) + { + PostLongEvent(CMMAPlayerEvent::EStarted, time); + } ChangeState(EStarted); } else @@ -204,7 +208,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp --- a/javauis/mmapi_akn/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -144,18 +144,20 @@ iStreamHandler->PrepareL(); } -void CMMAAudioStreamPlayer::StartL() +void CMMAAudioStreamPlayer::StartL(TBool aPostEvent) { // If the player is in Prefetched state then it is implied that it has read "KMMAStreamRequestBufferSize" // and it can be played if (iState == EPrefetched) { - TInt64 time; - GetMediaTime(&time); - - // inform java side - PostLongEvent(CMMAPlayerEvent::EStarted, time); + if (aPostEvent) + { + TInt64 time; + GetMediaTime(&time); + // inform java side + PostLongEvent(CMMAPlayerEvent::EStarted, time); + } // go to started state ChangeState(EStarted); @@ -213,7 +215,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/audiostreaming/src/cmmaaudiostreamratecontrol.cpp --- a/javauis/mmapi_akn/audiostreaming/src/cmmaaudiostreamratecontrol.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/audiostreaming/src/cmmaaudiostreamratecontrol.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -98,7 +98,7 @@ else { // do not post event to Java or change player state - iPlayer->StartL(); + iPlayer->StartL(ETrue); } } iCurrentRate = newRate; diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc.emc/cmmaemcplayerbase.h --- a/javauis/mmapi_akn/baseline/inc.emc/cmmaemcplayerbase.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc.emc/cmmaemcplayerbase.h Mon Jun 21 15:32:50 2010 +0300 @@ -85,7 +85,7 @@ TBool IsFilePlayer(); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void DeallocateL(); void GetDuration(TInt64* aDuration); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc.nga/cmmasurfacewindow.h --- a/javauis/mmapi_akn/baseline/inc.nga/cmmasurfacewindow.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc.nga/cmmasurfacewindow.h Mon Jun 21 15:32:50 2010 +0300 @@ -131,16 +131,18 @@ }; public: // Constructors and destructors - static CMMASurfaceWindow* NewL( + IMPORT_C static CMMASurfaceWindow* NewL( CMMAEventSource* aEventSource, - CMMAPlayer* aPlayer); + CMMAPlayer* aPlayer, + TBool aAVCableConnStatus); virtual ~CMMASurfaceWindow(); private: // Constructors and destructors CMMASurfaceWindow( CMMAEventSource* aEventSource, - CMMAPlayer* aPlayer); + CMMAPlayer* aPlayer, + TBool aAVCableConnStatus); public: // Methods derived from MMMADisplayWindow void SetDestinationBitmapL(CFbsBitmap* aBitmap); @@ -166,7 +168,7 @@ public: // New methods TBool IsVisible() const; - void SetDisplay(MMMADisplay *aDisplay); + IMPORT_C void SetDisplay(MMMADisplay *aDisplay); /** * copies surface paramaters and intializes video display if @@ -175,14 +177,14 @@ * * @params aSurfaceId, aCropRect, aPixelAspectRatio surface paramaters. */ - void SetSurfaceParameters(const TSurfaceId& aSurfaceId, + IMPORT_C void SetSurfaceParameters(const TSurfaceId& aSurfaceId, const TRect& aCropRect, const TVideoAspectRatio& aPixelAspectRatio); /** * invokes DoRemoveSurface() in UI thread context. */ - void RemoveSurface(); + IMPORT_C void RemoveSurface(); /** * updates members variables with new surface parameters and invokes @@ -190,10 +192,18 @@ * * @params aSurfaceId, aCropRect, aPixelAspectRatio surface paramaters. */ - void SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId, + IMPORT_C void SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId, const TRect& aCropRect, const TVideoAspectRatio& aPixelAspectRatio); + /** + * updates iAVCableConnected flag as and when the audio/video cable is + * connected or disconnected + * + * @param aStatus true indicates cable connected else false + */ + void SetAVCableConnStatus(TBool aStatus); + private: // New methods /** * starts video rendering to a graphics surface. @@ -263,8 +273,8 @@ TRect iContentRect; /** - * parent rectangle used for positioning contentRect. - */ + * parent rectangle used for positioning contentRect. + */ TRect iParentRect; /** @@ -296,9 +306,9 @@ CMediaClientVideoDisplay* iMediaClientVideoDisplay; /** - * Display instance used to invoke UI callbacks. - * Not owned. - */ + * Display instance used to invoke UI callbacks. + * Not owned. + */ MMMADisplay* iDisplay; /** @@ -329,13 +339,13 @@ TSurfaceId iSurfaceId; /** - * The dimensions of the crop rectangle, relative to the video image. - */ + * The dimensions of the crop rectangle, relative to the video image. + */ TRect iCropRect; /** - * The pixel aspect ratio to display video picture. - */ + * The pixel aspect ratio to display video picture. + */ TVideoAspectRatio iPixelAspectRatio; /** @@ -349,6 +359,10 @@ */ TBool iVisible; + /** + * Audio/Video device cable connection status + */ + TBool iAVCableConnected; }; #endif // CMMASURFACEWINDOW_H diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc.nga/cmmavideoplayer.h --- a/javauis/mmapi_akn/baseline/inc.nga/cmmavideoplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc.nga/cmmavideoplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -19,19 +19,23 @@ #define CMMAVIDEOPLAYER_H // INCLUDES +#include +#include #include "cmmaaudioplayer.h" #include "mmmaguiplayer.h" #include "mmmasnapshot.h" #include "cmmasurfacewindow.h" -#include // FORWARD DECLARATIONS class CMMAEventSource; +class CAccMonitorInfo; // CONSTANTS // Error code from MMF meaning that video is missing sound, // but still can be played. const TInt KNotCompleteVideoError = -12017; +// Error blitting video to display +const TInt KMMVideoBlitError = -12015; _LIT(KMMAVideoPlayer, "VideoPlayer"); // CLASS DECLARATION @@ -41,7 +45,8 @@ */ NONSHARABLE_CLASS(CMMAVideoPlayer): public CMMAAudioPlayer, public MMMAGuiPlayer, - public MMMASnapshot + public MMMASnapshot, + public MAccMonitorObserver { public: // Construction static CMMAVideoPlayer* NewLC( @@ -83,6 +88,11 @@ IMPORT_C CFbsBitmap* SnapshotBitmap(); IMPORT_C HBufC8* SnapshotEncoded(); +public: // from MAccMonitorObserver + void ConnectedL(CAccMonitorInfo* aAccessoryInfo ); + void DisconnectedL(CAccMonitorInfo* aAccessoryInfo); + void AccMonitorObserverError( TInt aError ); + protected: // New methods void CompletePrefetch(TInt aError); void PrepareDisplay(); @@ -118,6 +128,13 @@ // owned CActiveSchedulerWait* iActiveSchedulerWait; + + /** + * owned + * used for listening to audio/video cable connection status. + */ + CAccMonitor *iAccMonitor; + RAccMonCapabilityArray iAccMonCapabilityArray; }; #endif // CMMAVIDEOPLAYER_H diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmaaudiorecorder.h --- a/javauis/mmapi_akn/baseline/inc/cmmaaudiorecorder.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmaaudiorecorder.h Mon Jun 21 15:32:50 2010 +0300 @@ -55,7 +55,7 @@ void DoOpenL(); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent = ETrue); void PrefetchL(); void GetDuration(TInt64* aDuration); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmacameraplayer.h --- a/javauis/mmapi_akn/baseline/inc/cmmacameraplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmacameraplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -69,7 +69,7 @@ TInt& aLargestIndex); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void DeallocateL(); void RealizeL(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmamidiplayer.h --- a/javauis/mmapi_akn/baseline/inc/cmmamidiplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmamidiplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -61,7 +61,7 @@ void addObserverL(MMidiClientUtilityObserver* aObserver); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void RealizeL(); void PrefetchL(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmammfplayerbase.h --- a/javauis/mmapi_akn/baseline/inc/cmmammfplayerbase.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmammfplayerbase.h Mon Jun 21 15:32:50 2010 +0300 @@ -52,7 +52,7 @@ TBool IsFilePlayer(); public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void DeallocateL(); IMPORT_C void GetDuration(TInt64* aDuration); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmaplayer.h --- a/javauis/mmapi_akn/baseline/inc/cmmaplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmaplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -72,12 +72,12 @@ /** * Deletes all owned members. */ - virtual ~CMMAPlayer(); + IMPORT_C virtual ~CMMAPlayer(); protected: /** * Initializes member variables to defaults. */ - CMMAPlayer(); + IMPORT_C CMMAPlayer(); /** * Second phase construct. @@ -155,7 +155,7 @@ * Start playing. Started event will be posted. If there is no error * player will be in EStarted state. */ - virtual void StartL() = 0; + virtual void StartL(TBool aPostEvent) = 0; /** * Stops playing. After this player may be restarted with StartL method. @@ -181,7 +181,7 @@ * * @param aDuration Duration or KTimeUnknown if not specified. */ - virtual void GetDuration(TInt64* aDuration); + IMPORT_C virtual void GetDuration(TInt64* aDuration); /** * Sets media time. @@ -225,7 +225,7 @@ * @param aJni Used to get method ids. * @param aPoster Used to post events. */ - virtual void SetPlayerListenerObjectL(jobject aListenerObject, + IMPORT_C virtual void SetPlayerListenerObjectL(jobject aListenerObject, JNIEnv* aJni, MMMAEventPoster* aPoster); @@ -346,7 +346,7 @@ * * @param aState New state. */ - void ChangeState(TPlayerState aState); + IMPORT_C void ChangeState(TPlayerState aState); public: // from MMMASourceStreamListener virtual void ReadCompletedL(TInt aStatus, const TDesC8& aData); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmavideourlplayer.h --- a/javauis/mmapi_akn/baseline/inc/cmmavideourlplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmavideourlplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -56,7 +56,7 @@ /** * Handles StartL call for url player. */ - virtual void StartL() = 0; + virtual void StartL(TBool aPostEvent) = 0; /** * Handles StopL call for url player. @@ -95,7 +95,7 @@ virtual ~CMMAVideoUrlPlayerClipStreamDelegate(); public: // from CMMAVideoUrlPlayerDelegate - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void GetMediaTime(TInt64* aMediaTime); void HandleEvent(const TMMFEvent& aEvent); @@ -118,7 +118,7 @@ void ConstructL(); public: // from CMMAVideoUrlPlayerDelegate - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void GetMediaTime(TInt64* aMediaTime); void HandleEvent(const TMMFEvent& aEvent); @@ -157,7 +157,7 @@ public: // from CMMAPlayer IMPORT_C void RealizeL(); IMPORT_C void PrefetchL(); - IMPORT_C void StartL(); + IMPORT_C void StartL(TBool aPostEvent); IMPORT_C void StopL(TBool aPostEvent); IMPORT_C void GetMediaTime(TInt64* aMediaTime); IMPORT_C void DeallocateL(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/inc/cmmavolumecontrol.h --- a/javauis/mmapi_akn/baseline/inc/cmmavolumecontrol.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/inc/cmmavolumecontrol.h Mon Jun 21 15:32:50 2010 +0300 @@ -22,13 +22,14 @@ // INCLUDES #include "cmmacontrol.h" #include "mmmaplayerstatelistener.h" +#include // CONSTANS _LIT(KMMAVolumeControlName, "VolumeControl"); const TInt KMMAVolumeMaxLevel = 100; class CMMAPlayer; - +class CProfileChangeNotifyHandler; // CLASS DECLARATION /** * This class is used for volume setting @@ -37,7 +38,8 @@ */ class CMMAVolumeControl : public CMMAControl, - public MMMAPlayerStateListener + public MMMAPlayerStateListener, + public MProfileChangeObserver { public: static void StaticSetLevelL(CMMAVolumeControl* aVolumeControl, @@ -74,6 +76,8 @@ public: // From MMMAPlayerStateListener void StateChanged(TInt aState); +public: // from MProfileChangeObserver + void HandleActiveProfileEventL(TProfileEvent aProfileEvent, TInt aProfileId ); public: // New methods /** @@ -95,8 +99,12 @@ TInt aVolumeLevel); void GetVolumeLevelL(TInt aLevelIndex, TInt* aVolumeLevel); - - + void SetProfilesBasedSoundMutingL(); + /** + * Sets the audio o/p preference. Based on this the profile based + * volume setting is done. + */ + IMPORT_C void SetAudioOutputPreferenceL( TInt aRoutingPreference); private: // New methods @@ -117,6 +125,10 @@ * @return Current level. */ TInt CalculateLevel(); + + void SetJavaSoundVolumeLevelL(); + + void SetProfileSoundVolumeLevelL(); protected: // data CMMAPlayer* iPlayer; @@ -125,7 +137,13 @@ // Array containing all levels. RArray< TInt > iLevels; - + // profile change notifier + // Owning + CProfileChangeNotifyHandler* iProfChangeNotifier; + // Current audio o/p preference. + TInt iAudioOutputPreference; + // Current profile Id. + TInt iProfileId; }; #endif // CMMAVOLUMECONTROL_H diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java --- a/javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java Mon Jun 21 15:32:50 2010 +0300 @@ -410,8 +410,9 @@ // Check the permission here, so 'the moment' is not lost? Security.ensurePermission(PERMISSION, PERMISSION, PERM_ARGS); - - return iImageData; + byte[] tempimage=iImageData; + iImageData=null; + return tempimage; } /** diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VolumeControl.java --- a/javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VolumeControl.java Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VolumeControl.java Mon Jun 21 15:32:50 2010 +0300 @@ -18,12 +18,20 @@ package com.nokia.microedition.media.control; +import com.nokia.mj.impl.rt.support.ApplicationInfo; +import com.nokia.mj.impl.utils.Tokenizer; +import javax.microedition.media.Player; + public class VolumeControl extends ControlImpl implements javax.microedition.media.control.VolumeControl { private static final int MAX_VOLUME = 100; private static final int UNDEFINED_VOLUME = -1; - + private static final String SEPARATOR = ","; + private static final String ATTRIB_NOKIA_UI_ENHANCEMENT = + "Nokia-UI-Enhancement"; + private static final String IGNORE_PROFILES_BASED_SOUNDING = + "IgnoreProfilesBasedSoundMuting"; // these constants come from native side protected static final int NO_ERROR = 0; // native side returns if OK @@ -41,6 +49,44 @@ return iMuted; } + /** + * Set handles + * @param aPlayer Player instance + * @param aEventSource Handle to event source + * @param aControlHandle Handle Handle to control + */ + public void setHandles(Player aPlayer, + int aEventSource, + int aControlHandle) + { + super.setHandles(aPlayer, aEventSource, aControlHandle); + boolean ignoreProfileBasedSoundMuting = false; + String attrib = ApplicationInfo.getInstance().getAttribute( + ATTRIB_NOKIA_UI_ENHANCEMENT); + String[] parsedAttributes = Tokenizer.split( attrib, SEPARATOR); + if (parsedAttributes != null) + { + for (int i = 0; i < parsedAttributes.length; i++) + { + if (IGNORE_PROFILES_BASED_SOUNDING.equalsIgnoreCase( + parsedAttributes[i])) + { + ignoreProfileBasedSoundMuting = true; + break; + } + } + } + if (!ignoreProfileBasedSoundMuting) + { + int err =_setProfilesBasedSoundMuting(aEventSource, aControlHandle); + if (err < NO_ERROR) + { + throw new Error("Setting profile based sound " + + "muting failed" + err); + } + } + } + public int getLevel() { checkState(); @@ -117,4 +163,7 @@ private static native int _setLevel(int aEventSource, int aControlHandle, int aLevel); private static native int _getLevel(int aEventSource, int aControlHandle); + + private static native int _setProfilesBasedSoundMuting(int aEventSource, + int aControlHandle); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src.emc/cmmaemcaudioplayer.cpp --- a/javauis/mmapi_akn/baseline/src.emc/cmmaemcaudioplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src.emc/cmmaemcaudioplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -83,7 +83,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src.emc/cmmaemcplayerbase.cpp --- a/javauis/mmapi_akn/baseline/src.emc/cmmaemcplayerbase.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src.emc/cmmaemcplayerbase.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -215,7 +215,7 @@ return EFalse; } -void CMMAEMCPlayerBase::StartL() +void CMMAEMCPlayerBase::StartL(TBool /*aPostEvent*/) { // empty implementation // should be overwritten in derived class diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src.nga/cmmasurfacewindow.cpp --- a/javauis/mmapi_akn/baseline/src.nga/cmmasurfacewindow.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src.nga/cmmasurfacewindow.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -17,6 +17,8 @@ */ // Include Files +#include +#include #include "jdebug.h" #include "cmmasurfacewindow.h" #include "cmmaplayer.h" @@ -24,13 +26,15 @@ // Used for iDisplay member #include "mmmadisplay.h" -CMMASurfaceWindow* CMMASurfaceWindow::NewL( +EXPORT_C CMMASurfaceWindow* CMMASurfaceWindow::NewL( CMMAEventSource* aEventSource, - CMMAPlayer* aPlayer) + CMMAPlayer* aPlayer, + TBool aAVCableConnStatus) { CMMASurfaceWindow* self = new(ELeave) CMMASurfaceWindow(aEventSource, - aPlayer); + aPlayer, + aAVCableConnStatus); return self; } @@ -46,10 +50,12 @@ CMMASurfaceWindow::CMMASurfaceWindow( CMMAEventSource* aEventSource, - CMMAPlayer* aPlayer): + CMMAPlayer* aPlayer, + TBool aAVCableConnStatus): iEventSource(aEventSource), iPlayer(aPlayer), - iVideoDisplayInitState(EUIResourcesAndSurfaceParametersNotSet) + iVideoDisplayInitState(EUIResourcesAndSurfaceParametersNotSet), + iAVCableConnected(aAVCableConnStatus) { // Empty rect until video size is known iContentRect.SetRect(0, 0, 0, 0); @@ -120,8 +126,10 @@ DEBUG("MID::CMMASurfaceWindow::SetClipRect"); // CMediaClientVideoDisplay expects client to RemoveDisplayWindow - // and AddDisplayWindow again everytime when RWindow rect changes - if (iMediaClientVideoDisplay && iWindow) + // and AddDisplayWindow again everytime when RWindow rect changes. + // If audio/video cable is connected do not reposition the video, + // this is done to prevent video playback pause. + if (iMediaClientVideoDisplay && iWindow && !iAVCableConnected) { iMediaClientVideoDisplay->RemoveDisplayWindow(*iWindow); @@ -309,7 +317,7 @@ CleanVideoDisplay(); } -void CMMASurfaceWindow::SetDisplay(MMMADisplay *aDisplay) +EXPORT_C void CMMASurfaceWindow::SetDisplay(MMMADisplay *aDisplay) { DEBUG("MID::CMMASurfaceWindow::SetDisplay +"); @@ -461,7 +469,7 @@ } } -void CMMASurfaceWindow::SetSurfaceParameters(const TSurfaceId& aSurfaceId, +EXPORT_C void CMMASurfaceWindow::SetSurfaceParameters(const TSurfaceId& aSurfaceId, const TRect& aCropRect, const TVideoAspectRatio& aPixelAspectRatio) { @@ -510,7 +518,7 @@ } } -void CMMASurfaceWindow::SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId, +EXPORT_C void CMMASurfaceWindow::SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId, const TRect& aCropRect, const TVideoAspectRatio& aPixelAspectRatio) { @@ -524,7 +532,7 @@ } } -void CMMASurfaceWindow::RemoveSurface() +EXPORT_C void CMMASurfaceWindow::RemoveSurface() { if (iDisplay) { @@ -659,4 +667,14 @@ DEBUG("MID::CMMASurfaceWindow::CleanVideoDisplay -"); } +void CMMASurfaceWindow::SetAVCableConnStatus(TBool aStatus) +{ + iAVCableConnected = aStatus; + if (iDisplay && !iAVCableConnected) + { + iDisplay->UIGetCallback(*this, + CMMASurfaceWindow::ESetClipRect); + } +} + // END OF FILE diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src.nga/cmmavideoplayer.cpp --- a/javauis/mmapi_akn/baseline/src.nga/cmmavideoplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src.nga/cmmavideoplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -25,7 +25,9 @@ #include "cmmasurfacewindow.h" // CONSTANTS +const TInt KErrorMessageSize = 32; _LIT(KVideoControlName, "VideoControl"); +_LIT(KAccMonError, "Accessory monitor Error: %d"); CMMAVideoPlayer* CMMAVideoPlayer::NewLC( CMMAMMFResolver* aResolver) @@ -70,6 +72,8 @@ } } + iAccMonCapabilityArray.Close(); + delete iAccMonitor; delete iEmptySnapshotImage; delete iActiveSchedulerWait; } @@ -86,8 +90,19 @@ void CMMAVideoPlayer::ConstructL() { + DEBUG("MMA::CMMAVideoPlayer::ConstructL +"); CMMAAudioPlayer::ConstructL(); iActiveSchedulerWait = new(ELeave)CActiveSchedulerWait; + iAccMonitor = CAccMonitor::NewL(); + iAccMonCapabilityArray.Append(KAccMonAVDevice); + iAccMonitor->StartObservingL(this, iAccMonCapabilityArray); + DEBUG("MMA::CMMAVideoPlayer::ConstructL -"); +} + +// static cleanup function +static void PointerArrayCleanup(TAny* aArray) +{ + static_cast*>(aArray)->ResetAndDestroy(); } EXPORT_C void CMMAVideoPlayer::SetPlayerListenerObjectL(jobject aListenerObject, @@ -101,12 +116,29 @@ // this method must be called only ones __ASSERT_DEBUG(!iSurfaceWindow, User::Invariant()); + // get audio/video cable connected status + TBool avCableConnStatus(EFalse); + RConnectedAccessories connectedAccessories; + TCleanupItem arrayCleanup(PointerArrayCleanup, + &connectedAccessories); + CleanupStack::PushL(arrayCleanup); + TInt accCount = + iAccMonitor->GetConnectedAccessoriesL(connectedAccessories); + for (TInt i = 0; i < accCount; i++) + { + if (KAccMonAVDevice == connectedAccessories[i]->AccDeviceType()) + { + avCableConnStatus = ETrue; + break; + } + } + CleanupStack::PopAndDestroy(); + // create window for videoplayer // event poster is always CMMAEventSource type. - iSurfaceWindow = CMMASurfaceWindow::NewL( static_cast< CMMAEventSource* >(iEventPoster), - this); + this, avCableConnStatus); } EXPORT_C void CMMAVideoPlayer::SetDisplayL(MMMADisplay* aDisplay) @@ -212,6 +244,18 @@ iSurfaceWindow->RemoveSurface(); } + // Start player again and ignore error + if ((aEvent.iEventType == KMMFEventCategoryVideoPlayerGeneralError) && + (aEvent.iErrorCode == KMMVideoBlitError)) + { + TRAPD(error, StartL(EFalse)); + if (KErrNone != error) + { + DEBUG_INT("MMA:CMMAVideoPlayer::HandleEvent, StartL() error %d", error); + } + return; + } + // KNotCompleteVideoError can be notified when video is not complete // ( missing sound ) but still can be played. Because // CMMAAudioPlayer::HandleEvent fails with all negative error codes, @@ -519,4 +563,32 @@ NotifyWithStringEvent(CMMAPlayerEvent::ESizeChanged, KVideoControlName); } +void CMMAVideoPlayer::ConnectedL(CAccMonitorInfo* aAccessoryInfo) +{ + TAccMonCapability deviceType = aAccessoryInfo->AccDeviceType() ; + DEBUG_INT("MID::CMMAVideoPlayer::ConnectedL %d", deviceType); + if (iSurfaceWindow && (deviceType == KAccMonAVDevice)) + { + iSurfaceWindow->SetAVCableConnStatus(ETrue); + } +} + +void CMMAVideoPlayer::DisconnectedL(CAccMonitorInfo* aAccessoryInfo) +{ + TAccMonCapability deviceType = aAccessoryInfo->AccDeviceType() ; + DEBUG_INT("MID::CMMAVideoPlayer::DisconnectedL %d", deviceType); + if (iSurfaceWindow && (deviceType == KAccMonAVDevice)) + { + iSurfaceWindow->SetAVCableConnStatus(EFalse); + } +} + +void CMMAVideoPlayer::AccMonitorObserverError(TInt aError) +{ + DEBUG_INT("MMA::CMMAVideoPlayer::AccMonitorObserverError %d", aError); + TBuf errorMessage; + errorMessage.Format(KAccMonError, aError); + PostStringEvent(CMMAPlayerEvent::EError, errorMessage); +} + // END OF FILE diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmaaudioplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmaaudioplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmaaudioplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -168,7 +168,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmaaudiorecorder.cpp --- a/javauis/mmapi_akn/baseline/src/cmmaaudiorecorder.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmaaudiorecorder.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -68,12 +68,15 @@ /** * start the play */ -void CMMAAudioRecorder::StartL() +void CMMAAudioRecorder::StartL(TBool aPostEvent) { - TInt64 time; - GetMediaTime(&time); + if (aPostEvent) + { + TInt64 time; + GetMediaTime(&time); + PostLongEvent(CMMAPlayerEvent::EStarted, time); + } - PostLongEvent(CMMAPlayerEvent::EStarted, time); ChangeState(EStarted); PostActionCompleted(KErrNone); // java start return } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmacameraplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmacameraplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmacameraplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -238,7 +238,7 @@ aLargestIndex = largestSizeIndex; } -void CMMACameraPlayer::StartL() +void CMMACameraPlayer::StartL(TBool aPostEvent) { DEBUG_INT("CMMACameraPlayer:StartL iState %d", iState); @@ -261,8 +261,11 @@ // about the status change iWindow->SetStarted(ETrue); - // inform java side - PostLongEvent(CMMAPlayerEvent::EStarted, time); + if (aPostEvent) + { + // inform java side + PostLongEvent(CMMAPlayerEvent::EStarted, time); + } } PostActionCompleted(KErrNone); // java start return } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmamidiplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmamidiplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmamidiplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -145,7 +145,7 @@ DEBUG("MMA: CMMAMidiPlayer: DeallocateL -"); } -void CMMAMIDIPlayer::StartL() +void CMMAMIDIPlayer::StartL(TBool aPostEvent) { iMediaTime = KTimeUnknown; @@ -158,8 +158,11 @@ iMidi->Play(); } - // inform java side - PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime); + if (aPostEvent) + { + // inform java side + PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime); + } ChangeState(EStarted); // To achieve similar functionality as reference implementation, @@ -335,7 +338,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmammfplayerbase.cpp --- a/javauis/mmapi_akn/baseline/src/cmmammfplayerbase.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmammfplayerbase.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -137,12 +137,15 @@ return EFalse; } -void CMMAMMFPlayerBase::StartL() +void CMMAMMFPlayerBase::StartL(TBool aPostEvent) { iMediaTime = KTimeUnknown; User::LeaveIfError(iController.Play()); - // inform java side - PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime); + if (aPostEvent) + { + // inform java side + PostLongEvent(CMMAPlayerEvent::EStarted, iStartedEventTime); + } ChangeState(EStarted); PostActionCompleted(KErrNone); // java start return } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmaplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmaplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmaplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -31,7 +31,7 @@ _LIT(KPanicMethod, "method not found"); #endif -CMMAPlayer::~CMMAPlayer() +EXPORT_C CMMAPlayer::~CMMAPlayer() { DEBUG("CMMAPlayer::~CMMAPlayer()"); @@ -46,7 +46,7 @@ } -CMMAPlayer::CMMAPlayer(): +EXPORT_C CMMAPlayer::CMMAPlayer(): iRepeatNumberOfTimes(0), iRepeatForever(EFalse), iRepeatCount(0), @@ -154,7 +154,7 @@ } -void CMMAPlayer::GetDuration(TInt64* aDuration) +EXPORT_C void CMMAPlayer::GetDuration(TInt64* aDuration) { DEBUG("MMA::CMMAPlayer::GetDuration "); *aDuration = iDuration; @@ -188,7 +188,7 @@ return iContentType; } -void CMMAPlayer::SetPlayerListenerObjectL(jobject aListenerObject, +EXPORT_C void CMMAPlayer::SetPlayerListenerObjectL(jobject aListenerObject, JNIEnv* aJni, MMMAEventPoster* aEventPoster) { @@ -429,7 +429,7 @@ } -void CMMAPlayer::ChangeState(TPlayerState aState) +EXPORT_C void CMMAPlayer::ChangeState(TPlayerState aState) { iState = aState; DEBUG_INT("MMA::CMMAPlayer::ChangeState - iStateListeners count is %d", iStateListeners.Count()); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp --- a/javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -40,6 +40,7 @@ // event server hasn't sent this event before // middlet is destroyed delete iImageBuffer; + } void CMMASnapshotEvent::Dispatch(JNIEnv& aJni) @@ -48,6 +49,7 @@ // create java byte array jbyteArray byteArray; + if (iImageBuffer) { byteArray = aJni.NewByteArray(iImageBuffer->Size()); @@ -69,7 +71,6 @@ { delete iImageBuffer; iImageBuffer = NULL; // otherwise double delete in destructor - DEBUG("MMA::CMMASnapshotEvent::Dispatch - Failed to create ByteArray"); return; } @@ -81,7 +82,10 @@ byteArray); delete iImageBuffer; + iImageBuffer = NULL; // otherwise double delete in destructor + aJni.DeleteLocalRef(byteArray); + } // END OF FILE diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmavideourlplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmavideourlplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmavideourlplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -78,11 +78,11 @@ CMMAAudioPlayer::CloseL(); } -EXPORT_C void CMMAVideoUrlPlayer::StartL() +EXPORT_C void CMMAVideoUrlPlayer::StartL(TBool aPostEvent) { __ASSERT_DEBUG(iPlayerDelegate != NULL, User::Invariant()); DEBUG("CMMAVideoUrlPlayer::StartL() +"); - iPlayerDelegate->StartL(); + iPlayerDelegate->StartL(aPostEvent); DEBUG("CMMAVideoUrlPlayer::StartL() -"); } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmavideourlplayerclipstreamdelegate.cpp --- a/javauis/mmapi_akn/baseline/src/cmmavideourlplayerclipstreamdelegate.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmavideourlplayerclipstreamdelegate.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -33,9 +33,9 @@ // Nothing to be done. } -void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerClipStreamDelegate::StartL() +void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerClipStreamDelegate::StartL(TBool aPostEvent) { - iPlayer.CMMAMMFPlayerBase::StartL(); + iPlayer.CMMAMMFPlayerBase::StartL(aPostEvent); } void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerClipStreamDelegate::StopL(TBool aPostEvent) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmavideourlplayerlivestreamdelegate.cpp --- a/javauis/mmapi_akn/baseline/src/cmmavideourlplayerlivestreamdelegate.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmavideourlplayerlivestreamdelegate.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -49,7 +49,7 @@ delete iActiveSchedulerWait; } -void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::StartL() +void CMMAVideoUrlPlayer::CMMAVideoUrlPlayerLiveStreamDelegate::StartL(TBool /*aPostEvent*/) { // start can't be called to not ready player ASSERT(iPlayer.iState == EPrefetched); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/cmmavolumecontrol.cpp --- a/javauis/mmapi_akn/baseline/src/cmmavolumecontrol.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmavolumecontrol.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -17,15 +17,19 @@ // INCLUDE FILES - +#include "cmmaplayer.h" #include "cmmavolumecontrol.h" -#include "cmmaplayer.h" #include +#include +#include +#include _LIT(KMMAVolumeErrorMsg, "Can't set volume level"); const TInt KMMAJavaSoundIndex = 0; +const TInt KMMAProfileSoundIndex = 1; const TInt KMMAGlobalVolumeSoundIndex = 2; +const TInt KAudioEarpiece = 3; void CMMAVolumeControl::StaticSetLevelL(CMMAVolumeControl* aVolumeControl, TInt aLevel) @@ -50,6 +54,7 @@ CMMAVolumeControl::~CMMAVolumeControl() { + delete iProfChangeNotifier; iLevels.Close(); } @@ -58,11 +63,12 @@ { iPlayer->AddStateListenerL(this); - // Add level for java, will set in StaticSetLevelL method. - // In constructor iLevels array is empty and Java level will be the first, - // KMMAJavaSoundIndex. - AddLevelL(); + // Add level for javasound, will set in StaticSetLevelL method. + SetJavaSoundVolumeLevelL(); + SetProfileSoundVolumeLevelL(); + + // Sets level to 0 if profile isn't on iLevel = CalculateLevel(); // The default value is not yet known. Volume control may change the @@ -72,6 +78,85 @@ iLevels[ KMMAJavaSoundIndex ] = KErrNotFound; } +void CMMAVolumeControl::SetJavaSoundVolumeLevelL() +{ + // In constructor iLevels array is empty and Java level will be the first, + // KMMAJavaSoundIndex. + AddLevelL(); +} + +void CMMAVolumeControl::SetProfileSoundVolumeLevelL() +{ + // Add level for profile, level's index will be 1, KMMAProfileSoundIndex + AddLevelL(); +} + +void CMMAVolumeControl::SetProfilesBasedSoundMutingL() +{ + //Get the current active profile id. + MProfileEngine* lProfileEngine = CreateProfileEngineL(); + iProfileId =lProfileEngine->ActiveProfileId(); + lProfileEngine->Release(); + + // if profile is silent or meeting and no headset or bluetooth device + // connected,set profile volume level to 0, otherwise keep the original + // value 100 + if ( (EProfileSilentId == iProfileId || EProfileMeetingId == iProfileId)&& + iAudioOutputPreference != KAudioEarpiece ) + { + iLevels[ KMMAProfileSoundIndex ] = 0; + } + + // Gets notfication about profile changes + // Notification is sent to MProfileChangeObserver::HandleActiveProfileEventL() + iProfChangeNotifier = CProfileChangeNotifyHandler::NewL( this ); + // Sets level to 0 if profile isn't on + iLevel = CalculateLevel(); + +} +void CMMAVolumeControl::HandleActiveProfileEventL(TProfileEvent aProfileEvent, + TInt aProfileId) +{ + switch (aProfileEvent) + { + case EProfileNewActiveProfile: + { + // New profile is activated + // Update the volume level, if profile is changed to silent or meeting + // then mute it, if no headset or bluetooth device is connected + // else set it to max volume level + TInt level = 0; + iProfileId = aProfileId; + + if ( EProfileSilentId != aProfileId && + EProfileMeetingId != aProfileId) + { + + level = KMMAVolumeMaxLevel; + } + else if (iAudioOutputPreference == KAudioEarpiece) + { + level = KMMAVolumeMaxLevel; + } + else + { + level = 0; + } + TRAPD( error, SetVolumeLevelL( KMMAProfileSoundIndex, level ) ); + if ( error != KErrNone ) + { + iPlayer->PostStringEvent( CMMAPlayerEvent::EError, + KMMAVolumeErrorMsg ); + } + break; + } + default: // do nothing + break; + } +} + + + const TDesC& CMMAVolumeControl::ClassName() const { return KMMAVolumeControlName; @@ -171,7 +256,7 @@ { DEBUG_INT2("CMMAVolumeControl::SetVolumeLevelL - setting index %d, level %d", aLevelIndex, aVolumeLevel); - if (0 >= iLevels.Count() || iLevels.Count() > 3) + if (0 >= iLevels.Count() || iLevels.Count() > 4) { return ; } @@ -216,6 +301,23 @@ DEBUG_INT("CMMAVolumeControl::GetVolumeLevelL - level %d", *aVolumeLevel); } +EXPORT_C void CMMAVolumeControl::SetAudioOutputPreferenceL( + TInt aRoutingPreference) +{ + iAudioOutputPreference = aRoutingPreference; + // If audio o/p preference is set to private then set the profile sound + // to max value else if profile is in silent or meeting set the profile + // sound to 0 + if ( iAudioOutputPreference == KAudioEarpiece) + { + SetVolumeLevelL(KMMAProfileSoundIndex, KMMAVolumeMaxLevel); + } + else if (EProfileSilentId == iProfileId || EProfileMeetingId == iProfileId) + { + SetVolumeLevelL(KMMAProfileSoundIndex, 0); + } +} + TInt CMMAVolumeControl::CalculateLevel() { TInt levelCount = iLevels.Count(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/player.cpp --- a/javauis/mmapi_akn/baseline/src/player.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/player.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -155,10 +155,11 @@ - TInt err = eventSource->ExecuteTrap(&VVoidFuncL, + TInt err = eventSource->ExecuteTrap(&BoolFuncL, aPlayer, eventSource, - &CMMAPlayer::StartL); + &CMMAPlayer::StartL, + (TBool)ETrue); // complete java side request in case of leave. if (err != KErrNone) { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/baseline/src/volumecontrol.cpp --- a/javauis/mmapi_akn/baseline/src/volumecontrol.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/volumecontrol.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -69,4 +69,33 @@ return error; } +/** + * Local function which can be used to call CMMAVolumeControl class methods. + * + * @param aControl CMMAVolumeControl pointer. + */ +LOCAL_C void SetProfileBasedMutingL(CMMAVolumeControl* aControl) +{ + aControl->SetProfilesBasedSoundMutingL(); +} + +/* + * Class: com_nokia_microedition_media_control_VolumeControl + * Method: _setProfilesBasedSoundMuting + * Signature: (I)V + */ + +JNIEXPORT int JNICALL Java_com_nokia_microedition_media_control_VolumeControl__1setProfilesBasedSoundMuting +(JNIEnv *, jclass , jint aEventSource, jint aVolumeControl) +{ + CMMAEventSource* eventSource = + JavaUnhand< CMMAEventSource >(aEventSource); + + CMMAVolumeControl* volumeControl = + JavaUnhand< CMMAVolumeControl >(aVolumeControl); + + TInt error = eventSource->ExecuteTrap(&SetProfileBasedMutingL,volumeControl); + return error; +} + // END OF FILE diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/build.xml --- a/javauis/mmapi_akn/build/build.xml Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/build.xml Mon Jun 21 15:32:50 2010 +0300 @@ -202,7 +202,14 @@ + com/nokia/microedition/media/control/MMAGUIFactory.class, + com/nokia/microedition/media/Locator.class, + com/nokia/microedition/media/InternalPlayer.class, + com/nokia/microedition/media/protocol/NativeBase.class, + com/nokia/microedition/media/protocol/Protocol.class, + com/nokia/microedition/media/ManagerImpl.class, + com/nokia/microedition/media/PlayerBase.class, + com/nokia/microedition/media/PlayerImpl.class"/> diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/bwins/javamobilemedia_5_0u.def --- a/javauis/mmapi_akn/build/bwins/javamobilemedia_5_0u.def Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/bwins/javamobilemedia_5_0u.def Mon Jun 21 15:32:50 2010 +0300 @@ -1,63 +1,69 @@ EXPORTS ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *) - ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 2 NONAME ; int CMMAVolumeControl::AddLevelL(void) - ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 3 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *) - ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 4 NONAME ; class CMMAControl * CMMAPlayer::Control(int) - ?ControlCount@CMMAPlayer@@QAEHXZ @ 5 NONAME ; int CMMAPlayer::ControlCount(void) - ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 6 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void) - ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 7 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const - ?Players@CMMAEventSource@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 8 NONAME ; class RPointerArray & CMMAEventSource::Players(void) - ?PostStringEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 9 NONAME ; void CMMAPlayer::PostStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) - ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 10 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const - ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 11 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *) - ?SetPlayerInstanceObserver@CMMAEventSource@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 12 NONAME ; void CMMAEventSource::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *) - ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 13 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int) - ?StaticAddObjectFromHandleL@CMMAEventSource@@SAXPAV1@H@Z @ 14 NONAME ; void CMMAEventSource::StaticAddObjectFromHandleL(class CMMAEventSource *, int) - ?StaticControl@CMMAPlayer@@SAPAVCMMAControl@@PAV1@H@Z @ 15 NONAME ; class CMMAControl * CMMAPlayer::StaticControl(class CMMAPlayer *, int) - ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 16 NONAME ; void CMMAPlayer::PostActionCompleted(int) - ?PostObjectEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@PAV_jobject@@@Z @ 17 NONAME ; void CMMAPlayer::PostObjectEvent(enum CMMAPlayerEvent::TEventType, class _jobject *) - ??0CMMAMMFPlayerFactory@@QAE@XZ @ 18 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void) - ??0CMMAVideoControl@@QAE@PAVMMMAGuiPlayer@@@Z @ 19 NONAME ; CMMAVideoControl::CMMAVideoControl(class MMMAGuiPlayer *) - ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 20 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *) - ??1CMMAMMFPlayerFactory@@UAE@XZ @ 21 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void) - ??1CMMAVideoControl@@UAE@XZ @ 22 NONAME ; CMMAVideoControl::~CMMAVideoControl(void) - ??1CMMAVideoUrlPlayer@@UAE@XZ @ 23 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void) - ?AddControlL@CMMAPlayer@@UAEXPAVCMMAControl@@@Z @ 24 NONAME ; void CMMAPlayer::AddControlL(class CMMAControl *) - ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 25 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *) - ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVCMMAEventSource@@PAV_jobject@@@Z @ 26 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class CMMAEventSource *, class _jobject *) - ?ClassName@CMMAVideoControl@@UBEABVTDesC16@@XZ @ 27 NONAME ; class TDesC16 const & CMMAVideoControl::ClassName(void) const - ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 28 NONAME ; void CMMAVideoUrlPlayer::CloseL(void) - ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 29 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &) - ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 30 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *) - ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 31 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void) - ?DoOpen@CMMAMMFPlayerBase@@MAEHVTUid@@ABVTDesC8@@01VTMMFPrioritySettings@@@Z @ 32 NONAME ; int CMMAMMFPlayerBase::DoOpen(class TUid, class TDesC8 const &, class TUid, class TDesC8 const &, class TMMFPrioritySettings) - ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 33 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int) - ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 34 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *) - ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 35 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *) - ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 36 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &) - ?HandleForegroundL@CMMAVideoControl@@UAEXH@Z @ 37 NONAME ; void CMMAVideoControl::HandleForegroundL(int) - ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 38 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void) - ?HandleResourceChangeL@CMMAVideoControl@@UAEXH@Z @ 39 NONAME ; void CMMAVideoControl::HandleResourceChangeL(int) - ?HandleSwitchOnL@CMMAVideoControl@@UAEXH@Z @ 40 NONAME ; void CMMAVideoControl::HandleSwitchOnL(int) - ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 41 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *) - ?NotifyWithStringEvent@CMMAVideoPlayer@@UAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 42 NONAME ; void CMMAVideoPlayer::NotifyWithStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) - ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 43 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int) - ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 44 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &) - ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 45 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void) - ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 46 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void) - ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 47 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *) - ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 48 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &) - ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 49 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void) - ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 50 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *) - ?SetLoopCount@CMMAPlayer@@UAEXH@Z @ 51 NONAME ; void CMMAPlayer::SetLoopCount(int) - ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 52 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) - ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 53 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void) - ?SnapshotEncoded@CMMAVideoPlayer@@UAEPAVHBufC8@@XZ @ 54 NONAME ; class HBufC8 * CMMAVideoPlayer::SnapshotEncoded(void) - ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 55 NONAME ; void CMMAVideoControl::SnapshotReady(void) - ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 56 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void) - ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 57 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void) - ?StartL@CMMAVideoUrlPlayer@@UAEXXZ @ 58 NONAME ; void CMMAVideoUrlPlayer::StartL(void) - ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 59 NONAME ; void CMMAVideoUrlPlayer::StopL(int) - ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 60 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &) - ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 61 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void) + ??0CMMAMMFPlayerFactory@@QAE@XZ @ 2 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void) + ??0CMMAPlayer@@IAE@XZ @ 3 NONAME ; CMMAPlayer::CMMAPlayer(void) + ??0CMMAVideoControl@@QAE@PAVMMMAGuiPlayer@@@Z @ 4 NONAME ; CMMAVideoControl::CMMAVideoControl(class MMMAGuiPlayer *) + ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 5 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *) + ??1CMMAMMFPlayerFactory@@UAE@XZ @ 6 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void) + ??1CMMAPlayer@@UAE@XZ @ 7 NONAME ; CMMAPlayer::~CMMAPlayer(void) + ??1CMMAVideoControl@@UAE@XZ @ 8 NONAME ; CMMAVideoControl::~CMMAVideoControl(void) + ??1CMMAVideoUrlPlayer@@UAE@XZ @ 9 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void) + ?AddControlL@CMMAPlayer@@UAEXPAVCMMAControl@@@Z @ 10 NONAME ; void CMMAPlayer::AddControlL(class CMMAControl *) + ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 11 NONAME ; int CMMAVolumeControl::AddLevelL(void) + ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 12 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *) + ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVCMMAEventSource@@PAV_jobject@@@Z @ 13 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class CMMAEventSource *, class _jobject *) + ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 14 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *) + ?ChangeState@CMMAPlayer@@IAEXW4TPlayerState@1@@Z @ 15 NONAME ; void CMMAPlayer::ChangeState(enum CMMAPlayer::TPlayerState) + ?ClassName@CMMAVideoControl@@UBEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & CMMAVideoControl::ClassName(void) const + ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 17 NONAME ; void CMMAVideoUrlPlayer::CloseL(void) + ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 18 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &) + ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 19 NONAME ; class CMMAControl * CMMAPlayer::Control(int) + ?ControlCount@CMMAPlayer@@QAEHXZ @ 20 NONAME ; int CMMAPlayer::ControlCount(void) + ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 21 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void) + ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 22 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *) + ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 23 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void) + ?DoOpen@CMMAMMFPlayerBase@@MAEHVTUid@@ABVTDesC8@@01VTMMFPrioritySettings@@@Z @ 24 NONAME ; int CMMAMMFPlayerBase::DoOpen(class TUid, class TDesC8 const &, class TUid, class TDesC8 const &, class TMMFPrioritySettings) + ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 25 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int) + ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 26 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *) + ?GetDuration@CMMAPlayer@@UAEXPA_J@Z @ 27 NONAME ; void CMMAPlayer::GetDuration(long long *) + ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 28 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *) + ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 29 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &) + ?HandleForegroundL@CMMAVideoControl@@UAEXH@Z @ 30 NONAME ; void CMMAVideoControl::HandleForegroundL(int) + ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 31 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void) + ?HandleResourceChangeL@CMMAVideoControl@@UAEXH@Z @ 32 NONAME ; void CMMAVideoControl::HandleResourceChangeL(int) + ?HandleSwitchOnL@CMMAVideoControl@@UAEXH@Z @ 33 NONAME ; void CMMAVideoControl::HandleSwitchOnL(int) + ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 34 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const + ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 35 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *) + ?NotifyWithStringEvent@CMMAVideoPlayer@@UAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 36 NONAME ; void CMMAVideoPlayer::NotifyWithStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) + ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 37 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int) + ?Players@CMMAEventSource@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 38 NONAME ; class RPointerArray & CMMAEventSource::Players(void) + ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 39 NONAME ; void CMMAPlayer::PostActionCompleted(int) + ?PostObjectEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@PAV_jobject@@@Z @ 40 NONAME ; void CMMAPlayer::PostObjectEvent(enum CMMAPlayerEvent::TEventType, class _jobject *) + ?PostStringEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 41 NONAME ; void CMMAPlayer::PostStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) + ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 42 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &) + ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 43 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void) + ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 44 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void) + ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 45 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *) + ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const + ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 47 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &) + ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 48 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void) + ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 49 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *) + ?SetAudioOutputPreferenceL@CMMAVolumeControl@@QAEXH@Z @ 50 NONAME ; void CMMAVolumeControl::SetAudioOutputPreferenceL(int) + ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 51 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *) + ?SetLoopCount@CMMAPlayer@@UAEXH@Z @ 52 NONAME ; void CMMAPlayer::SetLoopCount(int) + ?SetPlayerInstanceObserver@CMMAEventSource@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 53 NONAME ; void CMMAEventSource::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *) + ?SetPlayerListenerObjectL@CMMAPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 54 NONAME ; void CMMAPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) + ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 55 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) + ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 56 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int) + ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 57 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void) + ?SnapshotEncoded@CMMAVideoPlayer@@UAEPAVHBufC8@@XZ @ 58 NONAME ; class HBufC8 * CMMAVideoPlayer::SnapshotEncoded(void) + ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 59 NONAME ; void CMMAVideoControl::SnapshotReady(void) + ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 60 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void) + ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 61 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void) + ?StartL@CMMAVideoUrlPlayer@@UAEXH@Z @ 62 NONAME ; void CMMAVideoUrlPlayer::StartL(int) + ?StaticAddObjectFromHandleL@CMMAEventSource@@SAXPAV1@H@Z @ 63 NONAME ; void CMMAEventSource::StaticAddObjectFromHandleL(class CMMAEventSource *, int) + ?StaticControl@CMMAPlayer@@SAPAVCMMAControl@@PAV1@H@Z @ 64 NONAME ; class CMMAControl * CMMAPlayer::StaticControl(class CMMAPlayer *, int) + ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 65 NONAME ; void CMMAVideoUrlPlayer::StopL(int) + ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 66 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &) + ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 67 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/bwins/javamobilemediau.def --- a/javauis/mmapi_akn/build/bwins/javamobilemediau.def Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/bwins/javamobilemediau.def Mon Jun 21 15:32:50 2010 +0300 @@ -1,79 +1,90 @@ EXPORTS ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *) - ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 2 NONAME ; int CMMAVolumeControl::AddLevelL(void) - ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 3 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *) - ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 4 NONAME ; class CMMAControl * CMMAPlayer::Control(int) - ?ControlCount@CMMAPlayer@@QAEHXZ @ 5 NONAME ; int CMMAPlayer::ControlCount(void) - ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 6 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void) - ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 7 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const - ?Players@CMMAEventSource@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 8 NONAME ; class RPointerArray & CMMAEventSource::Players(void) - ?PostStringEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 9 NONAME ; void CMMAPlayer::PostStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) - ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 10 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const - ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 11 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *) - ?SetPlayerInstanceObserver@CMMAEventSource@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 12 NONAME ; void CMMAEventSource::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *) - ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 13 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int) - ?StaticAddObjectFromHandleL@CMMAEventSource@@SAXPAV1@H@Z @ 14 NONAME ; void CMMAEventSource::StaticAddObjectFromHandleL(class CMMAEventSource *, int) - ?StaticControl@CMMAPlayer@@SAPAVCMMAControl@@PAV1@H@Z @ 15 NONAME ; class CMMAControl * CMMAPlayer::StaticControl(class CMMAPlayer *, int) - ?StreamControl@CMMAEMCPlayerBase@@QAEPAVMStreamControl@multimedia@@XZ @ 16 NONAME - ?MMFactory@CMMAEMCPlayerBase@@QAEPAVCMultimediaFactory@multimedia@@XZ @ 17 NONAME - ?DoSetLevelL@CMMAEMCAudioVolumeControl@@UAEXH@Z @ 18 NONAME ; void CMMAEMCAudioVolumeControl::DoSetLevelL(int) - ??0CMMAEMCAudioPlayer@@IAE@PAVCMMAEMCResolver@@@Z @ 19 NONAME ; CMMAEMCAudioPlayer::CMMAEMCAudioPlayer(class CMMAEMCResolver *) - ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 20 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *) - ?PrefetchFileL@CMMAEMCAudioPlayer@@MAEXXZ @ 21 NONAME ; void CMMAEMCAudioPlayer::PrefetchFileL(void) - ??1CMMAEMCAudioPlayer@@UAE@XZ @ 22 NONAME ; CMMAEMCAudioPlayer::~CMMAEMCAudioPlayer(void) - ?DoGetLevelL@CMMAEMCAudioVolumeControl@@UAEHXZ @ 23 NONAME ; int CMMAEMCAudioVolumeControl::DoGetLevelL(void) - ?Type@CMMAEMCAudioPlayer@@UAEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CMMAEMCAudioPlayer::Type(void) - ?ReadCompletedL@CMMAEMCAudioPlayer@@UAEXHABVTDesC8@@@Z @ 25 NONAME ; void CMMAEMCAudioPlayer::ReadCompletedL(int, class TDesC8 const &) - ??0CMMAEMCAudioVolumeControl@@IAE@AAVCMMAEMCAudioPlayer@@@Z @ 26 NONAME ; CMMAEMCAudioVolumeControl::CMMAEMCAudioVolumeControl(class CMMAEMCAudioPlayer &) - ?NewL@CMMAEMCAudioVolumeControl@@SAPAV1@AAVCMMAEMCAudioPlayer@@@Z @ 27 NONAME ; class CMMAEMCAudioVolumeControl * CMMAEMCAudioVolumeControl::NewL(class CMMAEMCAudioPlayer &) - ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 28 NONAME ; void CMMAPlayer::PostActionCompleted(int) - ?RealizeL@CMMAEMCAudioPlayer@@UAEXXZ @ 29 NONAME ; void CMMAEMCAudioPlayer::RealizeL(void) - ?ConstructL@CMMAEMCAudioPlayer@@IAEXXZ @ 30 NONAME ; void CMMAEMCAudioPlayer::ConstructL(void) - ?PrefetchL@CMMAEMCAudioPlayer@@UAEXXZ @ 31 NONAME ; void CMMAEMCAudioPlayer::PrefetchL(void) - ?PlayCompleteL@CMMAEMCAudioPlayer@@MAEXH@Z @ 32 NONAME ; void CMMAEMCAudioPlayer::PlayCompleteL(int) - ?PrefetchDataL@CMMAEMCAudioPlayer@@MAEXABVTDesC8@@@Z @ 33 NONAME ; void CMMAEMCAudioPlayer::PrefetchDataL(class TDesC8 const &) - ?PostObjectEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@PAV_jobject@@@Z @ 34 NONAME ; void CMMAPlayer::PostObjectEvent(enum CMMAPlayerEvent::TEventType, class _jobject *) - ?SetLoopCount@CMMAPlayer@@UAEXH@Z @ 35 NONAME ; void CMMAPlayer::SetLoopCount(int) - ?AddControlL@CMMAPlayer@@UAEXPAVCMMAControl@@@Z @ 36 NONAME ; void CMMAPlayer::AddControlL(class CMMAControl *) - ?NotifyWithStringEvent@CMMAVideoPlayer@@UAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 37 NONAME ; void CMMAVideoPlayer::NotifyWithStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) - ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVCMMAEventSource@@PAV_jobject@@@Z @ 38 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class CMMAEventSource *, class _jobject *) - ?SnapshotEncoded@CMMAVideoPlayer@@UAEPAVHBufC8@@XZ @ 39 NONAME ; class HBufC8 * CMMAVideoPlayer::SnapshotEncoded(void) - ?DoOpen@CMMAMMFPlayerBase@@MAEHVTUid@@ABVTDesC8@@01VTMMFPrioritySettings@@@Z @ 40 NONAME ; int CMMAMMFPlayerBase::DoOpen(class TUid, class TDesC8 const &, class TUid, class TDesC8 const &, class TMMFPrioritySettings) - ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void) - ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 42 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &) - ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 43 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *) - ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 44 NONAME ; void CMMAVideoUrlPlayer::CloseL(void) - ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 45 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void) - ?HandleResourceChangeL@CMMAVideoControl@@UAEXH@Z @ 46 NONAME ; void CMMAVideoControl::HandleResourceChangeL(int) - ?StartL@CMMAVideoUrlPlayer@@UAEXXZ @ 47 NONAME ; void CMMAVideoUrlPlayer::StartL(void) - ?HandleForegroundL@CMMAVideoControl@@UAEXH@Z @ 48 NONAME ; void CMMAVideoControl::HandleForegroundL(int) - ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 49 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &) - ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 50 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &) - ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 51 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *) - ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 52 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &) - ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 53 NONAME ; void CMMAVideoControl::SnapshotReady(void) - ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 54 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *) - ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 55 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *) - ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 56 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void) - ??1CMMAVideoUrlPlayer@@UAE@XZ @ 57 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void) - ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 58 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int) - ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 59 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *) - ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 60 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void) - ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 61 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) - ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 62 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int) - ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 63 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void) - ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 64 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void) - ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 65 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *) + ?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) + ?AddControlL@CMMAPlayer@@UAEXPAVCMMAControl@@@Z @ 5 NONAME ; void CMMAPlayer::AddControlL(class CMMAControl *) + ?StaticAddObjectFromHandleL@CMMAEventSource@@SAXPAV1@H@Z @ 6 NONAME ; void CMMAEventSource::StaticAddObjectFromHandleL(class CMMAEventSource *, int) + ?SetPlayerListenerObjectL@CMMAPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 7 NONAME ; void CMMAPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) + ?NotifyWithStringEvent@CMMAVideoPlayer@@UAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 8 NONAME ; void CMMAVideoPlayer::NotifyWithStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) + ?AddSourceStreamL@CMMAPlayer@@MAEPAVCMMASourceStream@@PAUJNIEnv_@@PAVCMMAEventSource@@PAV_jobject@@@Z @ 9 NONAME ; class CMMASourceStream * CMMAPlayer::AddSourceStreamL(struct JNIEnv_ *, class CMMAEventSource *, class _jobject *) + ?PostStringEvent@CMMAPlayer@@QAEXW4TEventType@CMMAPlayerEvent@@ABVTDesC16@@@Z @ 10 NONAME ; void CMMAPlayer::PostStringEvent(enum CMMAPlayerEvent::TEventType, class TDesC16 const &) + ?SetPlayerInstanceObserver@CMMAEventSource@@QAEXPAVMMMAPlayerInstanceObserver@@@Z @ 11 NONAME ; void CMMAEventSource::SetPlayerInstanceObserver(class MMMAPlayerInstanceObserver *) + ?SnapshotEncoded@CMMAVideoPlayer@@UAEPAVHBufC8@@XZ @ 12 NONAME ; class HBufC8 * CMMAVideoPlayer::SnapshotEncoded(void) + ?DoOpen@CMMAMMFPlayerBase@@MAEHVTUid@@ABVTDesC8@@01VTMMFPrioritySettings@@@Z @ 13 NONAME ; int CMMAMMFPlayerBase::DoOpen(class TUid, class TDesC8 const &, class TUid, class TDesC8 const &, class TMMFPrioritySettings) + ?StaticControl@CMMAPlayer@@SAPAVCMMAControl@@PAV1@H@Z @ 14 NONAME ; class CMMAControl * CMMAPlayer::StaticControl(class CMMAPlayer *, int) + ?ChangeState@CMMAPlayer@@IAEXW4TPlayerState@1@@Z @ 15 NONAME ; void CMMAPlayer::ChangeState(enum CMMAPlayer::TPlayerState) + ?Type@CMMAVideoPlayer@@MAEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & CMMAVideoPlayer::Type(void) + ??0CMMAEMCAudioVolumeControl@@IAE@AAVCMMAEMCAudioPlayer@@@Z @ 17 NONAME ; CMMAEMCAudioVolumeControl::CMMAEMCAudioVolumeControl(class CMMAEMCAudioPlayer &) + ??0CMMAPlayer@@IAE@XZ @ 18 NONAME ; CMMAPlayer::CMMAPlayer(void) + ?SetChangedSurfaceParameters@CMMASurfaceWindow@@QAEXABVTSurfaceId@@ABVTRect@@ABVTVideoAspectRatio@@@Z @ 19 NONAME ; void CMMASurfaceWindow::SetChangedSurfaceParameters(class TSurfaceId const &, class TRect const &, class TVideoAspectRatio const &) + ?PublicClassName@CMMAControl@@UBEABVTDesC16@@XZ @ 20 NONAME ; class TDesC16 const & CMMAControl::PublicClassName(void) const + ?Controller@CMMAMMFPlayerBase@@QAEAAVRMMFController@@XZ @ 21 NONAME ; class RMMFController & CMMAMMFPlayerBase::Controller(void) + ?PrefetchDataL@CMMAAudioPlayer@@MAEXABVTDesC8@@@Z @ 22 NONAME ; void CMMAAudioPlayer::PrefetchDataL(class TDesC8 const &) + ?CloseL@CMMAVideoUrlPlayer@@UAEXXZ @ 23 NONAME ; void CMMAVideoUrlPlayer::CloseL(void) + ??0CMMAVideoUrlPlayer@@IAE@PAVCMMAMMFResolver@@@Z @ 24 NONAME ; CMMAVideoUrlPlayer::CMMAVideoUrlPlayer(class CMMAMMFResolver *) + ?SnapshotBitmap@CMMAVideoPlayer@@UAEPAVCFbsBitmap@@XZ @ 25 NONAME ; class CFbsBitmap * CMMAVideoPlayer::SnapshotBitmap(void) + ?HandleResourceChangeL@CMMAVideoControl@@UAEXH@Z @ 26 NONAME ; void CMMAVideoControl::HandleResourceChangeL(int) + ?SetDisplay@CMMASurfaceWindow@@QAEXPAVMMMADisplay@@@Z @ 27 NONAME ; void CMMASurfaceWindow::SetDisplay(class MMMADisplay *) + ?SetAudioOutputPreferenceL@CMMAVolumeControl@@QAEXH@Z @ 28 NONAME ; void CMMAVolumeControl::SetAudioOutputPreferenceL(int) + ?ReadCompletedL@CMMAEMCAudioPlayer@@UAEXHABVTDesC8@@@Z @ 29 NONAME ; void CMMAEMCAudioPlayer::ReadCompletedL(int, class TDesC8 const &) + ?NewL@CMMAEMCAudioVolumeControl@@SAPAV1@AAVCMMAEMCAudioPlayer@@@Z @ 30 NONAME ; class CMMAEMCAudioVolumeControl * CMMAEMCAudioVolumeControl::NewL(class CMMAEMCAudioPlayer &) + ?HandleForegroundL@CMMAVideoControl@@UAEXH@Z @ 31 NONAME ; void CMMAVideoControl::HandleForegroundL(int) + ?HandleEvent@CMMAVideoUrlPlayer@@MAEXABVTMMFEvent@@@Z @ 32 NONAME ; void CMMAVideoUrlPlayer::HandleEvent(class TMMFEvent const &) + ?ConstructL@CMMAVideoUrlPlayer@@IAEXABVTDesC16@@@Z @ 33 NONAME ; void CMMAVideoUrlPlayer::ConstructL(class TDesC16 const &) + ?SetDisplayL@CMMAVideoPlayer@@UAEXPAVMMMADisplay@@@Z @ 34 NONAME ; void CMMAVideoPlayer::SetDisplayL(class MMMADisplay *) + ?TakeSnapshotL@CMMAVideoPlayer@@UAE?AW4TEncoding@MMMASnapshot@@PAVTRequestStatus@@ABVTSize@@ABVCMMAImageSettings@@@Z @ 35 NONAME ; enum MMMASnapshot::TEncoding CMMAVideoPlayer::TakeSnapshotL(class TRequestStatus *, class TSize const &, class CMMAImageSettings const &) + ?SnapshotReady@CMMAVideoControl@@UAEXXZ @ 36 NONAME ; void CMMAVideoControl::SnapshotReady(void) + ?CreatePlayerL@CMMAMMFPlayerFactory@@MAEPAVCMMAPlayer@@PAVCMMFFormatSelectionParameters@@PBVTDesC16@@@Z @ 37 NONAME ; class CMMAPlayer * CMMAMMFPlayerFactory::CreatePlayerL(class CMMFFormatSelectionParameters *, class TDesC16 const *) + ?PlayCompleteL@CMMAEMCAudioPlayer@@MAEXH@Z @ 38 NONAME ; void CMMAEMCAudioPlayer::PlayCompleteL(int) + ?NewL@CMMAAudioVolumeControl@@SAPAV1@PAVCMMAAudioPlayer@@@Z @ 39 NONAME ; class CMMAAudioVolumeControl * CMMAAudioVolumeControl::NewL(class CMMAAudioPlayer *) + ?PrefetchDataL@CMMAEMCAudioPlayer@@MAEXABVTDesC8@@@Z @ 40 NONAME ; void CMMAEMCAudioPlayer::PrefetchDataL(class TDesC8 const &) + ?HandlePlaybackCompleteL@CMMAAudioPlayer@@UAEXXZ @ 41 NONAME ; void CMMAAudioPlayer::HandlePlaybackCompleteL(void) + ?RemoveStateListener@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 42 NONAME ; void CMMAPlayer::RemoveStateListener(class MMMAPlayerStateListener *) + ??0CMMAEMCAudioPlayer@@IAE@PAVCMMAEMCResolver@@@Z @ 43 NONAME ; CMMAEMCAudioPlayer::CMMAEMCAudioPlayer(class CMMAEMCResolver *) + ?Players@CMMAEventSource@@QAEAAV?$RPointerArray@VCMMAPlayer@@@@XZ @ 44 NONAME ; class RPointerArray & CMMAEventSource::Players(void) + ?GetDuration@CMMAPlayer@@UAEXPA_J@Z @ 45 NONAME ; void CMMAPlayer::GetDuration(long long *) + ?MidiClient@CMMAMIDIPlayer@@QBEPAVCMidiClientUtility@@XZ @ 46 NONAME ; class CMidiClientUtility * CMMAMIDIPlayer::MidiClient(void) const + ??1CMMAVideoUrlPlayer@@UAE@XZ @ 47 NONAME ; CMMAVideoUrlPlayer::~CMMAVideoUrlPlayer(void) + ?ErrorPlaybackComplete@CMMAAudioPlayer@@UAEXH@Z @ 48 NONAME ; void CMMAAudioPlayer::ErrorPlaybackComplete(int) + ??1CMMAEMCAudioPlayer@@UAE@XZ @ 49 NONAME ; CMMAEMCAudioPlayer::~CMMAEMCAudioPlayer(void) + ?MMFactory@CMMAEMCPlayerBase@@QAEPAVCMultimediaFactory@multimedia@@XZ @ 50 NONAME ; class multimedia::CMultimediaFactory * CMMAEMCPlayerBase::MMFactory(void) + ??1CMMAPlayer@@UAE@XZ @ 51 NONAME ; CMMAPlayer::~CMMAPlayer(void) + ?PreparePluginSelectionParametersL@CMMAMMFPlayerFactory@@MAEXPAVCMMAMMFResolver@@PAVCMMFFormatSelectionParameters@@@Z @ 52 NONAME ; void CMMAMMFPlayerFactory::PreparePluginSelectionParametersL(class CMMAMMFResolver *, class CMMFFormatSelectionParameters *) + ?PostActionCompleted@CMMAPlayer@@QAEXH@Z @ 53 NONAME ; void CMMAPlayer::PostActionCompleted(int) + ?RealizeL@CMMAVideoUrlPlayer@@UAEXXZ @ 54 NONAME ; void CMMAVideoUrlPlayer::RealizeL(void) + ?SetPlayerListenerObjectL@CMMAVideoPlayer@@UAEXPAV_jobject@@PAUJNIEnv_@@PAVMMMAEventPoster@@@Z @ 55 NONAME ; void CMMAVideoPlayer::SetPlayerListenerObjectL(class _jobject *, struct JNIEnv_ *, class MMMAEventPoster *) + ?RealizeL@CMMAEMCAudioPlayer@@UAEXXZ @ 56 NONAME ; void CMMAEMCAudioPlayer::RealizeL(void) + ?ControlCount@CMMAPlayer@@QAEHXZ @ 57 NONAME ; int CMMAPlayer::ControlCount(void) + ?DoSetLevelL@CMMAEMCAudioVolumeControl@@UAEXH@Z @ 58 NONAME ; void CMMAEMCAudioVolumeControl::DoSetLevelL(int) + ?NewL@CMMASurfaceWindow@@SAPAV1@PAVCMMAEventSource@@PAVCMMAPlayer@@H@Z @ 59 NONAME ; class CMMASurfaceWindow * CMMASurfaceWindow::NewL(class CMMAEventSource *, class CMMAPlayer *, int) + ?PlayCompleteL@CMMAAudioPlayer@@MAEXH@Z @ 60 NONAME ; void CMMAAudioPlayer::PlayCompleteL(int) + ?SourceSize@CMMAVideoPlayer@@UAE?AVTSize@@XZ @ 61 NONAME ; class TSize CMMAVideoPlayer::SourceSize(void) + ?SnapshoterL@CMMAVideoPlayer@@UAEPAVMMMASnapshot@@XZ @ 62 NONAME ; class MMMASnapshot * CMMAVideoPlayer::SnapshoterL(void) + ?GetDuration@CMMAMMFPlayerBase@@UAEXPA_J@Z @ 63 NONAME ; void CMMAMMFPlayerBase::GetDuration(long long *) + ?RemoveSurface@CMMASurfaceWindow@@QAEXXZ @ 64 NONAME ; void CMMASurfaceWindow::RemoveSurface(void) + ?AddPlayerFactoryL@CMMAManager@@QAEXPAVMMMAPlayerFactory@@@Z @ 65 NONAME ; void CMMAManager::AddPlayerFactoryL(class MMMAPlayerFactory *) ??0CMMAVideoControl@@QAE@PAVMMMAGuiPlayer@@@Z @ 66 NONAME ; CMMAVideoControl::CMMAVideoControl(class MMMAGuiPlayer *) ?ClassName@CMMAVideoControl@@UBEABVTDesC16@@XZ @ 67 NONAME ; class TDesC16 const & CMMAVideoControl::ClassName(void) const - ??1CMMAMMFPlayerFactory@@UAE@XZ @ 68 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void) - ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 69 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &) - ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 70 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *) - ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 71 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void) - ??0CMMAMMFPlayerFactory@@QAE@XZ @ 72 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void) - ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 73 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void) - ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 74 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void) - ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 75 NONAME ; void CMMAVideoUrlPlayer::StopL(int) - ?HandleSwitchOnL@CMMAVideoControl@@UAEXH@Z @ 76 NONAME ; void CMMAVideoControl::HandleSwitchOnL(int) - ??1CMMAVideoControl@@UAE@XZ @ 77 NONAME ; CMMAVideoControl::~CMMAVideoControl(void) + ?SetSurfaceParameters@CMMASurfaceWindow@@QAEXABVTSurfaceId@@ABVTRect@@ABVTVideoAspectRatio@@@Z @ 68 NONAME ; void CMMASurfaceWindow::SetSurfaceParameters(class TSurfaceId const &, class TRect const &, class TVideoAspectRatio const &) + ??1CMMAMMFPlayerFactory@@UAE@XZ @ 69 NONAME ; CMMAMMFPlayerFactory::~CMMAMMFPlayerFactory(void) + ?SetVolumeLevelL@CMMAVolumeControl@@QAEXHH@Z @ 70 NONAME ; void CMMAVolumeControl::SetVolumeLevelL(int, int) + ?DoGetLevelL@CMMAEMCAudioVolumeControl@@UAEHXZ @ 71 NONAME ; int CMMAEMCAudioVolumeControl::DoGetLevelL(void) + ?ReadCompletedL@CMMAVideoPlayer@@MAEXHABVTDesC8@@@Z @ 72 NONAME ; void CMMAVideoPlayer::ReadCompletedL(int, class TDesC8 const &) + ?Type@CMMAEMCAudioPlayer@@UAEABVTDesC16@@XZ @ 73 NONAME ; class TDesC16 const & CMMAEMCAudioPlayer::Type(void) + ?DeallocateL@CMMAVideoUrlPlayer@@UAEXXZ @ 74 NONAME ; void CMMAVideoUrlPlayer::DeallocateL(void) + ?GetMediaTime@CMMAVideoUrlPlayer@@UAEXPA_J@Z @ 75 NONAME ; void CMMAVideoUrlPlayer::GetMediaTime(long long *) + ??0CMMAMMFPlayerFactory@@QAE@XZ @ 76 NONAME ; CMMAMMFPlayerFactory::CMMAMMFPlayerFactory(void) + ?AddStateListenerL@CMMAPlayer@@QAEXPAVMMMAPlayerStateListener@@@Z @ 77 NONAME ; void CMMAPlayer::AddStateListenerL(class MMMAPlayerStateListener *) + ?StreamControl@CMMAEMCPlayerBase@@QAEPAVMStreamControl@multimedia@@XZ @ 78 NONAME ; class multimedia::MStreamControl * CMMAEMCPlayerBase::StreamControl(void) + ?PrefetchFileL@CMMAAudioPlayer@@MAEXXZ @ 79 NONAME ; void CMMAAudioPlayer::PrefetchFileL(void) + ?PrefetchL@CMMAVideoUrlPlayer@@UAEXXZ @ 80 NONAME ; void CMMAVideoUrlPlayer::PrefetchL(void) + ?ConstructL@CMMAEMCAudioPlayer@@IAEXXZ @ 81 NONAME ; void CMMAEMCAudioPlayer::ConstructL(void) + ?AddLevelL@CMMAVolumeControl@@QAEHXZ @ 82 NONAME ; int CMMAVolumeControl::AddLevelL(void) + ?StartL@CMMAVideoUrlPlayer@@UAEXH@Z @ 83 NONAME ; void CMMAVideoUrlPlayer::StartL(int) + ?Control@CMMAPlayer@@QAEPAVCMMAControl@@H@Z @ 84 NONAME ; class CMMAControl * CMMAPlayer::Control(int) + ?PrefetchL@CMMAEMCAudioPlayer@@UAEXXZ @ 85 NONAME ; void CMMAEMCAudioPlayer::PrefetchL(void) + ?StopL@CMMAVideoUrlPlayer@@UAEXH@Z @ 86 NONAME ; void CMMAVideoUrlPlayer::StopL(int) + ??1CMMAVideoControl@@UAE@XZ @ 87 NONAME ; CMMAVideoControl::~CMMAVideoControl(void) + ?HandleSwitchOnL@CMMAVideoControl@@UAEXH@Z @ 88 NONAME ; void CMMAVideoControl::HandleSwitchOnL(int) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/eabi/javamobilemedia_5_0u.def --- a/javauis/mmapi_akn/build/eabi/javamobilemedia_5_0u.def Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/eabi/javamobilemedia_5_0u.def Mon Jun 21 15:32:50 2010 +0300 @@ -1,126 +1,136 @@ EXPORTS _Z10jni_lookupPKc @ 1 NONAME - _ZN10CMMAPlayer12ControlCountEv @ 2 NONAME - _ZN10CMMAPlayer15PostStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 3 NONAME - _ZN10CMMAPlayer17AddStateListenerLEP23MMMAPlayerStateListener @ 4 NONAME - _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 5 NONAME - _ZN10CMMAPlayer7ControlEi @ 6 NONAME - _ZN15CMMAEventSource25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 7 NONAME - _ZN15CMMAEventSource26StaticAddObjectFromHandleLEPS_i @ 8 NONAME - _ZN15CMMAEventSource7PlayersEv @ 9 NONAME - _ZN17CMMAMMFPlayerBase10ControllerEv @ 10 NONAME - _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 11 NONAME - _ZN17CMMAVolumeControl9AddLevelLEv @ 12 NONAME - _ZNK11CMMAControl15PublicClassNameEv @ 13 NONAME - _ZNK14CMMAMIDIPlayer10MidiClientEv @ 14 NONAME - _ZTI10CMMAPlayer @ 15 NONAME ; ## - _ZTI11CMMAControl @ 16 NONAME ; ## - _ZTI14CMMAMIDIPlayer @ 17 NONAME ; ## - _ZTI15CMMAEventSource @ 18 NONAME ; ## - _ZTI17CMMAMMFPlayerBase @ 19 NONAME ; ## - _ZTI17CMMAStreamRequest @ 20 NONAME ; ## - _ZTI26CPlaybackCompletedCallback @ 21 NONAME ; ## - _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 22 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 23 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 24 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 25 NONAME ; ## - _ZTIN19CMMAStopTimeControl10CStopTimerE @ 26 NONAME ; ## - _ZTV10CMMAPlayer @ 27 NONAME ; ## - _ZTV11CMMAControl @ 28 NONAME ; ## - _ZTV14CMMAMIDIPlayer @ 29 NONAME ; ## - _ZTV15CMMAEventSource @ 30 NONAME ; ## - _ZTV17CMMAMMFPlayerBase @ 31 NONAME ; ## - _ZTV17CMMAStreamRequest @ 32 NONAME ; ## - _ZTV26CPlaybackCompletedCallback @ 33 NONAME ; ## - _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 34 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 35 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 36 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 37 NONAME ; ## - _ZTVN19CMMAStopTimeControl10CStopTimerE @ 38 NONAME ; ## - _ZN10CMMAPlayer15PostObjectEventEN15CMMAPlayerEvent10TEventTypeEP8_jobject @ 39 NONAME - _ZTI17CMMAVolumeControl @ 40 NONAME ; ## - _ZTV17CMMAVolumeControl @ 41 NONAME ; ## - _ZN10CMMAPlayer11AddControlLEP11CMMAControl @ 42 NONAME - _ZN10CMMAPlayer12SetLoopCountEi @ 43 NONAME - _ZN10CMMAPlayer16AddSourceStreamLEP7JNIEnv_P15CMMAEventSourceP8_jobject @ 44 NONAME - _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 45 NONAME - _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 46 NONAME - _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 47 NONAME - _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 48 NONAME - _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 49 NONAME - _ZN16CMMAVideoControl13SnapshotReadyEv @ 50 NONAME - _ZN16CMMAVideoControl15HandleSwitchOnLEi @ 51 NONAME - _ZN16CMMAVideoControl17HandleForegroundLEi @ 52 NONAME - _ZN16CMMAVideoControl21HandleResourceChangeLEi @ 53 NONAME - _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 54 NONAME - _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 55 NONAME - _ZN16CMMAVideoControlD0Ev @ 56 NONAME - _ZN16CMMAVideoControlD1Ev @ 57 NONAME - _ZN16CMMAVideoControlD2Ev @ 58 NONAME - _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 59 NONAME - _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 60 NONAME - _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 61 NONAME - _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 62 NONAME - _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 63 NONAME - _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 64 NONAME - _ZN18CMMAVideoUrlPlayer5StopLEi @ 65 NONAME - _ZN18CMMAVideoUrlPlayer6CloseLEv @ 66 NONAME - _ZN18CMMAVideoUrlPlayer6StartLEv @ 67 NONAME - _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 68 NONAME - _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 69 NONAME - _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 70 NONAME - _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 71 NONAME - _ZN18CMMAVideoUrlPlayerD0Ev @ 72 NONAME - _ZN18CMMAVideoUrlPlayerD1Ev @ 73 NONAME - _ZN18CMMAVideoUrlPlayerD2Ev @ 74 NONAME - _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 75 NONAME - _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 76 NONAME - _ZN20CMMAMMFPlayerFactoryC2Ev @ 77 NONAME - _ZN20CMMAMMFPlayerFactoryD0Ev @ 78 NONAME - _ZN20CMMAMMFPlayerFactoryD1Ev @ 79 NONAME - _ZN20CMMAMMFPlayerFactoryD2Ev @ 80 NONAME - _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 81 NONAME - _ZNK16CMMAVideoControl9ClassNameEv @ 82 NONAME - _ZTI20CMMAMMFPlayerFactory @ 83 NONAME ; ## - _ZTV20CMMAMMFPlayerFactory @ 84 NONAME ; ## - _ZThn12_N16CMMAVideoControl15HandleSwitchOnLEi @ 85 NONAME ; ## - _ZThn12_N16CMMAVideoControl17HandleForegroundLEi @ 86 NONAME ; ## - _ZThn12_N16CMMAVideoControl21HandleResourceChangeLEi @ 87 NONAME ; ## - _ZThn152_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 88 NONAME ; ## - _ZThn280_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 89 NONAME ; ## - _ZThn280_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 90 NONAME ; ## - _ZThn288_N18CMMAVideoUrlPlayerD0Ev @ 91 NONAME ; ## - _ZThn288_N18CMMAVideoUrlPlayerD1Ev @ 92 NONAME ; ## - _ZThn292_N18CMMAVideoUrlPlayerD0Ev @ 93 NONAME ; ## - _ZThn292_N18CMMAVideoUrlPlayerD1Ev @ 94 NONAME ; ## - _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 95 NONAME ; ## - _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 96 NONAME ; ## - _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 97 NONAME ; ## - _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 98 NONAME ; ## - _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 99 NONAME ; ## - _ZThn8_N16CMMAVideoControlD0Ev @ 100 NONAME ; ## - _ZThn8_N16CMMAVideoControlD1Ev @ 101 NONAME ; ## - _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 102 NONAME - _ZN15CMMAVideoPlayer10SourceSizeEv @ 103 NONAME - _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 104 NONAME - _ZN15CMMAVideoPlayer11SnapshoterLEv @ 105 NONAME - _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 106 NONAME - _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 107 NONAME - _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 108 NONAME - _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 109 NONAME - _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 110 NONAME - _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 111 NONAME - _ZN15CMMAVideoPlayer4TypeEv @ 112 NONAME - _ZThn288_N15CMMAVideoPlayer10SourceSizeEv @ 113 NONAME ; ## - _ZThn288_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 114 NONAME ; ## - _ZThn288_N15CMMAVideoPlayer11SnapshoterLEv @ 115 NONAME ; ## - _ZThn288_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 116 NONAME ; ## - _ZThn292_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 117 NONAME ; ## - _ZThn292_N15CMMAVideoPlayer14SnapshotBitmapEv @ 118 NONAME ; ## - _ZThn292_N15CMMAVideoPlayer15SnapshotEncodedEv @ 119 NONAME ; ## - _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 120 NONAME ; ## - _ZTI16CMMAVideoControl @ 121 NONAME ; ## - _ZTI18CMMAVideoUrlPlayer @ 122 NONAME ; ## - _ZTV16CMMAVideoControl @ 123 NONAME ; ## - _ZTV18CMMAVideoUrlPlayer @ 124 NONAME ; ## + _ZN10CMMAPlayer11AddControlLEP11CMMAControl @ 2 NONAME + _ZN10CMMAPlayer11ChangeStateENS_12TPlayerStateE @ 3 NONAME + _ZN10CMMAPlayer11GetDurationEPx @ 4 NONAME + _ZN10CMMAPlayer12ControlCountEv @ 5 NONAME + _ZN10CMMAPlayer12SetLoopCountEi @ 6 NONAME + _ZN10CMMAPlayer15PostObjectEventEN15CMMAPlayerEvent10TEventTypeEP8_jobject @ 7 NONAME + _ZN10CMMAPlayer15PostStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 8 NONAME + _ZN10CMMAPlayer16AddSourceStreamLEP7JNIEnv_P15CMMAEventSourceP8_jobject @ 9 NONAME + _ZN10CMMAPlayer17AddStateListenerLEP23MMMAPlayerStateListener @ 10 NONAME + _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 11 NONAME + _ZN10CMMAPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 12 NONAME + _ZN10CMMAPlayer7ControlEi @ 13 NONAME + _ZN10CMMAPlayerC2Ev @ 14 NONAME + _ZN10CMMAPlayerD0Ev @ 15 NONAME + _ZN10CMMAPlayerD1Ev @ 16 NONAME + _ZN10CMMAPlayerD2Ev @ 17 NONAME + _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 18 NONAME + _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 19 NONAME + _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 20 NONAME + _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 21 NONAME + _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 22 NONAME + _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 23 NONAME + _ZN15CMMAEventSource25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 24 NONAME + _ZN15CMMAEventSource26StaticAddObjectFromHandleLEPS_i @ 25 NONAME + _ZN15CMMAEventSource7PlayersEv @ 26 NONAME + _ZN15CMMAVideoPlayer10SourceSizeEv @ 27 NONAME + _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 28 NONAME + _ZN15CMMAVideoPlayer11SnapshoterLEv @ 29 NONAME + _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 30 NONAME + _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 31 NONAME + _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 32 NONAME + _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 33 NONAME + _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 34 NONAME + _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 35 NONAME + _ZN15CMMAVideoPlayer4TypeEv @ 36 NONAME + _ZN16CMMAVideoControl13SnapshotReadyEv @ 37 NONAME + _ZN16CMMAVideoControl15HandleSwitchOnLEi @ 38 NONAME + _ZN16CMMAVideoControl17HandleForegroundLEi @ 39 NONAME + _ZN16CMMAVideoControl21HandleResourceChangeLEi @ 40 NONAME + _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 41 NONAME + _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 42 NONAME + _ZN16CMMAVideoControlD0Ev @ 43 NONAME + _ZN16CMMAVideoControlD1Ev @ 44 NONAME + _ZN16CMMAVideoControlD2Ev @ 45 NONAME + _ZN17CMMAMMFPlayerBase10ControllerEv @ 46 NONAME + _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 47 NONAME + _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 48 NONAME + _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 49 NONAME + _ZN17CMMAVolumeControl25SetAudioOutputPreferenceLEi @ 50 NONAME + _ZN17CMMAVolumeControl9AddLevelLEv @ 51 NONAME + _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 52 NONAME + _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 53 NONAME + _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 54 NONAME + _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 55 NONAME + _ZN18CMMAVideoUrlPlayer5StopLEi @ 56 NONAME + _ZN18CMMAVideoUrlPlayer6CloseLEv @ 57 NONAME + _ZN18CMMAVideoUrlPlayer6StartLEi @ 58 NONAME + _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 59 NONAME + _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 60 NONAME + _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 61 NONAME + _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 62 NONAME + _ZN18CMMAVideoUrlPlayerD0Ev @ 63 NONAME + _ZN18CMMAVideoUrlPlayerD1Ev @ 64 NONAME + _ZN18CMMAVideoUrlPlayerD2Ev @ 65 NONAME + _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 66 NONAME + _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 67 NONAME + _ZN20CMMAMMFPlayerFactoryC2Ev @ 68 NONAME + _ZN20CMMAMMFPlayerFactoryD0Ev @ 69 NONAME + _ZN20CMMAMMFPlayerFactoryD1Ev @ 70 NONAME + _ZN20CMMAMMFPlayerFactoryD2Ev @ 71 NONAME + _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 72 NONAME + _ZNK11CMMAControl15PublicClassNameEv @ 73 NONAME + _ZNK14CMMAMIDIPlayer10MidiClientEv @ 74 NONAME + _ZNK16CMMAVideoControl9ClassNameEv @ 75 NONAME + _ZTI10CMMAPlayer @ 76 NONAME + _ZTI11CMMAControl @ 77 NONAME + _ZTI14CMMAMIDIPlayer @ 78 NONAME + _ZTI15CMMAEventSource @ 79 NONAME + _ZTI16CMMAVideoControl @ 80 NONAME + _ZTI17CMMAMMFPlayerBase @ 81 NONAME + _ZTI17CMMAStreamRequest @ 82 NONAME + _ZTI17CMMAVolumeControl @ 83 NONAME + _ZTI18CMMAVideoUrlPlayer @ 84 NONAME + _ZTI20CMMAMMFPlayerFactory @ 85 NONAME + _ZTI26CPlaybackCompletedCallback @ 86 NONAME + _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 87 NONAME + _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 88 NONAME + _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 89 NONAME + _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 90 NONAME + _ZTIN19CMMAStopTimeControl10CStopTimerE @ 91 NONAME + _ZTV10CMMAPlayer @ 92 NONAME + _ZTV11CMMAControl @ 93 NONAME + _ZTV14CMMAMIDIPlayer @ 94 NONAME + _ZTV15CMMAEventSource @ 95 NONAME + _ZTV16CMMAVideoControl @ 96 NONAME + _ZTV17CMMAMMFPlayerBase @ 97 NONAME + _ZTV17CMMAStreamRequest @ 98 NONAME + _ZTV17CMMAVolumeControl @ 99 NONAME + _ZTV18CMMAVideoUrlPlayer @ 100 NONAME + _ZTV20CMMAMMFPlayerFactory @ 101 NONAME + _ZTV26CPlaybackCompletedCallback @ 102 NONAME + _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 103 NONAME + _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 104 NONAME + _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 105 NONAME + _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 106 NONAME + _ZTVN19CMMAStopTimeControl10CStopTimerE @ 107 NONAME + _ZThn12_N16CMMAVideoControl15HandleSwitchOnLEi @ 108 NONAME + _ZThn12_N16CMMAVideoControl17HandleForegroundLEi @ 109 NONAME + _ZThn12_N16CMMAVideoControl21HandleResourceChangeLEi @ 110 NONAME + _ZThn152_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 111 NONAME + _ZThn280_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 112 NONAME + _ZThn280_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 113 NONAME + _ZThn288_N15CMMAVideoPlayer10SourceSizeEv @ 114 NONAME + _ZThn288_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 115 NONAME + _ZThn288_N15CMMAVideoPlayer11SnapshoterLEv @ 116 NONAME + _ZThn288_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 117 NONAME + _ZThn288_N18CMMAVideoUrlPlayerD0Ev @ 118 NONAME + _ZThn288_N18CMMAVideoUrlPlayerD1Ev @ 119 NONAME + _ZThn292_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 120 NONAME + _ZThn292_N15CMMAVideoPlayer14SnapshotBitmapEv @ 121 NONAME + _ZThn292_N15CMMAVideoPlayer15SnapshotEncodedEv @ 122 NONAME + _ZThn292_N18CMMAVideoUrlPlayerD0Ev @ 123 NONAME + _ZThn292_N18CMMAVideoUrlPlayerD1Ev @ 124 NONAME + _ZThn4_N10CMMAPlayerD0Ev @ 125 NONAME + _ZThn4_N10CMMAPlayerD1Ev @ 126 NONAME + _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 127 NONAME + _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 128 NONAME + _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 129 NONAME + _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 130 NONAME + _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 131 NONAME + _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 132 NONAME + _ZThn8_N16CMMAVideoControlD0Ev @ 133 NONAME + _ZThn8_N16CMMAVideoControlD1Ev @ 134 NONAME diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/eabi/javamobilemediau.def --- a/javauis/mmapi_akn/build/eabi/javamobilemediau.def Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/eabi/javamobilemediau.def Mon Jun 21 15:32:50 2010 +0300 @@ -1,151 +1,166 @@ EXPORTS _Z10jni_lookupPKc @ 1 NONAME - _ZN10CMMAPlayer12ControlCountEv @ 2 NONAME - _ZN10CMMAPlayer15PostStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 3 NONAME - _ZN10CMMAPlayer17AddStateListenerLEP23MMMAPlayerStateListener @ 4 NONAME - _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 5 NONAME - _ZN10CMMAPlayer7ControlEi @ 6 NONAME - _ZN15CMMAEventSource25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 7 NONAME - _ZN15CMMAEventSource26StaticAddObjectFromHandleLEPS_i @ 8 NONAME - _ZN15CMMAEventSource7PlayersEv @ 9 NONAME - _ZN17CMMAMMFPlayerBase10ControllerEv @ 10 NONAME - _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 11 NONAME - _ZN17CMMAVolumeControl9AddLevelLEv @ 12 NONAME - _ZNK11CMMAControl15PublicClassNameEv @ 13 NONAME - _ZNK14CMMAMIDIPlayer10MidiClientEv @ 14 NONAME - _ZTI10CMMAPlayer @ 15 NONAME ; ## - _ZTI11CMMAControl @ 16 NONAME ; ## - _ZTI14CMMAMIDIPlayer @ 17 NONAME ; ## - _ZTI15CMMAEventSource @ 18 NONAME ; ## - _ZTI17CMMAMMFPlayerBase @ 19 NONAME ; ## - _ZTI17CMMAStreamRequest @ 20 NONAME ; ## - _ZTI26CPlaybackCompletedCallback @ 21 NONAME ; ## - _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 22 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 23 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 24 NONAME ; ## - _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 25 NONAME ; ## - _ZTIN19CMMAStopTimeControl10CStopTimerE @ 26 NONAME ; ## - _ZTV10CMMAPlayer @ 27 NONAME ; ## - _ZTV11CMMAControl @ 28 NONAME ; ## - _ZTV14CMMAMIDIPlayer @ 29 NONAME ; ## - _ZTV15CMMAEventSource @ 30 NONAME ; ## - _ZTV17CMMAMMFPlayerBase @ 31 NONAME ; ## - _ZTV17CMMAStreamRequest @ 32 NONAME ; ## - _ZTV26CPlaybackCompletedCallback @ 33 NONAME ; ## - _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 34 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 35 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 36 NONAME ; ## - _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 37 NONAME ; ## - _ZTVN19CMMAStopTimeControl10CStopTimerE @ 38 NONAME ; ## - _ZN17CMMAEMCPlayerBase13StreamControlEv @ 39 NONAME - _ZN17CMMAEMCPlayerBase9MMFactoryEv @ 40 NONAME - _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 41 NONAME - _ZN18CMMAEMCAudioPlayer10ConstructLEv @ 42 NONAME - _ZN18CMMAEMCAudioPlayer13PlayCompleteLEi @ 43 NONAME - _ZN18CMMAEMCAudioPlayer13PrefetchDataLERK6TDesC8 @ 44 NONAME - _ZN18CMMAEMCAudioPlayer13PrefetchFileLEv @ 45 NONAME - _ZN18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 46 NONAME - _ZN18CMMAEMCAudioPlayer4TypeEv @ 47 NONAME - _ZN18CMMAEMCAudioPlayer8RealizeLEv @ 48 NONAME - _ZN18CMMAEMCAudioPlayer9PrefetchLEv @ 49 NONAME - _ZN18CMMAEMCAudioPlayerC1EP15CMMAEMCResolver @ 50 NONAME - _ZN18CMMAEMCAudioPlayerC2EP15CMMAEMCResolver @ 51 NONAME - _ZN18CMMAEMCAudioPlayerD0Ev @ 52 NONAME - _ZN18CMMAEMCAudioPlayerD1Ev @ 53 NONAME - _ZN18CMMAEMCAudioPlayerD2Ev @ 54 NONAME - _ZN25CMMAEMCAudioVolumeControl11DoGetLevelLEv @ 55 NONAME - _ZN25CMMAEMCAudioVolumeControl11DoSetLevelLEi @ 56 NONAME - _ZN25CMMAEMCAudioVolumeControl4NewLER18CMMAEMCAudioPlayer @ 57 NONAME - _ZN25CMMAEMCAudioVolumeControlC1ER18CMMAEMCAudioPlayer @ 58 NONAME - _ZN25CMMAEMCAudioVolumeControlC2ER18CMMAEMCAudioPlayer @ 59 NONAME - _ZTI17CMMAVolumeControl @ 60 NONAME - _ZTI18CHXMetaDataUtility @ 61 NONAME - _ZTV17CMMAVolumeControl @ 62 NONAME - _ZTV18CHXMetaDataUtility @ 63 NONAME - _ZThn4_N18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 64 NONAME - _ZThn4_N18CMMAEMCAudioPlayerD0Ev @ 65 NONAME - _ZThn4_N18CMMAEMCAudioPlayerD1Ev @ 66 NONAME - _ZN10CMMAPlayer15PostObjectEventEN15CMMAPlayerEvent10TEventTypeEP8_jobject @ 67 NONAME - _ZN10CMMAPlayer11AddControlLEP11CMMAControl @ 68 NONAME - _ZN10CMMAPlayer12SetLoopCountEi @ 69 NONAME - _ZN10CMMAPlayer16AddSourceStreamLEP7JNIEnv_P15CMMAEventSourceP8_jobject @ 70 NONAME - _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 71 NONAME - _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 72 NONAME - _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 73 NONAME - _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 74 NONAME - _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 75 NONAME - _ZN15CMMAVideoPlayer10SourceSizeEv @ 76 NONAME - _ZN15CMMAVideoPlayer11SnapshoterLEv @ 77 NONAME - _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 78 NONAME - _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 79 NONAME - _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 80 NONAME - _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 81 NONAME - _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 82 NONAME - _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 83 NONAME - _ZN15CMMAVideoPlayer4TypeEv @ 84 NONAME - _ZN16CMMAVideoControl13SnapshotReadyEv @ 85 NONAME - _ZN16CMMAVideoControl15HandleSwitchOnLEi @ 86 NONAME - _ZN16CMMAVideoControl17HandleForegroundLEi @ 87 NONAME - _ZN16CMMAVideoControl21HandleResourceChangeLEi @ 88 NONAME - _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 89 NONAME - _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 90 NONAME - _ZN16CMMAVideoControlD0Ev @ 91 NONAME - _ZN16CMMAVideoControlD1Ev @ 92 NONAME - _ZN16CMMAVideoControlD2Ev @ 93 NONAME - _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 94 NONAME - _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 95 NONAME - _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 96 NONAME - _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 97 NONAME - _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 98 NONAME - _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 99 NONAME - _ZN18CMMAVideoUrlPlayer5StopLEi @ 100 NONAME - _ZN18CMMAVideoUrlPlayer6CloseLEv @ 101 NONAME - _ZN18CMMAVideoUrlPlayer6StartLEv @ 102 NONAME - _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 103 NONAME - _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 104 NONAME - _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 105 NONAME - _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 106 NONAME - _ZN18CMMAVideoUrlPlayerD0Ev @ 107 NONAME - _ZN18CMMAVideoUrlPlayerD1Ev @ 108 NONAME - _ZN18CMMAVideoUrlPlayerD2Ev @ 109 NONAME - _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 110 NONAME - _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 111 NONAME - _ZN20CMMAMMFPlayerFactoryC2Ev @ 112 NONAME - _ZN20CMMAMMFPlayerFactoryD0Ev @ 113 NONAME - _ZN20CMMAMMFPlayerFactoryD1Ev @ 114 NONAME - _ZN20CMMAMMFPlayerFactoryD2Ev @ 115 NONAME - _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 116 NONAME - _ZNK16CMMAVideoControl9ClassNameEv @ 117 NONAME - _ZTI16CMMAVideoControl @ 118 NONAME - _ZTI18CMMAVideoUrlPlayer @ 119 NONAME - _ZTI20CMMAMMFPlayerFactory @ 120 NONAME - _ZTV16CMMAVideoControl @ 121 NONAME - _ZTV18CMMAVideoUrlPlayer @ 122 NONAME - _ZTV20CMMAMMFPlayerFactory @ 123 NONAME - _ZThn12_N16CMMAVideoControl15HandleSwitchOnLEi @ 124 NONAME - _ZThn12_N16CMMAVideoControl17HandleForegroundLEi @ 125 NONAME - _ZThn12_N16CMMAVideoControl21HandleResourceChangeLEi @ 126 NONAME - _ZThn152_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 127 NONAME - _ZThn280_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 128 NONAME - _ZThn280_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 129 NONAME - _ZThn288_N15CMMAVideoPlayer10SourceSizeEv @ 130 NONAME - _ZThn288_N15CMMAVideoPlayer11SnapshoterLEv @ 131 NONAME - _ZThn288_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 132 NONAME - _ZThn288_N18CMMAVideoUrlPlayerD0Ev @ 133 NONAME - _ZThn288_N18CMMAVideoUrlPlayerD1Ev @ 134 NONAME - _ZThn292_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 135 NONAME - _ZThn292_N15CMMAVideoPlayer14SnapshotBitmapEv @ 136 NONAME - _ZThn292_N15CMMAVideoPlayer15SnapshotEncodedEv @ 137 NONAME - _ZThn292_N18CMMAVideoUrlPlayerD0Ev @ 138 NONAME - _ZThn292_N18CMMAVideoUrlPlayerD1Ev @ 139 NONAME - _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 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 - _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 148 NONAME - _ZThn288_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 149 NONAME + _ZN10CMMAPlayer11AddControlLEP11CMMAControl @ 2 NONAME + _ZN10CMMAPlayer11ChangeStateENS_12TPlayerStateE @ 3 NONAME + _ZN10CMMAPlayer11GetDurationEPx @ 4 NONAME + _ZN10CMMAPlayer12ControlCountEv @ 5 NONAME + _ZN10CMMAPlayer12SetLoopCountEi @ 6 NONAME + _ZN10CMMAPlayer15PostObjectEventEN15CMMAPlayerEvent10TEventTypeEP8_jobject @ 7 NONAME + _ZN10CMMAPlayer15PostStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 8 NONAME + _ZN10CMMAPlayer16AddSourceStreamLEP7JNIEnv_P15CMMAEventSourceP8_jobject @ 9 NONAME + _ZN10CMMAPlayer17AddStateListenerLEP23MMMAPlayerStateListener @ 10 NONAME + _ZN10CMMAPlayer19RemoveStateListenerEP23MMMAPlayerStateListener @ 11 NONAME + _ZN10CMMAPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 12 NONAME + _ZN10CMMAPlayer7ControlEi @ 13 NONAME + _ZN10CMMAPlayerC2Ev @ 14 NONAME + _ZN10CMMAPlayerD0Ev @ 15 NONAME + _ZN10CMMAPlayerD1Ev @ 16 NONAME + _ZN10CMMAPlayerD2Ev @ 17 NONAME + _ZN11CMMAManager17AddPlayerFactoryLEP17MMMAPlayerFactory @ 18 NONAME + _ZN15CMMAAudioPlayer13PlayCompleteLEi @ 19 NONAME + _ZN15CMMAAudioPlayer13PrefetchDataLERK6TDesC8 @ 20 NONAME + _ZN15CMMAAudioPlayer13PrefetchFileLEv @ 21 NONAME + _ZN15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 22 NONAME + _ZN15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 23 NONAME + _ZN15CMMAEventSource25SetPlayerInstanceObserverEP26MMMAPlayerInstanceObserver @ 24 NONAME + _ZN15CMMAEventSource26StaticAddObjectFromHandleLEPS_i @ 25 NONAME + _ZN15CMMAEventSource7PlayersEv @ 26 NONAME + _ZN15CMMAVideoPlayer10SourceSizeEv @ 27 NONAME + _ZN15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 28 NONAME + _ZN15CMMAVideoPlayer11SnapshoterLEv @ 29 NONAME + _ZN15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 30 NONAME + _ZN15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 31 NONAME + _ZN15CMMAVideoPlayer14SnapshotBitmapEv @ 32 NONAME + _ZN15CMMAVideoPlayer15SnapshotEncodedEv @ 33 NONAME + _ZN15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 34 NONAME + _ZN15CMMAVideoPlayer24SetPlayerListenerObjectLEP8_jobjectP7JNIEnv_P15MMMAEventPoster @ 35 NONAME + _ZN15CMMAVideoPlayer4TypeEv @ 36 NONAME + _ZN16CMMAVideoControl13SnapshotReadyEv @ 37 NONAME + _ZN16CMMAVideoControl15HandleSwitchOnLEi @ 38 NONAME + _ZN16CMMAVideoControl17HandleForegroundLEi @ 39 NONAME + _ZN16CMMAVideoControl21HandleResourceChangeLEi @ 40 NONAME + _ZN16CMMAVideoControlC1EP13MMMAGuiPlayer @ 41 NONAME + _ZN16CMMAVideoControlC2EP13MMMAGuiPlayer @ 42 NONAME + _ZN16CMMAVideoControlD0Ev @ 43 NONAME + _ZN16CMMAVideoControlD1Ev @ 44 NONAME + _ZN16CMMAVideoControlD2Ev @ 45 NONAME + _ZN17CMMAEMCPlayerBase13StreamControlEv @ 46 NONAME + _ZN17CMMAEMCPlayerBase9MMFactoryEv @ 47 NONAME + _ZN17CMMAMMFPlayerBase10ControllerEv @ 48 NONAME + _ZN17CMMAMMFPlayerBase11GetDurationEPx @ 49 NONAME + _ZN17CMMAMMFPlayerBase6DoOpenE4TUidRK6TDesC8S0_S3_20TMMFPrioritySettings @ 50 NONAME + _ZN17CMMASurfaceWindow10SetDisplayEP11MMMADisplay @ 51 NONAME + _ZN17CMMASurfaceWindow13RemoveSurfaceEv @ 52 NONAME + _ZN17CMMASurfaceWindow20SetSurfaceParametersERK10TSurfaceIdRK5TRectRK17TVideoAspectRatio @ 53 NONAME + _ZN17CMMASurfaceWindow27SetChangedSurfaceParametersERK10TSurfaceIdRK5TRectRK17TVideoAspectRatio @ 54 NONAME + _ZN17CMMASurfaceWindow4NewLEP15CMMAEventSourceP10CMMAPlayeri @ 55 NONAME + _ZN17CMMAVolumeControl15SetVolumeLevelLEii @ 56 NONAME + _ZN17CMMAVolumeControl25SetAudioOutputPreferenceLEi @ 57 NONAME + _ZN17CMMAVolumeControl9AddLevelLEv @ 58 NONAME + _ZN18CMMAEMCAudioPlayer10ConstructLEv @ 59 NONAME + _ZN18CMMAEMCAudioPlayer13PlayCompleteLEi @ 60 NONAME + _ZN18CMMAEMCAudioPlayer13PrefetchDataLERK6TDesC8 @ 61 NONAME + _ZN18CMMAEMCAudioPlayer13PrefetchFileLEv @ 62 NONAME + _ZN18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 63 NONAME + _ZN18CMMAEMCAudioPlayer4TypeEv @ 64 NONAME + _ZN18CMMAEMCAudioPlayer8RealizeLEv @ 65 NONAME + _ZN18CMMAEMCAudioPlayer9PrefetchLEv @ 66 NONAME + _ZN18CMMAEMCAudioPlayerC1EP15CMMAEMCResolver @ 67 NONAME + _ZN18CMMAEMCAudioPlayerC2EP15CMMAEMCResolver @ 68 NONAME + _ZN18CMMAEMCAudioPlayerD0Ev @ 69 NONAME + _ZN18CMMAEMCAudioPlayerD1Ev @ 70 NONAME + _ZN18CMMAEMCAudioPlayerD2Ev @ 71 NONAME + _ZN18CMMAVideoUrlPlayer10ConstructLERK7TDesC16 @ 72 NONAME + _ZN18CMMAVideoUrlPlayer11DeallocateLEv @ 73 NONAME + _ZN18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 74 NONAME + _ZN18CMMAVideoUrlPlayer12GetMediaTimeEPx @ 75 NONAME + _ZN18CMMAVideoUrlPlayer5StopLEi @ 76 NONAME + _ZN18CMMAVideoUrlPlayer6CloseLEv @ 77 NONAME + _ZN18CMMAVideoUrlPlayer6StartLEi @ 78 NONAME + _ZN18CMMAVideoUrlPlayer8RealizeLEv @ 79 NONAME + _ZN18CMMAVideoUrlPlayer9PrefetchLEv @ 80 NONAME + _ZN18CMMAVideoUrlPlayerC1EP15CMMAMMFResolver @ 81 NONAME + _ZN18CMMAVideoUrlPlayerC2EP15CMMAMMFResolver @ 82 NONAME + _ZN18CMMAVideoUrlPlayerD0Ev @ 83 NONAME + _ZN18CMMAVideoUrlPlayerD1Ev @ 84 NONAME + _ZN18CMMAVideoUrlPlayerD2Ev @ 85 NONAME + _ZN20CMMAMMFPlayerFactory13CreatePlayerLEP29CMMFFormatSelectionParametersPK7TDesC16 @ 86 NONAME + _ZN20CMMAMMFPlayerFactory33PreparePluginSelectionParametersLEP15CMMAMMFResolverP29CMMFFormatSelectionParameters @ 87 NONAME + _ZN20CMMAMMFPlayerFactoryC2Ev @ 88 NONAME + _ZN20CMMAMMFPlayerFactoryD0Ev @ 89 NONAME + _ZN20CMMAMMFPlayerFactoryD1Ev @ 90 NONAME + _ZN20CMMAMMFPlayerFactoryD2Ev @ 91 NONAME + _ZN22CMMAAudioVolumeControl4NewLEP15CMMAAudioPlayer @ 92 NONAME + _ZN25CMMAEMCAudioVolumeControl11DoGetLevelLEv @ 93 NONAME + _ZN25CMMAEMCAudioVolumeControl11DoSetLevelLEi @ 94 NONAME + _ZN25CMMAEMCAudioVolumeControl4NewLER18CMMAEMCAudioPlayer @ 95 NONAME + _ZN25CMMAEMCAudioVolumeControlC1ER18CMMAEMCAudioPlayer @ 96 NONAME + _ZN25CMMAEMCAudioVolumeControlC2ER18CMMAEMCAudioPlayer @ 97 NONAME + _ZNK11CMMAControl15PublicClassNameEv @ 98 NONAME + _ZNK14CMMAMIDIPlayer10MidiClientEv @ 99 NONAME + _ZNK16CMMAVideoControl9ClassNameEv @ 100 NONAME + _ZTI10CMMAPlayer @ 101 NONAME + _ZTI11CMMAControl @ 102 NONAME + _ZTI14CMMAMIDIPlayer @ 103 NONAME + _ZTI15CMMAEventSource @ 104 NONAME + _ZTI16CMMAVideoControl @ 105 NONAME + _ZTI17CMMAMMFPlayerBase @ 106 NONAME + _ZTI17CMMAStreamRequest @ 107 NONAME + _ZTI17CMMAVolumeControl @ 108 NONAME + _ZTI18CHXMetaDataUtility @ 109 NONAME + _ZTI18CMMAVideoUrlPlayer @ 110 NONAME + _ZTI20CMMAMMFPlayerFactory @ 111 NONAME + _ZTI26CPlaybackCompletedCallback @ 112 NONAME + _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 113 NONAME + _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 114 NONAME + _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 115 NONAME + _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 116 NONAME + _ZTIN19CMMAStopTimeControl10CStopTimerE @ 117 NONAME + _ZTV10CMMAPlayer @ 118 NONAME + _ZTV11CMMAControl @ 119 NONAME + _ZTV14CMMAMIDIPlayer @ 120 NONAME + _ZTV15CMMAEventSource @ 121 NONAME + _ZTV16CMMAVideoControl @ 122 NONAME + _ZTV17CMMAMMFPlayerBase @ 123 NONAME + _ZTV17CMMAStreamRequest @ 124 NONAME + _ZTV17CMMAVolumeControl @ 125 NONAME + _ZTV18CHXMetaDataUtility @ 126 NONAME + _ZTV18CMMAVideoUrlPlayer @ 127 NONAME + _ZTV20CMMAMMFPlayerFactory @ 128 NONAME + _ZTV26CPlaybackCompletedCallback @ 129 NONAME + _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 130 NONAME + _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 131 NONAME + _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 132 NONAME + _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 133 NONAME + _ZTVN19CMMAStopTimeControl10CStopTimerE @ 134 NONAME + _ZThn12_N16CMMAVideoControl15HandleSwitchOnLEi @ 135 NONAME + _ZThn12_N16CMMAVideoControl17HandleForegroundLEi @ 136 NONAME + _ZThn12_N16CMMAVideoControl21HandleResourceChangeLEi @ 137 NONAME + _ZThn152_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 138 NONAME + _ZThn280_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 139 NONAME + _ZThn280_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 140 NONAME + _ZThn288_N15CMMAVideoPlayer10SourceSizeEv @ 141 NONAME + _ZThn288_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 142 NONAME + _ZThn288_N15CMMAVideoPlayer11SnapshoterLEv @ 143 NONAME + _ZThn288_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 144 NONAME + _ZThn288_N18CMMAVideoUrlPlayerD0Ev @ 145 NONAME + _ZThn288_N18CMMAVideoUrlPlayerD1Ev @ 146 NONAME + _ZThn292_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 147 NONAME + _ZThn292_N15CMMAVideoPlayer14SnapshotBitmapEv @ 148 NONAME + _ZThn292_N15CMMAVideoPlayer15SnapshotEncodedEv @ 149 NONAME + _ZThn292_N18CMMAVideoUrlPlayerD0Ev @ 150 NONAME + _ZThn292_N18CMMAVideoUrlPlayerD1Ev @ 151 NONAME + _ZThn4_N10CMMAPlayerD0Ev @ 152 NONAME + _ZThn4_N10CMMAPlayerD1Ev @ 153 NONAME + _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 154 NONAME + _ZThn4_N18CMMAEMCAudioPlayer14ReadCompletedLEiRK6TDesC8 @ 155 NONAME + _ZThn4_N18CMMAEMCAudioPlayerD0Ev @ 156 NONAME + _ZThn4_N18CMMAEMCAudioPlayerD1Ev @ 157 NONAME + _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 158 NONAME + _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 159 NONAME + _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 160 NONAME + _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 161 NONAME + _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 162 NONAME + _ZThn8_N16CMMAVideoControlD0Ev @ 163 NONAME + _ZThn8_N16CMMAVideoControlD1Ev @ 164 NONAME diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/exports.inf --- a/javauis/mmapi_akn/build/exports.inf Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/exports.inf Mon Jun 21 15:32:50 2010 +0300 @@ -17,6 +17,7 @@ PRJ_EXPORTS #include #include "dc_exports.inf" +#include "../../../inc/build_defines.hrh" ../camerasound/data/CamcorderJavaCapture.wav /epoc32/release/winscw/udeb/z/system/sounds/digital/CamcorderJavaCapture.wav ../camerasound/data/CamcorderJavaCapture.wav /epoc32/release/winscw/urel/z/system/sounds/digital/CamcorderJavaCapture.wav @@ -28,6 +29,36 @@ ../camerasound/data/CamcorderJavaStart.wav /epoc32/release/armv5/udeb/z/system/sounds/digital/CamcorderJavaStart.wav ../camerasound/data/CamcorderJavaStart.wav /epoc32/release/armv5/urel/z/system/sounds/digital/CamcorderJavaStart.wav +// Added exports to javauis as other components such as broadcast/amms can use these headers +../baseline/inc/cmmaevent.h |../../inc/cmmaevent.h +../baseline/inc/cmmaplayer.h |../../inc/cmmaplayer.h +../baseline/inc/cmmacontrol.h |../../inc/cmmacontrol.h +../baseline/inc/cmmaeventsource.h |../../inc/cmmaeventsource.h +../baseline/inc/cmmaplayerevent.h |../../inc/cmmaplayerevent.h +../baseline/inc/cmmasourcestream.h |../../inc/cmmasourcestream.h +../baseline/inc/cmmavideocontrol.h |../../inc/cmmavideocontrol.h +../baseline/inc/cmmavolumecontrol.h |../../inc/cmmavolumecontrol.h +../baseline/inc/cmmammfplayerfactory.h |../../inc/cmmammfplayerfactory.h +../baseline/inc/cmmaaudiovolumecontrol.h |../../inc/cmmaaudiovolumecontrol.h +../baseline/inc/mmmadisplay.h |../../inc/mmmadisplay.h +../baseline/inc/mmmasnapshot.h |../../inc/mmmasnapshot.h +../baseline/inc/mmmaguiplayer.h |../../inc/mmmaguiplayer.h +../baseline/inc/mmmaeventposter.h |../../inc/mmmaeventposter.h +../baseline/inc/mmmadisplaywindow.h |../../inc/mmmadisplaywindow.h +../baseline/inc/mmmaplayerfactory.h |../../inc/mmmaplayerfactory.h +../baseline/inc/mmmaplayerstatelistener.h |../../inc/mmmaplayerstatelistener.h +../baseline/inc/mmmasourcestreamlistener.h |../../inc/mmmasourcestreamlistener.h +../baseline/inc/mmmasnapshotreadycallback.h |../../inc/mmmasnapshotreadycallback.h + +#ifdef RD_JAVA_NGA_ENABLED +../baseline/inc.nga/cmmavideoplayer.h |../../inc/cmmavideoplayer.h +../baseline/inc.nga/cmmasurfacewindow.h |../../inc/cmmasurfacewindow.h +#endif + +#ifdef RD_JAVA_HTTP_EMC_ENABLED +../baseline/inc.emc/cmmamanager.h |../../inc/cmmamanager.h +#endif + // Generic configuration interface for mobilemedia cenrep settings // mobilemedia_102828A1 implementation specifics for cenrep data ../conf/mobilemedia.confml APP_LAYER_CONFML(mobilemedia.confml) diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/javamobilemedia.pro --- a/javauis/mmapi_akn/build/javamobilemedia.pro Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/javamobilemedia.pro Mon Jun 21 15:32:50 2010 +0300 @@ -113,7 +113,9 @@ -lmediaclientvideo \ -lmidiclient \ -lws32 \ - -lhxmetadatautil + -lhxmetadatautil \ + -lprofileeng \ + -laccmonitor !contains(PROJECT_DEFINES,RD_JAVA_HTTP_EMC_ENABLED) { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/build/javamobilemedia_0x2002DCC2.mmp --- a/javauis/mmapi_akn/build/javamobilemedia_0x2002DCC2.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/build/javamobilemedia_0x2002DCC2.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -256,6 +256,8 @@ LIBRARY midiclient.lib LIBRARY ws32.lib STATICLIBRARY hxmetadatautil.lib +LIBRARY profileeng.lib +LIBRARY accmonitor.lib LIBRARY javautils.lib LIBRARY libpthread.lib LIBRARY libstdcppv5.lib @@ -318,3 +320,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javamobilemedia.def +#elif defined EABI +DEFFILE ./eabi/javamobilemedia.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/src_drmv2/inc/cmmadrmaudioplayer.h --- a/javauis/mmapi_akn/src_drmv2/inc/cmmadrmaudioplayer.h Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/src_drmv2/inc/cmmadrmaudioplayer.h Mon Jun 21 15:32:50 2010 +0300 @@ -56,7 +56,7 @@ CDrmPlayerUtility* DRMUtility() const; public: // from CMMAPlayer - void StartL(); + void StartL(TBool aPostEvent); void StopL(TBool aPostEvent); void RealizeL(); void PrefetchL(); diff -r 71c436fe3ce0 -r 4376525cdefb javauis/mmapi_akn/src_drmv2/src/cmmadrmaudioplayer.cpp --- a/javauis/mmapi_akn/src_drmv2/src/cmmadrmaudioplayer.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/mmapi_akn/src_drmv2/src/cmmadrmaudioplayer.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -99,7 +99,7 @@ DEBUG("MMA: CMMAMidiPlayer: DeallocateL -"); } -void CMMADRMAudioPlayer::StartL() +void CMMADRMAudioPlayer::StartL(TBool aPostEvent) { // start can't be called to not ready player ASSERT(iState == EPrefetched); @@ -125,9 +125,12 @@ iUtility->Play(); - // inform java side PostActionCompleted(KErrNone); // java start return - PostLongEvent(CMMAPlayerEvent::EStarted, time); + if (aPostEvent) + { + // inform java side + PostLongEvent(CMMAPlayerEvent::EStarted, time); + } ChangeState(EStarted); } @@ -275,7 +278,7 @@ if (iRepeatForever || iRepeatCount < iRepeatNumberOfTimes) { - StartL(); + StartL(ETrue); } else { diff -r 71c436fe3ce0 -r 4376525cdefb javauis/nokiasound_akn/build/javanokiasound_0x2002DCC4.mmp --- a/javauis/nokiasound_akn/build/javanokiasound_0x2002DCC4.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/nokiasound_akn/build/javanokiasound_0x2002DCC4.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -143,3 +143,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javanokiasound.def +#elif defined EABI +DEFFILE ./eabi/javanokiasound.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/nokiasound_akn/src/cmidsound.cpp --- a/javauis/nokiasound_akn/src/cmidsound.cpp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/nokiasound_akn/src/cmidsound.cpp Mon Jun 21 15:32:50 2010 +0300 @@ -197,8 +197,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; } @@ -252,8 +252,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; } @@ -285,8 +285,8 @@ TInt CMIDSound::PlayerState() { JELOG2(EJavaUI); - TInt result; - CallMethodL(result, this, &CMIDSound::State, this); + TInt result = 0; + CallMethod(result, this, &CMIDSound::State, this); return result; } diff -r 71c436fe3ce0 -r 4376525cdefb javauis/remconobserver_akn/build/javaremconobserver_0x2002DCCA.mmp --- a/javauis/remconobserver_akn/build/javaremconobserver_0x2002DCCA.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/remconobserver_akn/build/javaremconobserver_0x2002DCCA.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -133,3 +133,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaremconobserver.def +#elif defined EABI +DEFFILE ./eabi/javaremconobserver.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/runtimeui_akn/build/javaruntimeui_0x2002DCCD.mmp --- a/javauis/runtimeui_akn/build/javaruntimeui_0x2002DCCD.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/runtimeui_akn/build/javaruntimeui_0x2002DCCD.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -139,3 +139,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javaruntimeui.def +#elif defined EABI +DEFFILE ./eabi/javaruntimeui.def +#endif diff -r 71c436fe3ce0 -r 4376525cdefb javauis/softnotification_akn/build/javasoftnotification_0x2002DCD6.mmp --- a/javauis/softnotification_akn/build/javasoftnotification_0x2002DCD6.mmp Wed Jun 09 09:34:07 2010 +0300 +++ b/javauis/softnotification_akn/build/javasoftnotification_0x2002DCD6.mmp Mon Jun 21 15:32:50 2010 +0300 @@ -142,3 +142,9 @@ #endif STDCPP + +#ifdef WINSCW +DEFFILE ./bwins/javasoftnotification.def +#elif defined EABI +DEFFILE ./eabi/javasoftnotification.def +#endif