Revision: v2.1.30 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 15:32:50 +0300
branchRCL_3
changeset 46 4376525cdefb
parent 34 71c436fe3ce0
child 51 b503d7498fb4
child 59 e5618cc85d74
Revision: v2.1.30 Kit: 2010125
build/Makefile.comp
build/Makefile.defs
build/Makefile.nonqt
build/Makefile.subsystem
build/loc/resources.jar
build/loc/resources_qt.jar
build/makefile.javaversion
inc/build_defines.hrh
inc/java.txt
javacommons/comms/build/comms_0x2002DCA6.mmp
javacommons/comms/ipclib/clientserver/build/ipc_0x2002DCB7.mmp
javacommons/connectionmanager/build/javaconnectionmanager_0x2002DCA7.mmp
javacommons/fileutils/build/fileutils_0x2002DCAD.mmp
javacommons/gcfbase/build/javagcf_0x2002DCAE.mmp
javacommons/gcfbase/javasrc/com/nokia/mj/impl/gcf/PushRegistryPermissionImpl.java
javacommons/gcfprotocols/file/build/javafile_0x2002DCAC.mmp
javacommons/gcfprotocols/file/javasrc/com/nokia/mj/impl/file/FileInternalPermission.java
javacommons/gcfprotocols/http/build/javahttp_0x2002DCB1.mmp
javacommons/gcfprotocols/http/javasrc.s60/com/nokia/mj/impl/gcf/protocol/http/HttpPermissionImpl.java
javacommons/gcfprotocols/https/build/javahttps_0x2002DCB2.mmp
javacommons/gcfprotocols/https/javasrc.s60/com/nokia/mj/impl/gcf/protocol/https/HttpsPermissionImpl.java
javacommons/gcfprotocols/secureconnection/build/javassl_0x2002DCD7.mmp
javacommons/gcfprotocols/secureconnection/javasrc/com/nokia/mj/impl/gcf/protocol/ssl/SSLPermissionImpl.java
javacommons/gcfprotocols/socket/serverconnection/build/javasocketscplugin_0x2002DCD5.mmp
javacommons/gcfprotocols/socket/socket/build/javasocket_0x2002DCD4.mmp
javacommons/gcfprotocols/socket/socket/javasrc/com/nokia/mj/impl/gcf/protocol/socket/SocketPermissionImpl.java
javacommons/javaenv/build/javaenv_0x2001B2A5.mmp
javacommons/javastorage/build/javastorage_0x2002DCD8.mmp
javacommons/jvms/j9utils/threaddump/build/javathreaddumper_0x2002DCD9.mmp
javacommons/jvms/nativeportlayer/build/jvmnativeport_0x2002DCDE.mmp
javacommons/security/build/javasecurity_0x2002DCCF.mmp
javacommons/security/data/att_manufacturer.txt
javacommons/security/data/att_operatorextra.txt
javacommons/security/data/msa_manufacturer.txt
javacommons/security/data/msa_operator.txt
javacommons/security/data/msa_trustedthirdparty.txt
javacommons/security/data/msa_untrusted.txt
javacommons/security/data/s60_manufacturer.txt
javacommons/security/data/s60_operator.txt
javacommons/security/data/s60_trustedthirdparty.txt
javacommons/security/data/s60_untrusted.txt
javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java
javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicy.java
javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermission.java
javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyPermissionSettings.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionResolver.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPromptHandler.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PermissionMappingTable.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermission.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/PolicyBasedPermissionImpl.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettings.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/common/UserSecuritySettingsImpl.java
javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java
javacommons/security/src.s60/telutils.cpp
javacommons/security/src.s60/telutils.h
javacommons/security/src/midpauthenticationmoduleimpl.cpp
javacommons/security/tsrc/data/javasrc/invalidjars/ImplementProtectedInterface/myClass.java
javacommons/security/tsrc/data/javasrc/invalidjars/InnerClassImplementsProtectedInterface/myClass.java
javacommons/security/tsrc/data/policies/all.txt
javacommons/security/tsrc/data/policies/test_manufacturer.txt
javacommons/security/tsrc/data/policies/test_operator.txt
javacommons/security/tsrc/data/policies/test_trustedthirdparty.txt
javacommons/security/tsrc/data/policies/test_untrusted.txt
javacommons/security/tsrc/data/validpolicies/assigned_settings_only.txt
javacommons/security/tsrc/data/validpolicies/assigned_settings_orphaned.txt
javacommons/security/tsrc/data/validpolicies/validators/assigned_and_user_settings.txt
javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_only.txt
javacommons/security/tsrc/data/validpolicies/validators/assigned_settings_orphaned.txt
javacommons/security/tsrc/data/validpolicies/validators/domain_without_end_separator.txt
javacommons/security/tsrc/data/validpolicies/validators/identified_thirdparty_like_policy.txt
javacommons/security/tsrc/data/validpolicies/validators/ignore_interaction_modes_for_allowed_group.txt
javacommons/security/tsrc/data/validpolicies/validators/manufacturer_like_policy.txt
javacommons/security/tsrc/data/validpolicies/validators/missing_end_bracket_for_permissions.txt
javacommons/security/tsrc/data/validpolicies/validators/missing_start_bracket_for_permissions.txt
javacommons/security/tsrc/data/validpolicies/validators/operator_like_policy.txt
javacommons/security/tsrc/data/validpolicies/validators/permission_without_end_terminator.txt
javacommons/security/tsrc/data/validpolicies/validators/unidentified_third_party_like_policy.txt
javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/OMJSecurityTests.java
javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/PermissionGranterTests.java
javacommons/security/tsrc/javasrc/com/nokia/mj/impl/security/midp/authorization/SecurityPolicyModuleTests.java
javacommons/security/tsrc/javasrc/com/nokia/mj/tools/security/midp/PolicyEditorTests.java
javacommons/utils/build/javautils_0x2002DCDA.mmp
javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java
javacommons/utils/src.s60/formatternative.cpp
javaextensions/bluetooth/bluecove/build/javabluecove_0x2002DC97.mmp
javaextensions/bluetooth/bluetoothcommons/build/javabluetoothcommons_0x2002DC99.mmp
javaextensions/bluetooth/bluetoothplugins/btgoeppushplugin/build/javabtgoepscplugin_0x2002DC9A.mmp
javaextensions/bluetooth/bluetoothplugins/btjavacaptainplugin/build/javacaptain_ext_btdeviceclassmanager_0x2002DC9D.mmp
javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/build/javabtl2capscplugin_0x2002DC9B.mmp
javaextensions/bluetooth/bluetoothplugins/btspppushplugin/build/javabtsppscplugin_0x2002DC9C.mmp
javaextensions/bluetooth/omjbluetooth/build/javabluetooth_0x2002DC98.mmp
javaextensions/broadcast_stub/build/javabroadcast_0x2002DCE0.mmp
javaextensions/comm/build/javacomm_0x2002DCA5.mmp
javaextensions/comm/javasrc/com/nokia/mj/impl/gcf/protocol/comm/CommPermissionImpl.java
javaextensions/datagram/datagram/build/javadatagram_0x2002DCA9.mmp
javaextensions/datagram/datagram/javasrc/com/nokia/mj/impl/gcf/protocol/datagram/DatagramPermissionImpl.java
javaextensions/datagram/serverconnection/build/javadatagramscplugin_0x2002DCAA.mmp
javaextensions/globalindicators/build/javaglobalindicators_0x2002DCAF.mmp
javaextensions/iapinfo/build/javaiapinfo_0x2002DCB3.mmp
javaextensions/location/build/javalocation_0x2002DCBC.mmp
javaextensions/midppush/build/javapushregistry_0x2002DCC9.mmp
javaextensions/midppush/pushcontroller/build/javapushcontroller_0x2002DCC8.mmp
javaextensions/midppush/pushregistryplugin/build/javacaptain_ext_pushregistryplugin_0x2002DCA2.mmp
javaextensions/midprms_db/build/javarms_0x2002DCCB.mmp
javaextensions/midprms_db/rmsplugin/build/javacaptain_ext_ondemand_2_0x2002DD01.mmp
javaextensions/mobinfo/build/mobinfo_0x2002DCC3.mmp
javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoPermission.java
javaextensions/mobinfo/javasrc.s60/com/nokia/mj/impl/properties/mobinfo/MobileInfoProperties.java
javaextensions/pim/build/javapim_0x2002DCC5.mmp
javaextensions/satsa/build/javasatsa_0x2002DCCE.mmp
javaextensions/sensor/build/javasensor_0x2002DCD0.mmp
javaextensions/webservices/build/javawebservices_0x2002DCDB.mmp
javaextensions/wma/mms/build/javawmamms_0x2002DCDD.mmp
javaextensions/wma/mms/pushplugin/build/javammsscplugin_0x2002DCC1.mmp
javaextensions/wma/sms_cbs/build/javawma_0x2002DCDC.mmp
javaextensions/wma/sms_cbs/javasrc/com/nokia/mj/impl/sms/SMSPermissionImpl.java
javaextensions/wma/sms_cbs/pushplugin/cbs/build/javacbsscplugin_0x2002DCA4.mmp
javaextensions/wma/sms_cbs/pushplugin/sms/build/javasmsscplugin_0x2002DCD3.mmp
javamanager/debugapi/build/debugapi_0x2002DCAB.mmp
javamanager/javabackup/midp2backup/src.s60/javastoragebackuputil.cpp
javamanager/javacaptain/extensionplugins/config/build/javacaptain_ext_config_0x2002DC9E.mmp
javamanager/javacaptain/extensionplugins/javacertstore/build/javacaptain_ext_javacertstore_0x2002DC9F.mmp
javamanager/javacaptain/extensionplugins/preinstallerstarter/build/javacaptain_ext_preinstallerstarter_0x2002DCA0.mmp
javamanager/javacaptain/extensionplugins/storageserver/build/javacaptain_ext_storageserverplugin_0x2002DCA3.mmp
javamanager/javainstaller/installer/build/javainstaller_0x2002DCB4.mmp
javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/utils/AutoStartPermission.java
javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/rt/installer/ApplicationUtilsImpl.java
javamanager/javainstaller/installerui/build/javainstallerui_0x2002DCB6.mmp
javamanager/javaregistry/build/javaregistryclient_0x10282476.mmp
javamanager/javaregistry/javasizehelper/client/build/javasizehelperclient_0x2002DCD1.mmp
javamanager/javaregistry/javasizehelper/server/build/javasizehelperserver_0x2002DCD2.mmp
javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingshandler.cpp
javamanager/preinstaller/build/javapreinstaller_0x2002DCC6.mmp
javaruntimes/installer/starterdll/build/javainstallerstarter_0x2002DCB5.mmp
javaruntimes/jvmargmodifier/default/build/javajvmargsmodifier_0x2002DCB8.mmp
javaruntimes/jvmargmodifier/file/build/javajvmargsmodifierfile_0x2002DCB9.mmp
javaruntimes/midp/runtime/build/javamidpruntime_0x2002DCBF.mmp
javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/MidletLifeCycle.java
javaruntimes/midp/runtimestarter/build/javamidpstarter_0x2002DCC0.mmp
javaruntimes/starter/build/javamidp_installer.pkg
javaruntimes/starter/build/javamidp_template.pkg
javaruntimes/starterutils/build/javaruntimestarterutils_0x2002DCCC.mmp
javatools/javasecuritycustomization/policyeditor/bin/securitypolicyeditor.jar
javatools/javasecuritycustomization/policyeditor/javasrc/com/nokia/mj/tools/security/midp/PolicyEditor.java
javatools/tckrunner/runner/build/tckrunner_0x2002DCE3.mmp
javauis/amms_akn/build/javaamms_0x2002DC96.mmp
javauis/amms_akn/mmacontrol/inc/cammsaudiooutputcontrol.h
javauis/amms_akn/mmacontrol/src/cammsaudiooutputcontrol.cpp
javauis/coreui_akn/build/javacoreui_0x2002DCA8.mmp
javauis/coreui_akn/src/startupscreen/startscreencontainer.cpp
javauis/coreui_akn/src/startupscreen/startscreencontainer.h
javauis/eswt_akn/eswtdirectcontent/build/eswtdirectcontent_0x2002DC94.mmp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/build/eswt_0x2002DC93.mmp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swttree.h
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcaptionedcontrol.cpp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtcomposite.cpp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtdateeditor.cpp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtjavabufferdrawer.cpp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtshell.cpp
javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swttree.cpp
javauis/javalegacyutils/build/build.xml
javauis/javalegacyutils/build/javalegacyutils_0x2002DCBB.mmp
javauis/lcdui_akn/javalcdui/build/javalcdui_0x2002DCBA.mmp
javauis/lcdui_akn/javalcdui/inc.nokialcdui/MMIDTextEditor.h
javauis/lcdui_akn/javalcdui/inc/MMIDCustomComponentContainer.h
javauis/lcdui_akn/javalcdui/inc/lcdui.h
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/Clipboard.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/S60TextEditor.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorExtensionAccess.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorImpl.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorListener.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/TextEditorTouchControl.java
javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java
javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Canvas.java
javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Graphics.java
javauis/lcdui_akn/javalcdui/javasrc/javax/microedition/lcdui/Image.java
javauis/lcdui_akn/javalcdui/src.nokialcdui/CanvasGraphicsItemPainter.cpp
javauis/lcdui_akn/javalcdui/src.nokialcdui/Clipboard.cpp
javauis/lcdui_akn/lcdui/inc/CMIDCanvas.h
javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItem.h
javauis/lcdui_akn/lcdui/inc/CMIDCanvasGraphicsItemPainter.h
javauis/lcdui_akn/lcdui/inc/CMIDCommandList.h
javauis/lcdui_akn/lcdui/inc/CMIDDisplayable.h
javauis/lcdui_akn/lcdui/inc/CMIDTextEditor.h
javauis/lcdui_akn/lcdui/inc/CMIDTextEditorEdwin.h
javauis/lcdui_akn/lcdui/inc/CMIDTextFieldItem.h
javauis/lcdui_akn/lcdui/inc/CMIDUtils.h
javauis/lcdui_akn/lcdui/src/CMIDCanvas.cpp
javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItem.cpp
javauis/lcdui_akn/lcdui/src/CMIDCanvasGraphicsItemPainter.cpp
javauis/lcdui_akn/lcdui/src/CMIDCommandList.cpp
javauis/lcdui_akn/lcdui/src/CMIDDisplayable.cpp
javauis/lcdui_akn/lcdui/src/CMIDEditingStateIndicator.cpp
javauis/lcdui_akn/lcdui/src/CMIDEdwin.cpp
javauis/lcdui_akn/lcdui/src/CMIDEdwinUtils.cpp
javauis/lcdui_akn/lcdui/src/CMIDList.cpp
javauis/lcdui_akn/lcdui/src/CMIDTextBoxQueryDialog.cpp
javauis/lcdui_akn/lcdui/src/CMIDTextEditor.cpp
javauis/lcdui_akn/lcdui/src/CMIDTextEditorEdwin.cpp
javauis/lcdui_akn/lcdui/src/CMIDTextFieldItem.cpp
javauis/m2g_akn/build/javam2g_0x2002DCBD.mmp
javauis/m3g_akn/build/javam3g_0x2002DCBE.mmp
javauis/mmapi_akn/animated_gif/inc/cmmaanimationplayer.h
javauis/mmapi_akn/animated_gif/src/cmmaanimationplayer.cpp
javauis/mmapi_akn/audiostreaming/inc.emc/cmmaaudiostreamplayer.h
javauis/mmapi_akn/audiostreaming/inc.mmf/cmmaaudiostreamplayer.h
javauis/mmapi_akn/audiostreaming/src.emc/cmmaaudiostreamplayer.cpp
javauis/mmapi_akn/audiostreaming/src.mmf/cmmaaudiostreamplayer.cpp
javauis/mmapi_akn/audiostreaming/src/cmmaaudiostreamratecontrol.cpp
javauis/mmapi_akn/baseline/inc.emc/cmmaemcplayerbase.h
javauis/mmapi_akn/baseline/inc.nga/cmmasurfacewindow.h
javauis/mmapi_akn/baseline/inc.nga/cmmavideoplayer.h
javauis/mmapi_akn/baseline/inc/cmmaaudiorecorder.h
javauis/mmapi_akn/baseline/inc/cmmacameraplayer.h
javauis/mmapi_akn/baseline/inc/cmmamidiplayer.h
javauis/mmapi_akn/baseline/inc/cmmammfplayerbase.h
javauis/mmapi_akn/baseline/inc/cmmaplayer.h
javauis/mmapi_akn/baseline/inc/cmmavideourlplayer.h
javauis/mmapi_akn/baseline/inc/cmmavolumecontrol.h
javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VideoControl.java
javauis/mmapi_akn/baseline/javasrc/com/nokia/microedition/media/control/VolumeControl.java
javauis/mmapi_akn/baseline/src.emc/cmmaemcaudioplayer.cpp
javauis/mmapi_akn/baseline/src.emc/cmmaemcplayerbase.cpp
javauis/mmapi_akn/baseline/src.nga/cmmasurfacewindow.cpp
javauis/mmapi_akn/baseline/src.nga/cmmavideoplayer.cpp
javauis/mmapi_akn/baseline/src/cmmaaudioplayer.cpp
javauis/mmapi_akn/baseline/src/cmmaaudiorecorder.cpp
javauis/mmapi_akn/baseline/src/cmmacameraplayer.cpp
javauis/mmapi_akn/baseline/src/cmmamidiplayer.cpp
javauis/mmapi_akn/baseline/src/cmmammfplayerbase.cpp
javauis/mmapi_akn/baseline/src/cmmaplayer.cpp
javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp
javauis/mmapi_akn/baseline/src/cmmavideourlplayer.cpp
javauis/mmapi_akn/baseline/src/cmmavideourlplayerclipstreamdelegate.cpp
javauis/mmapi_akn/baseline/src/cmmavideourlplayerlivestreamdelegate.cpp
javauis/mmapi_akn/baseline/src/cmmavolumecontrol.cpp
javauis/mmapi_akn/baseline/src/player.cpp
javauis/mmapi_akn/baseline/src/volumecontrol.cpp
javauis/mmapi_akn/build/build.xml
javauis/mmapi_akn/build/bwins/javamobilemedia_5_0u.def
javauis/mmapi_akn/build/bwins/javamobilemediau.def
javauis/mmapi_akn/build/eabi/javamobilemedia_5_0u.def
javauis/mmapi_akn/build/eabi/javamobilemediau.def
javauis/mmapi_akn/build/exports.inf
javauis/mmapi_akn/build/javamobilemedia.pro
javauis/mmapi_akn/build/javamobilemedia_0x2002DCC2.mmp
javauis/mmapi_akn/src_drmv2/inc/cmmadrmaudioplayer.h
javauis/mmapi_akn/src_drmv2/src/cmmadrmaudioplayer.cpp
javauis/nokiasound_akn/build/javanokiasound_0x2002DCC4.mmp
javauis/nokiasound_akn/src/cmidsound.cpp
javauis/remconobserver_akn/build/javaremconobserver_0x2002DCCA.mmp
javauis/runtimeui_akn/build/javaruntimeui_0x2002DCCD.mmp
javauis/softnotification_akn/build/javasoftnotification_0x2002DCD6.mmp
--- 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