--- 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
--- 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
--- 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:
--- 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
Binary file build/loc/resources.jar has changed
Binary file build/loc/resources_qt.jar has changed
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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";
}
/**
--- 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
--- 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;
}
/**
--- 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
--- 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)
--- 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
--- 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)
--- 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
--- 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)
--- 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
--- 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
--- 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)
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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;
}
--- 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
--- 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;
}
--- 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;
}
--- 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";
}
--- 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";
}
--- 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;
}
--- 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;
}
--- 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";
}
--- 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";
}
--- 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<policyPermissions.length; i++)
{
if (policyPermissions[i].getType()
- == PolicyBasedPermission.ASSIGNED_TYPE)
+ == PolicyBasedPermission.ASSIGNED_TYPE
+ || policyPermissions[i].getType()
+ == PolicyBasedPermission.USER_ASSIGNED_TYPE)
{
PolicyBasedPermissionImpl p1 = new PolicyBasedPermissionImpl(
policyPermissions[i]);
@@ -609,6 +612,7 @@
policyPermissions[i].getName(),
policyPermissions[i].getTarget(),
policyPermissions[i].getActionList(),
+ policyPermissions[i].getType(),
policyPermissions[i].getUserSecuritySettings()));
}
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicy.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicy.java Mon Jun 21 15:32:50 2010 +0300
@@ -132,13 +132,14 @@
int domainLength = buf[index];
index++;
protectionDomain = new String(buf, index, domainLength);
+ boolean activeSettings = true;
index+= domainLength;
int permissions = buf[index];
index++;
policyPermissions = new SecurityPolicyPermission[permissions];
for (int i=0; i<permissions; i++)
{
- policyPermissions[i] = SecurityPolicyPermission.getFromBytes(buf);
+ policyPermissions[i] = SecurityPolicyPermission.getFromBytes(buf, activeSettings);
}
}
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermission.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermission.java Mon Jun 21 15:32:50 2010 +0300
@@ -52,12 +52,13 @@
String name,
String target,
String actionList,
+ int type,
SecurityPolicyPermissionSettings settings)
{
this.name = name;
this.target = target;
this.actionList = actionList;
- this.type = USER_TYPE;
+ this.type = type;
this.settings = settings;
}
@@ -65,13 +66,18 @@
String name,
String target,
String actionList,
+ SecurityPolicyPermissionSettings settings)
+ {
+ this(name, target, actionList, USER_TYPE, settings);
+ }
+
+ public SecurityPolicyPermission(
+ String name,
+ String target,
+ String actionList,
int type)
{
- this.name = name;
- this.target = target;
- this.actionList = actionList;
- // Check type
- this.type = type;
+ this(name, target, actionList, type, null);
}
public int getType()
@@ -145,7 +151,7 @@
return oStream.toByteArray();
}
- public static SecurityPolicyPermission getFromBytes(byte[] buf)
+ public static SecurityPolicyPermission getFromBytes(byte[] buf, boolean activeSettings)
{
int type = buf[SecurityPolicy.index];
SecurityPolicy.index++;
@@ -155,10 +161,12 @@
SecurityPolicy.index += nameLen;
String target = readString(buf);
String actionList = readString(buf);
- if (type == USER_TYPE)
+ if (type == USER_TYPE || type == USER_ASSIGNED_TYPE)
{
- return new SecurityPolicyPermission(name, target, actionList,
- SecurityPolicyPermissionSettings.getFromBytes(buf));
+ return new SecurityPolicyPermission(
+ name, target, actionList, type,
+ SecurityPolicyPermissionSettings.getFromBytes(
+ buf, activeSettings));
}
return new SecurityPolicyPermission(name, target, actionList, type);
}
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermissionSettings.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermissionSettings.java Mon Jun 21 15:32:50 2010 +0300
@@ -30,15 +30,37 @@
private String name;
private int currentInteractionMode;
private int[] allowedInteractionModes;
+ private boolean active;
+
+ public SecurityPolicyPermissionSettings(
+ String name)
+ {
+ this(name, UNDEFINED_INTERACTION_MODE, null, true);
+ }
public SecurityPolicyPermissionSettings(
String name,
int currentInteractionMode,
int[] allowedInteractionModes)
{
+ this(name, currentInteractionMode, allowedInteractionModes, true);
+ }
+
+ public SecurityPolicyPermissionSettings(
+ String name,
+ int currentInteractionMode,
+ int[] allowedInteractionModes,
+ boolean activeSettings)
+ {
this.name = name;
this.currentInteractionMode = currentInteractionMode;
this.allowedInteractionModes = allowedInteractionModes;
+ this.active = activeSettings;
+ }
+
+ public boolean isActive()
+ {
+ return active;
}
public String getName()
@@ -166,7 +188,7 @@
return oStream.toByteArray();
}
- public static SecurityPolicyPermissionSettings getFromBytes(byte[] buf)
+ public static SecurityPolicyPermissionSettings getFromBytes(byte[] buf, boolean activeSettings)
{
int nameLen = buf[SecurityPolicy.index];
SecurityPolicy.index++;
@@ -181,7 +203,7 @@
allowedInteractionModes[i] = buf[SecurityPolicy.index];
SecurityPolicy.index++;
}
- return new SecurityPolicyPermissionSettings(name, currentInteractionMode, allowedInteractionModes);
+ return new SecurityPolicyPermissionSettings(name, currentInteractionMode, allowedInteractionModes, activeSettings);
}
}
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java Mon Jun 21 15:32:50 2010 +0300
@@ -21,6 +21,7 @@
import java.util.Vector;
import java.security.AccessControlException;
import com.nokia.mj.impl.utils.Uid;
+import com.nokia.mj.impl.security.midp.common.PolicyBasedPermission;
import com.nokia.mj.impl.security.midp.common.PolicyBasedPermissionImpl;
import com.nokia.mj.impl.security.midp.common.UserPermission;
import com.nokia.mj.impl.security.midp.common.UserSecuritySettings;
@@ -256,7 +257,7 @@
*/
private void handleUserPermission(
Permission checkedPermission,
- UserPermission resolvedPermission,
+ PolicyBasedPermissionImpl resolvedPermission,
SecurityStorage storage)
{
UserSecuritySettings settings = resolvedPermission
@@ -300,6 +301,14 @@
new java.security.AccessControlException(
"Permission " + checkedPermission + " not allowed"));
}
+
+ // if the permission was assigned or the settings were not active,
+ // then activate the user settings
+ if (resolvedPermission.getType() != PolicyBasedPermission.USER_TYPE
+ || !settings.isActive())
+ {
+ storage.activateUserSecuritySettings(iAppUID, resolvedPermission);
+ }
// if settings have not changed, still do one check on the current
// interaction mode: if it's blanket, mark down that the prompt in
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java Mon Jun 21 15:32:50 2010 +0300
@@ -203,7 +203,9 @@
// add new settings
newPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(
- p.getPermissionInstance(), newSettings));
+ p.getPermissionInstance(),
+ p.getType(),
+ newSettings));
}
else
{
@@ -240,6 +242,7 @@
getResolvedPermission(
requestedPermission,
policyPermission,
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -274,6 +277,7 @@
PolicyBasedPermissionImpl permission1 =
getResolvedPermission(requestedPermission,
policyPermission,
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -307,6 +311,7 @@
// the combined actions
resolvedPermissions.setElementAt(getResolvedPermission(
permission1.getPromptDetails(),
+ p.getType(),
p.getSettings(),
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -358,6 +363,7 @@
(PermisionInstanceAndSettings)tmp.elementAt(0);
tmp.removeElementAt(0);
Permission permission1 = (Permission)instance1.getPermissionInstance();
+ int type = instance1.getType();
UserSecuritySettings settings1 = instance1.getSettings();
String compositeAction = "";
// put the individual actions into a vector so that the composite
@@ -423,6 +429,7 @@
getResolvedPermission(
requestedPermission,
permission1,
+ type,
settings1,
requestedPermission.getClass().getName(),
requestedPermission.getName(),
@@ -452,6 +459,7 @@
private static PolicyBasedPermissionImpl getResolvedPermission(
PermissionBase securityPromptDetails,
+ int type,
UserSecuritySettings userSettings,
String permissionName,
String targetName,
@@ -479,6 +487,7 @@
permissionName,
targetName,
actionList,
+ type,
userSettings,
securityPromptDetails2);
}
@@ -486,6 +495,7 @@
private static PolicyBasedPermissionImpl getResolvedPermission(
Permission requestedPermission,
Object policyPermission,
+ int type,
UserSecuritySettings userSettings,
String permissionName,
String targetName,
@@ -514,6 +524,7 @@
permissionName,
targetName,
actionList,
+ type,
userSettings,
securityPromptDetails);
}
@@ -545,7 +556,8 @@
policyPermissions[i].getActionList());
policyPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(p,
- policyPermissions[i].getUserSecuritySettings()));
+ policyPermissions[i].getType(),
+ policyPermissions[i].getUserSecuritySettings()));
}
catch (InstantiationException e)
{
@@ -590,7 +602,8 @@
grantedPermission.getActionList());
grantedPermissionInstancesAndSettings.addElement(
new PermisionInstanceAndSettings(p,
- grantedPermission.getUserSecuritySettings()));
+ grantedPermission.getType(),
+ grantedPermission.getUserSecuritySettings()));
}
catch (InstantiationException e)
{
@@ -703,11 +716,13 @@
private static class PermisionInstanceAndSettings
{
private Object permissionObject;
+ private int type;
private UserSecuritySettings settings;
- public PermisionInstanceAndSettings(Object permissionObject, UserSecuritySettings settings)
+ public PermisionInstanceAndSettings(Object permissionObject, int type, UserSecuritySettings settings)
{
this.permissionObject = permissionObject;
+ this.type = type;
this.settings = settings;
}
@@ -720,5 +735,10 @@
{
return settings;
}
+
+ public int getType()
+ {
+ return type;
+ }
}
}
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPromptHandler.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPromptHandler.java Mon Jun 21 15:32:50 2010 +0300
@@ -23,6 +23,7 @@
import com.nokia.mj.impl.security.midp.common.UserPermission;
import com.nokia.mj.impl.security.common.PermissionBase;
import com.nokia.mj.impl.security.utils.SecurityPromptMessage;
+import com.nokia.mj.impl.security.utils.Logger;
import com.nokia.mj.impl.rt.ui.RuntimeUiFactory;
import com.nokia.mj.impl.rt.ui.RuntimeUi;
import com.nokia.mj.impl.rt.ui.ConfirmData;
@@ -171,6 +172,12 @@
.getSecurityPromptQuestion(currentInteractionMode);
break;
}
+ if (promptText == null)
+ {
+ // no text to show -> hande it as deny
+ Logger.logWarning("User permission was denied by platform since it did not provide any security prompt question " + userPermission);
+ return handleDenyAnswer(settings);
+ }
// check if the two texts are equal
if ((mostPowerfulInteractionModeText != null
&& mostPowerfulInteractionModeText.equalsIgnoreCase(
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java 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://*"));
--- 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();
--- 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()
--- 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);
--- 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()
--- 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;
+ }
}
--- 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()
{
--- 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
--- 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 <openssl/err.h>
#include <openssl/rsa.h>
#include <openssl/sha.h>
-#include <sys/time.h>
#include <string.h>
using namespace java::security;
@@ -455,9 +455,7 @@
break;
}
- struct timeval tv;
- int i = gettimeofday(&tv, NULL);
- X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, tv.tv_sec);
+ X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, TelUtils::getSecureTime());
// set the callback for validation - needed for the critical extension
// used by developer certificates
X509_STORE_CTX_set_verify_cb(x509_ctx, verify_callback);
@@ -475,7 +473,7 @@
{
bool extKeyUsageKnown = false;
char EXT_KEY_USAGE_OID[80];
- for (i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++)
+ for (int i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++)
{
ASN1_OBJECT *usage = sk_ASN1_OBJECT_value(extKeyUsage,i);
OBJ_obj2txt(EXT_KEY_USAGE_OID,
--- a/javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java 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;
--- 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()
{
--- 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";
}
--- 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;
}
--- 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;
}
--- 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";
+}
--- 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";
+}
--- /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;
+}
--- /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;
+}
--- /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
--- /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
--- /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
--- 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
--- 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
--- 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://*
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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=="));
--- 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;
}
--- 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
--- 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<perms1.size(); i++)
{
- String[] permTokens = Tokenizer.split((String)perms1.get(i), ",");
+ String[] permTokens = Tokenizer.split((String)perms1.get(i), "?");
int currentToken = 0;
int type = getType(permTokens[currentToken]);
currentToken++;
@@ -344,7 +344,7 @@
String name = null;
String target = null;
String actionList = null;
- if (type == PolicyBasedPermission.USER_TYPE)
+ if (permTokens.length == 3)
{
String[] settingsProps = Tokenizer.split(permTokens[currentToken],":");
String settingsName = settingsProps[0];
@@ -361,30 +361,33 @@
settings = new UserSecuritySettingsImpl(settingsName, currentInteractionMode, allowedInteractionModes);
currentToken++;
}
- name = permTokens[currentToken];
+ String[] permDetails = Tokenizer.split(permTokens[currentToken], ",");
+ currentToken = 0;
+ name = permDetails[currentToken];
MIDPPermission mappedPerm = PermissionMappingTable.get(name);
if (mappedPerm != null)
{
name = mappedPerm.getName();
}
currentToken++;
- if (permTokens.length > currentToken)
+ if (permDetails.length > currentToken)
{
- target = permTokens[currentToken];
+ target = permDetails[currentToken];
currentToken++;
}
- if (permTokens.length > currentToken)
+ if (permDetails.length > currentToken)
{
- actionList = permTokens[currentToken];
+ actionList = permDetails[currentToken];
actionList = actionList.replace(':',',');
}
- PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, settings);
+ PolicyBasedPermissionImpl perm1 = new PolicyBasedPermissionImpl(name, target, actionList, type, settings);
for (int j=0; j<perms2.length; j++)
{
PolicyBasedPermissionImpl perm2 = new PolicyBasedPermissionImpl(
perms2[j].getName(),
perms2[j].getTarget(),
perms2[j].getActionList(),
+ perms2[j].getType(),
(perms2[j].getUserSecuritySettings() != null ?
(new UserSecuritySettingsImpl(
perms2[j].getUserSecuritySettings().getName(),
@@ -420,6 +423,10 @@
{
return PolicyBasedPermission.ASSIGNED_TYPE;
}
+ else if (sType.equalsIgnoreCase("user_assigned"))
+ {
+ return PolicyBasedPermission.USER_ASSIGNED_TYPE;
+ }
return -1;
}
--- a/javacommons/utils/build/javautils_0x2002DCDA.mmp Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/utils/build/javautils_0x2002DCDA.mmp Mon Jun 21 15:32:50 2010 +0300
@@ -181,3 +181,9 @@
#endif
STDCPP
+
+#ifdef WINSCW
+DEFFILE ./bwins/javautils.def
+#elif defined EABI
+DEFFILE ./eabi/javautils.def
+#endif
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Mon Jun 21 15:32:50 2010 +0300
@@ -260,6 +260,18 @@
}
return toString();
}
+ /**
+ * Applies convertion from european digits into arabic-indic digits
+ * based on existing language settings
+ *
+ * @param str String which might contain european digits
+ * @return A string identical with the provided string but with the
+ * european digits (if any) converted to arabic-indic digits
+ */
+ public static String formatDigits(String str)
+ {
+ return _formatDigits(str);
+ }
/*** ----------------------------- PRIVATE ---------------------------- */
@@ -358,4 +370,14 @@
*
*/
private native String _formatDate(long timeInMilliSecs);
+
+ /**
+ * Applies convertion from european digits into arabic-indic digits
+ * based on existing language settings
+ *
+ * @param str String which might contain european digits
+ * @return A string identical with the provided string but with the
+ * european digits (if any) converted to arabic-indic digits
+ */
+ private static native String _formatDigits(String str);
}
--- a/javacommons/utils/src.s60/formatternative.cpp Wed Jun 09 09:34:07 2010 +0300
+++ b/javacommons/utils/src.s60/formatternative.cpp Mon Jun 21 15:32:50 2010 +0300
@@ -19,10 +19,12 @@
//#include <avkon.rsg>
#include <memory>
#include <stringresourcereader.h>
+#include <aknutils.h>
#include "com_nokia_mj_impl_utils_Formatter.h"
#include "com_nokia_mj_impl_utils_ResourceLoader.h"
#include "javajniutils.h"
+#include "s60commonutils.h"
#include "logger.h"
enum EDateTimeFormat
@@ -41,6 +43,7 @@
// const TInt KMaxDateTimeStringSize = 50;
const TInt KMaxDateFormatSize = 30;
const TInt KMaxNumberFormatSize = 40;
+using namespace java::util;
// _LIT( KAvkonResFile, "z:\\resource\\avkon.rsc" );
@@ -65,6 +68,7 @@
"Cannot format %d to current locale. Error: %d", aNumber, error);
}
+ AknTextUtils::LanguageSpecificNumberConversion( numberPtr );
return aJni->NewString(
(const jchar*)numberPtr.Ptr(), numberPtr.Length());
}
@@ -105,3 +109,15 @@
return (jint)User::Language();
}
+JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_utils_Formatter__1formatDigits
+ (JNIEnv * aEnv, jclass, jstring str)
+{
+ jstring ret = str;
+ std::wstring wstr = JniUtils::jstringToWstring(aEnv, str);
+ HBufC* buf = S60CommonUtils::wstringToDes(wstr.c_str());
+ TPtr ptr(buf->Des());
+ AknTextUtils::LanguageSpecificNumberConversion( ptr );
+ ret = S60CommonUtils::NativeToJavaString(*aEnv, ptr);
+ delete buf; buf = NULL;
+ return ret;
+}
--- a/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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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)
--- 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
--- 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)
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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;
}
--- 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";
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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;
}
--- 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
--- 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
--- 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
--- 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++;
}
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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";
}
/**
--- 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.
--- 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
--- 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
--- 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
--- 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
--- 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; j<aMidletSuiteSecuritySettings.size(); j++)
+ {
+ if (settingsName == aMidletSuiteSecuritySettings[j].getName())
+ {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
{
- settings = MidletSuiteSecuritySettings(
- settingsName,
- currentInteractionMode,
- allowedInteractionModes);
+ 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)
+ {
+ 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)
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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);
}
--- 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
--- 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)
--- 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
;
--- 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
Binary file javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar has changed
--- 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<actions.length; i++)
{
- perms.add(getPermission(pName,
- pTarget, actions[i], type, settings));
+ if (unconfirmedSettings == null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ pName, pTarget, actions[i], type, settings));
+ }
+ else
+ {
+ unconfirmedPerms.add(getSecurityPolicyPermission(
+ pName, pTarget, actions[i], type, unconfirmedSettings));
+ }
}
}
else
{
- perms.add(getPermission(pName,
- pTarget, pActionList, type, settings));
+ if (unconfirmedSettings == null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ pName, pTarget, pActionList, type, settings));
+ }
+ else
+ {
+ unconfirmedPerms.add(getSecurityPolicyPermission(
+ pName, pTarget, pActionList, type, unconfirmedSettings));
+ }
}
find("permission");
}
find("grant", true);
}
- if (perms.size() == 0)
+ if (perms.size() == 0 && unconfirmedPerms.size() == 0)
{
throw new IllegalArgumentException(
"Invalid security policy - missing/invalid permissions information");
}
+ // confirm the unconfirmed permissions: look for settings in the perms ->
+ // if found then use those settings, otherwise use the unconfirmed settings
+ for(int i=0; i<unconfirmedPerms.size(); i++)
+ {
+ SecurityPolicyPermission unconfirmedPerm =
+ (SecurityPolicyPermission) unconfirmedPerms
+ .elementAt(i);
+ SecurityPolicyPermissionSettings confirmedSettings =
+ (SecurityPolicyPermissionSettings)allSettings
+ .get(unconfirmedPerm.getUserSecuritySettings().getName());
+ if (confirmedSettings != null)
+ {
+ perms.add(getSecurityPolicyPermission(
+ unconfirmedPerm.getName(),
+ unconfirmedPerm.getTarget(),
+ unconfirmedPerm.getActionList(),
+ unconfirmedPerm.getType(),
+ confirmedSettings));
+ }
+ else
+ {
+ perms.add(unconfirmedPerm);
+ }
+ }
SecurityPolicyPermission[] permissions
= new SecurityPolicyPermission[perms.size()];
perms.copyInto(permissions);
@@ -463,22 +553,18 @@
tokens.copyInto(strTokens);
return strTokens;
}
-
- private SecurityPolicyPermission getPermission(String pName,
- String pTarget,
- String pAction,
- int pType,
- SecurityPolicyPermissionSettings pSettings)
+
+ private SecurityPolicyPermission getSecurityPolicyPermission(
+ String name,
+ String target,
+ String actionList,
+ int type,
+ SecurityPolicyPermissionSettings settings)
{
- if (pSettings == null)
+ if (settings == null && type == PolicyBasedPermission.USER_ASSIGNED_TYPE)
{
- return new SecurityPolicyPermission(
- pName, pTarget, pAction, pType);
+ return new SecurityPolicyPermission(name, target, actionList, PolicyBasedPermission.ASSIGNED_TYPE);
}
- else
- {
- return new SecurityPolicyPermission(
- pName, pTarget, pAction, pSettings);
- }
+ return new SecurityPolicyPermission(name, target, actionList, type, settings);
}
}
--- a/javatools/tckrunner/runner/build/tckrunner_0x2002DCE3.mmp Wed Jun 09 09:34:07 2010 +0300
+++ b/javatools/tckrunner/runner/build/tckrunner_0x2002DCE3.mmp Mon Jun 21 15:32:50 2010 +0300
@@ -134,3 +134,9 @@
#endif
STDCPP
+
+#ifdef WINSCW
+DEFFILE ./bwins/tckrunner.def
+#elif defined EABI
+DEFFILE ./eabi/tckrunner.def
+#endif
--- a/javauis/amms_akn/build/javaamms_0x2002DC96.mmp Wed Jun 09 09:34:07 2010 +0300
+++ b/javauis/amms_akn/build/javaamms_0x2002DC96.mmp Mon Jun 21 15:32:50 2010 +0300
@@ -279,3 +279,9 @@
#endif
STDCPP
+
+#ifdef WINSCW
+DEFFILE ./bwins/javaamms.def
+#elif defined EABI
+DEFFILE ./eabi/javaamms.def
+#endif
--- a/javauis/amms_akn/mmacontrol/inc/cammsaudiooutputcontrol.h Wed Jun 09 09:34:07 2010 +0300
+++ b/javauis/amms_akn/mmacontrol/inc/cammsaudiooutputcontrol.h Mon Jun 21 15:32:50 2010 +0300
@@ -30,7 +30,7 @@
#include <AccMonitorInfo.h>
-
+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;
--- 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 <AudioPreference.h>
#include <jdebug.h>
#include "cammsaudiooutputcontrol.h"
+#include "cmmavolumecontrol.h"
#include <cmmaplayerevent.h>
#include <cmmaaudioplayer.h>
#include <cmmavideoplayer.h>
@@ -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<KEventMessageSize> 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<KEventMessageSize> 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<KEventMessageSize> 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);
- }
}
--- 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
--- 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;
--- 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:
--- 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
--- 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
--- 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;
};
--- 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)
--- 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;
}
}
}
--- 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)
--- 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:
--- 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();
}
--- 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;
--- 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"/>
+
+ <target name="create.internal.api.jar">
+ <omj.internal.apis includes="com/nokia/mj/impl/rt/legacy/MIDEventServer.class,
+ com/nokia/mj/impl/rt/legacy/Security.class"/>
+ </target>
+
</project>
--- a/javauis/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
--- 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
--- 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
--- 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
/**
--- 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;
};
--- 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;
+
/**
* <P>
* A <code>CanvasGraphicsItem</code> 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);
--- 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.
+ * <P>
+ * If <code>text</code> parameter is <code>null</code> 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.
+ * <P>
+ * Returns empty string when there is nothing in the system clipboard.
+ * <P>
+ * This method is not supported on S40 platform, returns <code>null</code>.
+ * <P>
+ * @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
--- 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 @@
/**
* <P>
* S60 platform specific extensions to <code>TextEditor</code>. These methods
- * are only available in S60 Java Runtime.
+ * are only available in Java Runtime for Symbian.
* </P>
*
* <P>
@@ -61,6 +61,15 @@
* preferred or enabled.
* </p>
*
+ * <h3>Touch screen virtual keyboard</h3>
+ * <p>
+ * 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.
+ * </p>
* @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;
+
+ /**
* <P>
* If the default indicator location is not used then sets the drawing
* location for input indicators relative to the <code>TextEditor</code>'s
--- /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();
+
+}
--- 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.
* <p>
@@ -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 <code>aParent</code> 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 <code>TextEditor</code> is not added to
* <code>Canvas</code>
*/
- 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.
--- 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.
--- /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. <p>
+ *
+ * MIDlets can obtain an instance of this interface via the {@link TextEditorExtensionAccess} in the
+ * following way:
+ * <pre>
+ * 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
+ * }
+ * </pre>
+ * The instance is associated with the editor it has been obtained from, and controls only this editor.<p>
+ *
+ * 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. <p>
+ *
+ * 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);
+
+
+}
--- 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,
--- 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 <code>true</code> if the <code>Nokia-UI-Enhancement</code>
* 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);
--- 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;
}
/**
--- 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()
{
--- 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 <jutils.h>
#include <jdebug.h>
+/**
+ * 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<MMIDCanvasGraphicsItemPainter>(aNativePeerHandle);
+
+ toolkit->ExecuteV(&Dispose, toolkit, item);
+
+ DEBUG("CanvasGraphicsItemPainter.cpp - dispose -");
+}
+
LOCAL_C void CreateNativePeerL
(
CMIDToolkit* aToolkit,
--- 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 <jdebug.h>
#include <txtetext.h>
#include <baclipb.h>
+#include <s32mem.h>
+#include <s32ucmp.h>
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <txtclipboard.h>
+#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<TText16*>(const_cast<TText8*>(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
--- 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.
--- 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
/**
--- 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;
}
--- 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;
--- 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
+
};
--- 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
--- 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 <MMIDScalable.h>
// EXTERNAL INCLUDES
#include <eikedwin.h>
+#ifdef RD_JAVA_S60_RELEASE_9_2
+#include <coreuiavkonlcdui.h>
+#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.
--- 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
-
-
-
--- 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
--- 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 <javastoragenames.h>
#include <javauid.h>
#include <javasymbianoslayer.h>
+#ifdef RD_JAVA_S60_RELEASE_9_2
+// Used with partial VKB
+#include <aknpriv.hrh>
+#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
}
// ---------------------------------------------------------------------------
--- 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.
}
--- 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.
}
--- 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;
--- 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()
--- 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");
}
--- 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;
--- 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;
--- 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<CEikColumnListBox*>(listBox));
- if(clb)
+ if (clb)
{
clb->EnableStretching(EFalse);
}
@@ -1791,7 +1791,7 @@
{
CEikFormattedCellListBox* fclb =
(static_cast<CEikFormattedCellListBox*>(listBox));
- if(fclb)
+ if (fclb)
{
fclb->EnableStretching(EFalse);
}
--- 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);
--- 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;
--- 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 <MMIDTextEditor.h> // MMIDTextEditorObserver
@@ -29,6 +30,10 @@
#include <eikedwob.h>
#include <j2me/jdebug.h>
+#ifdef RD_JAVA_S60_RELEASE_9_2
+#include <AknPriv.hrh>
+#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);
--- 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();
}
--- 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
--- 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
--- 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);
--- 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();
--- 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,
--- 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,
--- 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
{
--- 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
{
--- 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;
--- 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);
--- 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
--- 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 <AccMonitor.h>
+#include <jutils.h>
#include "cmmaaudioplayer.h"
#include "mmmaguiplayer.h"
#include "mmmasnapshot.h"
#include "cmmasurfacewindow.h"
-#include <jutils.h>
// 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
--- 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);
--- 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();
--- 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();
--- 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);
--- 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);
--- 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();
--- 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 <mprofilechangeobserver.h>
// 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
--- 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;
}
/**
--- 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);
}
--- 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
{
--- 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
--- 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 <AccMonitorInfo.h>
+#include <AccMonitorCapabilities.h>
#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
--- 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<RPointerArray<CAccMonitorInfo>*>(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<KErrorMessageSize> errorMessage;
+ errorMessage.Format(KAccMonError, aError);
+ PostStringEvent(CMMAPlayerEvent::EError, errorMessage);
+}
+
// END OF FILE
--- 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
{
--- 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
}
--- 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
}
--- 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
{
--- 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
}
--- 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());
--- 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
--- 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() -");
}
--- 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)
--- 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);
--- 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 <jdebug.h>
+#include <mprofile.h>
+#include <mprofileengine.h>
+#include <cprofilechangenotifyhandler.h>
_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();
--- 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)
{
--- 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
--- 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 @@
<target name="create.internal.api.jar">
<omj.internal.apis includes="com/nokia/microedition/media/control/ControlImpl.class,
- com/nokia/microedition/media/control/MMAGUIFactory.class"/>
+ 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"/>
</target>
</project>
--- 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<class CMMAPlayer> & 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<class CMMAPlayer> & 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)
--- 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<class CMMAPlayer> & 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<class CMMAPlayer> & 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)
--- 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 ; #<TI>#
- _ZTI11CMMAControl @ 16 NONAME ; #<TI>#
- _ZTI14CMMAMIDIPlayer @ 17 NONAME ; #<TI>#
- _ZTI15CMMAEventSource @ 18 NONAME ; #<TI>#
- _ZTI17CMMAMMFPlayerBase @ 19 NONAME ; #<TI>#
- _ZTI17CMMAStreamRequest @ 20 NONAME ; #<TI>#
- _ZTI26CPlaybackCompletedCallback @ 21 NONAME ; #<TI>#
- _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 22 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 23 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 24 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 25 NONAME ; #<TI>#
- _ZTIN19CMMAStopTimeControl10CStopTimerE @ 26 NONAME ; #<TI>#
- _ZTV10CMMAPlayer @ 27 NONAME ; #<VT>#
- _ZTV11CMMAControl @ 28 NONAME ; #<VT>#
- _ZTV14CMMAMIDIPlayer @ 29 NONAME ; #<VT>#
- _ZTV15CMMAEventSource @ 30 NONAME ; #<VT>#
- _ZTV17CMMAMMFPlayerBase @ 31 NONAME ; #<VT>#
- _ZTV17CMMAStreamRequest @ 32 NONAME ; #<VT>#
- _ZTV26CPlaybackCompletedCallback @ 33 NONAME ; #<VT>#
- _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 34 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 35 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 36 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 37 NONAME ; #<VT>#
- _ZTVN19CMMAStopTimeControl10CStopTimerE @ 38 NONAME ; #<VT>#
- _ZN10CMMAPlayer15PostObjectEventEN15CMMAPlayerEvent10TEventTypeEP8_jobject @ 39 NONAME
- _ZTI17CMMAVolumeControl @ 40 NONAME ; #<TI>#
- _ZTV17CMMAVolumeControl @ 41 NONAME ; #<VT>#
- _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 ; #<TI>#
- _ZTV20CMMAMMFPlayerFactory @ 84 NONAME ; #<VT>#
- _ZThn12_N16CMMAVideoControl15HandleSwitchOnLEi @ 85 NONAME ; #<thunk>#
- _ZThn12_N16CMMAVideoControl17HandleForegroundLEi @ 86 NONAME ; #<thunk>#
- _ZThn12_N16CMMAVideoControl21HandleResourceChangeLEi @ 87 NONAME ; #<thunk>#
- _ZThn152_N18CMMAVideoUrlPlayer11HandleEventERK9TMMFEvent @ 88 NONAME ; #<thunk>#
- _ZThn280_N15CMMAAudioPlayer21ErrorPlaybackCompleteEi @ 89 NONAME ; #<thunk>#
- _ZThn280_N15CMMAAudioPlayer23HandlePlaybackCompleteLEv @ 90 NONAME ; #<thunk>#
- _ZThn288_N18CMMAVideoUrlPlayerD0Ev @ 91 NONAME ; #<thunk>#
- _ZThn288_N18CMMAVideoUrlPlayerD1Ev @ 92 NONAME ; #<thunk>#
- _ZThn292_N18CMMAVideoUrlPlayerD0Ev @ 93 NONAME ; #<thunk>#
- _ZThn292_N18CMMAVideoUrlPlayerD1Ev @ 94 NONAME ; #<thunk>#
- _ZThn4_N18CMMAVideoUrlPlayerD0Ev @ 95 NONAME ; #<thunk>#
- _ZThn4_N18CMMAVideoUrlPlayerD1Ev @ 96 NONAME ; #<thunk>#
- _ZThn4_N20CMMAMMFPlayerFactoryD0Ev @ 97 NONAME ; #<thunk>#
- _ZThn4_N20CMMAMMFPlayerFactoryD1Ev @ 98 NONAME ; #<thunk>#
- _ZThn8_N16CMMAVideoControl13SnapshotReadyEv @ 99 NONAME ; #<thunk>#
- _ZThn8_N16CMMAVideoControlD0Ev @ 100 NONAME ; #<thunk>#
- _ZThn8_N16CMMAVideoControlD1Ev @ 101 NONAME ; #<thunk>#
- _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 ; #<thunk>#
- _ZThn288_N15CMMAVideoPlayer11SetDisplayLEP11MMMADisplay @ 114 NONAME ; #<thunk>#
- _ZThn288_N15CMMAVideoPlayer11SnapshoterLEv @ 115 NONAME ; #<thunk>#
- _ZThn288_N15CMMAVideoPlayer21NotifyWithStringEventEN15CMMAPlayerEvent10TEventTypeERK7TDesC16 @ 116 NONAME ; #<thunk>#
- _ZThn292_N15CMMAVideoPlayer13TakeSnapshotLEP14TRequestStatusRK5TSizeRK17CMMAImageSettings @ 117 NONAME ; #<thunk>#
- _ZThn292_N15CMMAVideoPlayer14SnapshotBitmapEv @ 118 NONAME ; #<thunk>#
- _ZThn292_N15CMMAVideoPlayer15SnapshotEncodedEv @ 119 NONAME ; #<thunk>#
- _ZThn4_N15CMMAVideoPlayer14ReadCompletedLEiRK6TDesC8 @ 120 NONAME ; #<thunk>#
- _ZTI16CMMAVideoControl @ 121 NONAME ; #<TI>#
- _ZTI18CMMAVideoUrlPlayer @ 122 NONAME ; #<TI>#
- _ZTV16CMMAVideoControl @ 123 NONAME ; #<VT>#
- _ZTV18CMMAVideoUrlPlayer @ 124 NONAME ; #<VT>#
+ _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
--- 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 ; #<TI>#
- _ZTI11CMMAControl @ 16 NONAME ; #<TI>#
- _ZTI14CMMAMIDIPlayer @ 17 NONAME ; #<TI>#
- _ZTI15CMMAEventSource @ 18 NONAME ; #<TI>#
- _ZTI17CMMAMMFPlayerBase @ 19 NONAME ; #<TI>#
- _ZTI17CMMAStreamRequest @ 20 NONAME ; #<TI>#
- _ZTI26CPlaybackCompletedCallback @ 21 NONAME ; #<TI>#
- _ZTIN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 22 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 23 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 24 NONAME ; #<TI>#
- _ZTIN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 25 NONAME ; #<TI>#
- _ZTIN19CMMAStopTimeControl10CStopTimerE @ 26 NONAME ; #<TI>#
- _ZTV10CMMAPlayer @ 27 NONAME ; #<VT>#
- _ZTV11CMMAControl @ 28 NONAME ; #<VT>#
- _ZTV14CMMAMIDIPlayer @ 29 NONAME ; #<VT>#
- _ZTV15CMMAEventSource @ 30 NONAME ; #<VT>#
- _ZTV17CMMAMMFPlayerBase @ 31 NONAME ; #<VT>#
- _ZTV17CMMAStreamRequest @ 32 NONAME ; #<VT>#
- _ZTV26CPlaybackCompletedCallback @ 33 NONAME ; #<VT>#
- _ZTVN15CMMAMIDIControl23CChannelVolumeEventWaitE @ 34 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer26CMMAVideoUrlPlayerDelegateE @ 35 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerClipStreamDelegateE @ 36 NONAME ; #<VT>#
- _ZTVN18CMMAVideoUrlPlayer36CMMAVideoUrlPlayerLiveStreamDelegateE @ 37 NONAME ; #<VT>#
- _ZTVN19CMMAStopTimeControl10CStopTimerE @ 38 NONAME ; #<VT>#
- _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
--- 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 <platform_paths.hrh>
#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)
--- 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) {
--- 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
--- 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();
--- 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
{
--- 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
--- 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;
}
--- 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
--- 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
--- 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