javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java
changeset 50 023eef975703
parent 21 2a9601315dfc
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java	Tue Jul 06 20:36:19 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/authorization/AccessControllerImpl.java	Fri Jul 09 16:35:45 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