/hg/icedtea-web: Implemented general solution for remembering of...

jvanek at icedtea.classpath.org jvanek at icedtea.classpath.org
Fri Jun 12 14:49:43 UTC 2015


changeset 0afcc93fb7fb in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=0afcc93fb7fb
author: Jiri Vanek <jvanek at redhat.com>
date: Fri Jun 12 16:49:07 2015 +0200

	Implemented general solution for remembering of various dialogues


diffstat:

 ChangeLog                                                                                                                |    5 +
 netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletActionTableModel.java                                               |   32 +-
 netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java                                             |   63 +-
 netx/net/sourceforge/jnlp/resources/Messages.properties                                                                  |    4 +-
 netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java                                                               |    2 +-
 netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java                                                     |   59 +-
 netx/net/sourceforge/jnlp/security/SecurityDialogs.java                                                                  |   70 +-
 netx/net/sourceforge/jnlp/security/VariableX509TrustManager.java                                                         |   11 +-
 netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletActionEntry.java                                 |    2 +-
 netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletActionStorage.java                               |    9 +-
 netx/net/sourceforge/jnlp/security/appletextendedsecurity/UnsignedAppletTrustConfirmation.java                           |  110 +-
 netx/net/sourceforge/jnlp/security/appletextendedsecurity/impl/UnsignedAppletActionStorageExtendedImpl.java              |   28 +-
 netx/net/sourceforge/jnlp/security/appletextendedsecurity/impl/UnsignedAppletActionStorageImpl.java                      |   15 +-
 netx/net/sourceforge/jnlp/security/dialogresults/AccessWarningPaneComplexReturn.java                                     |   48 +-
 netx/net/sourceforge/jnlp/security/dialogresults/BasicDialogValue.java                                                   |   25 +-
 netx/net/sourceforge/jnlp/security/dialogresults/Yes.java                                                                |   16 +
 netx/net/sourceforge/jnlp/security/dialogresults/YesCancel.java                                                          |    4 +-
 netx/net/sourceforge/jnlp/security/dialogresults/YesNo.java                                                              |    2 +-
 netx/net/sourceforge/jnlp/security/dialogresults/YesNoCancel.java                                                        |    2 +-
 netx/net/sourceforge/jnlp/security/dialogresults/YesNoSandbox.java                                                       |    4 +-
 netx/net/sourceforge/jnlp/security/dialogresults/YesNoSandboxLimited.java                                                |   75 ++
 netx/net/sourceforge/jnlp/security/dialogs/AccessWarningPane.java                                                        |   57 +-
 netx/net/sourceforge/jnlp/security/dialogs/MissingALACAttributePanel.java                                                |   36 +-
 netx/net/sourceforge/jnlp/security/dialogs/MissingPermissionsAttributePanel.java                                         |   38 +-
 netx/net/sourceforge/jnlp/security/dialogs/apptrustwarningpanel/AppTrustWarningPanel.java                                |   51 +-
 netx/net/sourceforge/jnlp/security/dialogs/apptrustwarningpanel/MatchingALACAttributePanel.java                          |   15 +-
 netx/net/sourceforge/jnlp/security/dialogs/apptrustwarningpanel/PartiallySignedAppTrustWarningPanel.java                 |   21 +-
 netx/net/sourceforge/jnlp/security/dialogs/apptrustwarningpanel/UnsignedAppletTrustWarningPanel.java                     |   11 +-
 netx/net/sourceforge/jnlp/security/dialogs/remember/ActionChoiceListener.java                                            |   47 -
 netx/net/sourceforge/jnlp/security/dialogs/remember/AppSigningWarningAction.java                                         |   59 -
 netx/net/sourceforge/jnlp/security/dialogs/remember/AppletSecurityActions.java                                           |  218 ++++-
 netx/net/sourceforge/jnlp/security/dialogs/remember/ExecuteAppletAction.java                                             |   27 +-
 netx/net/sourceforge/jnlp/security/dialogs/remember/RemeberActionProvider.java                                           |   45 +
 netx/net/sourceforge/jnlp/security/dialogs/remember/RememberDialog.java                                                  |  129 +++
 netx/net/sourceforge/jnlp/security/dialogs/remember/RememberPanel.java                                                   |  101 +--
 netx/net/sourceforge/jnlp/security/dialogs/remember/RememberPanelResult.java                                             |   64 +
 netx/net/sourceforge/jnlp/security/dialogs/remember/RememberableDialog.java                                              |   52 +
 netx/net/sourceforge/jnlp/security/dialogs/remember/SavedRememberAction.java                                             |   85 ++
 netx/net/sourceforge/jnlp/services/ServiceUtil.java                                                                      |   10 +-
 tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java                                                   |  169 +++-
 tests/netx/unit/net/sourceforge/jnlp/security/appletextendedsecurity/impl/LegacyUnsignedAppletActionStorageImplTest.java |  228 ++++++
 tests/netx/unit/net/sourceforge/jnlp/security/appletextendedsecurity/impl/UnsignedAppletActionStorageImplTest.java       |  353 ++++++---
 tests/netx/unit/net/sourceforge/jnlp/security/dialogs/remember/AppletSecurityActionsTest.java                            |  157 ++-
 tests/netx/unit/net/sourceforge/jnlp/util/XDesktopEntryTest.java                                                         |    2 +-
 44 files changed, 1770 insertions(+), 791 deletions(-)

diffs (truncated from 4111 to 500 lines):

diff -r 21aca3386c4f -r 0afcc93fb7fb ChangeLog
--- a/ChangeLog	Thu Jun 11 13:24:54 2015 +0200
+++ b/ChangeLog	Fri Jun 12 16:49:07 2015 +0200
@@ -1,3 +1,8 @@
+2015-06-12  Jiri Vanek  <jvanek at redhat.com>
+
+	Implemented general solution for remembering of various dialogues
+	* todo: changelog and javadoc and news
+
 2015-06-11  Jiri Vanek  <jvanek at redhat.com>
 
 	AppletSecurityActions, ExecuteAppletAction, AppletSecurityActionsTest moved to remember package
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletActionTableModel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletActionTableModel.java	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletActionTableModel.java	Fri Jun 12 16:49:07 2015 +0200
@@ -39,17 +39,16 @@
 import javax.swing.event.TableModelEvent;
 import javax.swing.table.AbstractTableModel;
 import net.sourceforge.jnlp.runtime.Translator;
-import net.sourceforge.jnlp.security.dialogs.remember.AppletSecurityActions;
-import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
 import net.sourceforge.jnlp.security.appletextendedsecurity.UnsignedAppletActionEntry;
 import net.sourceforge.jnlp.security.appletextendedsecurity.UrlRegEx;
 import net.sourceforge.jnlp.security.appletextendedsecurity.impl.UnsignedAppletActionStorageExtendedImpl;
+import net.sourceforge.jnlp.security.dialogs.remember.AppletSecurityActions;
+import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
 
 public class UnsignedAppletActionTableModel extends AbstractTableModel {
 
     final UnsignedAppletActionStorageExtendedImpl back;
-    private final String[] columns = new String[]{Translator.R("APPEXTSECguiTableModelTableColumnActionUA"),
-        Translator.R("APPEXTSECguiTableModelTableColumnActionMatchALACA"),
+    private final String[] columns = new String[]{Translator.R("APPEXTSECguiTableModelTableColumnRD"),
         Translator.R("APPEXTSECguiTableModelTableColumnDateOfAction"),
         Translator.R("APPEXTSECguiTableModelTableColumnDocumentBase"),
         Translator.R("APPEXTSECguiTableModelTableColumnCodeBase"),
@@ -80,18 +79,15 @@
             return AppletSecurityActions.class;
         }
         if (columnIndex == 1) {
-            return AppletSecurityActions.class;
+            return Date.class;
         }
         if (columnIndex == 2) {
-            return Date.class;
+            return UrlRegEx.class;
         }
         if (columnIndex == 3) {
             return UrlRegEx.class;
         }
         if (columnIndex == 4) {
-            return UrlRegEx.class;
-        }
-        if (columnIndex == 5) {
             return String.class;
         }
          return Object.class;
@@ -102,11 +98,12 @@
         if (back.isReadOnly()) {
             return false;
         }
-        if (columnIndex == 2) {
+        if (columnIndex == 1) {
             return false;
         }
+        //FIXME add editor
         if (columnIndex == 0) {
-            return true;
+            return true; 
         }
         if (getValueAt(rowIndex, columnIndex - 1) == null || getValueAt(rowIndex, columnIndex - 1).toString().trim().isEmpty()) {
             return false;
@@ -119,21 +116,18 @@
 
         UnsignedAppletActionEntry source = back.toArray()[rowIndex];
         if (columnIndex == 0) {
-            return source.getAppletSecurityActions().getUnsignedAppletAction();
+            return source.getAppletSecurityActions();
         }
         if (columnIndex == 1) {
-            return source.getAppletSecurityActions().getMatchingAlacaAction();
+            return source.getTimeStamp();
         }
         if (columnIndex == 2) {
-            return source.getTimeStamp();
+            return source.getDocumentBase();
         }
         if (columnIndex == 3) {
-            return source.getDocumentBase();
+            return source.getCodeBase();
         }
         if (columnIndex == 4) {
-            return source.getCodeBase();
-        }
-        if (columnIndex == 5) {
             return UnsignedAppletActionEntry.createArchivesString(source.getArchives());
         }
         return null;
@@ -150,7 +144,7 @@
         int i = getRowCount()-1;
         String s = "\\Qhttp://localhost:80/\\E.*";
         back.add(new UnsignedAppletActionEntry(
-                AppletSecurityActions.createDefault(),
+                new AppletSecurityActions(),
                 new Date(),
                 new UrlRegEx(s),
                 new UrlRegEx(s),
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java	Fri Jun 12 16:49:07 2015 +0200
@@ -47,6 +47,7 @@
 import java.io.OutputStreamWriter;
 import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -87,13 +88,13 @@
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.config.PathsAndFiles;
 import net.sourceforge.jnlp.runtime.Translator;
-import net.sourceforge.jnlp.security.dialogs.remember.AppletSecurityActions;
 import net.sourceforge.jnlp.security.appletextendedsecurity.AppletSecurityLevel;
-import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
 import net.sourceforge.jnlp.security.appletextendedsecurity.ExtendedAppletSecurityHelp;
 import net.sourceforge.jnlp.security.appletextendedsecurity.UnsignedAppletActionEntry;
 import net.sourceforge.jnlp.security.appletextendedsecurity.UrlRegEx;
 import net.sourceforge.jnlp.security.appletextendedsecurity.impl.UnsignedAppletActionStorageExtendedImpl;
+import net.sourceforge.jnlp.security.dialogs.remember.AppletSecurityActions;
+import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
 import net.sourceforge.jnlp.util.ScreenFinder;
 import net.sourceforge.jnlp.util.logging.OutputController;
 
@@ -729,20 +730,16 @@
             @Override
             public TableCellEditor getCellEditor(int row, int column) {
                 int columnx = convertColumnIndexToModel(column);
-                if (columnx == 0 || columnx == 1) {
-                    return new DefaultCellEditor(new JComboBox<>(new ExecuteAppletAction[] {
-                            ExecuteAppletAction.ALWAYS,
-                            ExecuteAppletAction.NEVER,
-                            ExecuteAppletAction.YES,
-                            ExecuteAppletAction.NO,
-                            ExecuteAppletAction.UNSET }));
+                if (columnx == 0) {
+                    //FIXME add proper editor her egoes jbutton, popupr dialog
+                    return new DefaultCellEditor(new JTextField());
                 }
-                if (columnx == 3) {
+                if (columnx == 2) {
                     column = convertColumnIndexToModel(column);
                     row = convertRowIndexToModel(row);
                     return new DefaultCellEditor(new MyTextField((UrlRegEx) (model.getValueAt(row, column))));
                 }
-                if (columnx == 4) {
+                if (columnx == 3) {
                     column = convertColumnIndexToModel(column);
                     row = convertRowIndexToModel(row);
                     return new DefaultCellEditor(new MyTextField((UrlRegEx) (model.getValueAt(row, column))));
@@ -753,19 +750,19 @@
             @Override
             public TableCellRenderer getCellRenderer(int row, int column) {
                 int columnx = convertColumnIndexToModel(column);
-                if (columnx == 2) {
+                if (columnx == 1) {
                     column = convertColumnIndexToModel(column);
                     row = convertRowIndexToModel(row);
                     return new UrlRegexCellRenderer.MyDateCellRenderer((Date) (model.getValueAt(row, column)));
                 }
-                if (columnx == 3) {
+                if (columnx == 2) {
                     if (!filterRegexesCheckBox.isSelected()) {
                         column = convertColumnIndexToModel(column);
                         row = convertRowIndexToModel(row);
                         return new UrlRegexCellRenderer((UrlRegEx) (model.getValueAt(row, column)));
                     }
                 }
-                if (columnx == 4) {
+                if (columnx == 3) {
                     if (!filterRegexesCheckBox.isSelected()) {
                         column = convertColumnIndexToModel(column);
                         row = convertRowIndexToModel(row);
@@ -799,10 +796,10 @@
             for (UnsignedAppletActionEntry unsignedAppletActionEntry : items) {
                 AppletSecurityActions actions = unsignedAppletActionEntry.getAppletSecurityActions();
                  for (int j = 0; j < actions.getRealCount(); j++) {
-                    ExecuteAppletAction action = actions.getAction(j);
-                    if (action == unsignedAppletAction) {
-                        toBeDeleted.add(unsignedAppletActionEntry);
-                    }
+//                    ExecuteAppletAction action = actions.getAction(j);
+//                    if (action == unsignedAppletAction) {
+//                        toBeDeleted.add(unsignedAppletActionEntry);
+//                    }
                 }
             }
             String s = Translator.R("APPEXTSECguiPanelConfirmDeletionOf", toBeDeleted.size()) + ": \n";
@@ -940,8 +937,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.ALWAYS) || o.equals(ExecuteAppletAction.NEVER)) {
                         return true;
                     }
@@ -954,8 +952,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.ALWAYS)) {
                         return true;
                     }
@@ -969,8 +968,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.NEVER)) {
                         return true;
                     }
@@ -983,8 +983,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.YES) || o.equals(ExecuteAppletAction.NO)) {
                         return true;
                     }
@@ -997,8 +998,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.YES)) {
                         return true;
                     }
@@ -1012,8 +1014,9 @@
 
             @Override
             public boolean include(Entry<? extends UnsignedAppletActionTableModel, ? extends Integer> entry) {
-                for (int i = 0; i < AppletSecurityActions.REMEMBER_COLUMNS_COUNT; i++) {
-                    ExecuteAppletAction o = (ExecuteAppletAction) entry.getModel().getValueAt(entry.getIdentifier(), i);
+                AppletSecurityActions as = (AppletSecurityActions) entry.getModel().getValueAt(entry.getIdentifier(), 0);
+                Collection<ExecuteAppletAction> l = as.getActions();
+                for (ExecuteAppletAction o : l) {
                     if (o.equals(ExecuteAppletAction.NO)) {
                         return true;
                     }
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/resources/Messages.properties
--- a/netx/net/sourceforge/jnlp/resources/Messages.properties	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/resources/Messages.properties	Fri Jun 12 16:49:07 2015 +0200
@@ -1092,10 +1092,8 @@
 APPEXTSECunsignedAppletActionYes=This applet was visited and allowed
 APPEXTSecunsignedAppletActionSandbox=This applet was visited and allowed to run with restricted privileges
 APPEXTSECunsignedAppletActionNo=This applet was visited and denied
-APPEXTSECunsetAppletAction=This applet has not yet asked for this action
 APPEXTSECControlPanelExtendedAppletSecurityTitle=Extended applet security
-APPEXTSECguiTableModelTableColumnActionUA=Unsigned applet Action
-APPEXTSECguiTableModelTableColumnActionMatchALACA=Library Action
+APPEXTSECguiTableModelTableColumnRD=Remembered decisions
 APPEXTSECguiTableModelTableColumnDateOfAction=Date of action
 APPEXTSECguiTableModelTableColumnDocumentBase=Document-base
 APPEXTSECguiTableModelTableColumnCodeBase=Code-base
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
--- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java	Fri Jun 12 16:49:07 2015 +0200
@@ -185,7 +185,7 @@
             return;
         }
         AccessWarningPaneComplexReturn ics = getComplexReturn(sd);
-        if (ics.toBoolean()) {
+        if (ics !=null && ics.toBoolean()) {
             entry.createDesktopShortcuts(ics.getMenu(), ics.getDekstop(), isSigned());
         }
 
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogMessageHandler.java	Fri Jun 12 16:49:07 2015 +0200
@@ -41,6 +41,10 @@
 import java.awt.event.ActionListener;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
+import net.sourceforge.jnlp.security.appletextendedsecurity.UnsignedAppletTrustConfirmation;
+import net.sourceforge.jnlp.security.dialogs.remember.RememberDialog;
+import net.sourceforge.jnlp.security.dialogs.remember.RememberableDialog;
+import net.sourceforge.jnlp.security.dialogs.remember.SavedRememberAction;
 
 import sun.awt.AppContext;
 
@@ -63,7 +67,7 @@
  * {@link SecurityDialogMessage#userResponse} to the appropriate value.
  * </p>
  */
-public final class SecurityDialogMessageHandler implements Runnable {
+public class SecurityDialogMessageHandler implements Runnable {
 
     /** the queue of incoming messages to show security dialogs */
     private BlockingQueue<SecurityDialogMessage> queue = new LinkedBlockingQueue<SecurityDialogMessage>();
@@ -96,31 +100,50 @@
      * @param message the message indicating what type of security dialog to
      * show
      */
-    private void handleMessage(SecurityDialogMessage message) {
-        final SecurityDialogMessage msg = message;
+    protected void handleMessage(final SecurityDialogMessage message) {
 
         final SecurityDialog dialog = new SecurityDialog(message.dialogType,
                 message.accessType, message.file, message.certVerifier, message.certificate, message.extras);
+        
+        final RememberableDialog found = RememberDialog.getInstance().findRememberablePanel(dialog);
+        SavedRememberAction action = null;
+        if (found!=null){
+        action = RememberDialog.getInstance().getRememberedState(found);
+        }
+        if (action != null && action.isRemember()) {
+            message.userResponse = found.readValue(action.getSavedValue());
+            UnsignedAppletTrustConfirmation.updateAppletAction(found.getFile(), action, null, (Class<RememberableDialog>) found.getClass());
+            unlockMessagesClient(message);
+        } else {
+            dialog.addActionListener(new ActionListener() {
 
-        dialog.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    if (found == null) {
+                        message.userResponse = dialog.getValue();
+                    } else {
+                        message.userResponse = found.getValue();
+                        RememberDialog.getInstance().setOrUpdateRememberedState(dialog);
+                    }
+                    unlockMessagesClient(message);
+                }
 
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                msg.userResponse = dialog.getValue();
-                /* Allow the client to continue on the other side */
-                if (msg.toDispose != null) {
-                    msg.toDispose.dispose();
-                }
-                if (msg.lock != null) {
-                    msg.lock.release();
-                }
-            }
-        });
-        dialog.setVisible(true);
+            });
+            dialog.setVisible(true);
+        }
 
     }
 
-    /**
+    protected void unlockMessagesClient(final SecurityDialogMessage msg) {
+        /* Allow the client to continue on the other side */
+        if (msg.toDispose != null) {
+            msg.toDispose.dispose();
+        }
+        if (msg.lock != null) {
+            msg.lock.release();
+        }
+    }
+        /**
      * Post a message to the security event queue. This message will be picked
      * up by the security thread and used to show the appropriate security
      * dialog.
diff -r 21aca3386c4f -r 0afcc93fb7fb netx/net/sourceforge/jnlp/security/SecurityDialogs.java
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Thu Jun 11 13:24:54 2015 +0200
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialogs.java	Fri Jun 12 16:49:07 2015 +0200
@@ -54,16 +54,12 @@
 import net.sourceforge.jnlp.config.DeploymentConfiguration;
 import net.sourceforge.jnlp.runtime.JNLPClassLoader.SecurityDelegate;
 import net.sourceforge.jnlp.runtime.JNLPRuntime;
-import net.sourceforge.jnlp.security.appletextendedsecurity.UnsignedAppletTrustConfirmation;
-import static net.sourceforge.jnlp.security.appletextendedsecurity.UnsignedAppletTrustConfirmation.getStoredAction;
 import net.sourceforge.jnlp.security.dialogresults.AccessWarningPaneComplexReturn;
 import net.sourceforge.jnlp.security.dialogresults.DialogResult;
 import net.sourceforge.jnlp.security.dialogresults.NamePassword;
+import net.sourceforge.jnlp.security.dialogresults.YesNo;
 import net.sourceforge.jnlp.security.dialogresults.YesNoSandbox;
-import net.sourceforge.jnlp.security.dialogs.remember.AppSigningWarningAction;
-import net.sourceforge.jnlp.security.dialogs.remember.AppletSecurityActions;
-import net.sourceforge.jnlp.security.dialogs.remember.ExecuteAppletAction;
-import net.sourceforge.jnlp.security.dialogs.remember.RememberPanel;
+import net.sourceforge.jnlp.security.dialogresults.YesNoSandboxLimited;
 import net.sourceforge.jnlp.util.UrlUtils;
 import net.sourceforge.jnlp.util.logging.OutputController;
 
@@ -150,21 +146,23 @@
      * @param file the file to be base as information source for this dialogue
      * @return true if permission was granted by the user, false otherwise.
      */
-    public static AppSigningWarningAction showUnsignedWarningDialog(JNLPFile file) {
+    public static YesNoSandboxLimited showUnsignedWarningDialog(JNLPFile file) {
 
         if (!shouldPromptUser()) {
             if (JNLPRuntime.isTrustAll()) {
-                return new AppSigningWarningAction(ExecuteAppletAction.YES, false);
+                return YesNoSandboxLimited.yes();
             } else {
-                return new AppSigningWarningAction(ExecuteAppletAction.NO, false);
+                return YesNoSandboxLimited.no();
             }
         }
 
         final SecurityDialogMessage message = new SecurityDialogMessage(file);
         message.dialogType = DialogType.UNSIGNED_WARNING;
         message.accessType = AccessType.UNSIGNED;
+        
+        DialogResult r = getUserResponse(message);
 
-        return  ((RememberPanel.Garbage) getUserResponse(message)).getAction();
+        return  (YesNoSandboxLimited) r;
     }
 
     /**
@@ -212,14 +210,14 @@
      * @param securityDelegate the delegate for security atts.
      * @return true if permission was granted by the user, false otherwise.
      */
-    public static AppSigningWarningAction showPartiallySignedWarningDialog(JNLPFile file, CertVerifier certVerifier,
+    public static YesNoSandbox showPartiallySignedWarningDialog(JNLPFile file, CertVerifier certVerifier,
             SecurityDelegate securityDelegate) {
 
         if (!shouldPromptUser()) {
             if (JNLPRuntime.isTrustAll()) {
-                return new AppSigningWarningAction(ExecuteAppletAction.YES, false);
+                return YesNoSandbox.yes();
             } else {
-                return new AppSigningWarningAction(ExecuteAppletAction.NO, false);
+                return YesNoSandbox.no();
             }
         }
 
@@ -229,7 +227,8 @@
         message.certVerifier = certVerifier;
         message.extras = new Object[] { securityDelegate };
 
-        return ((RememberPanel.Garbage) getUserResponse(message)).getAction();
+        DialogResult r = getUserResponse(message);
+        return (YesNoSandbox) r;
     }
 
     /**
@@ -263,6 +262,7 @@
         message.extras = new Object[] { host, port, prompt, type };
 
         DialogResult response = getUserResponse(message);
+        OutputController.getLogger().log(OutputController.Level.MESSAGE_DEBUG, "Decided action for matching alaca at  was " + response);
         return (NamePassword) response;
     }
 
@@ -286,24 +286,17 @@
          }
         message.extras = new Object[]{urlToShow, UrlUtils.setOfUrlsToHtmlList(remoteUrls)};
         DialogResult selectedValue = getUserResponse(message);
+
+        OutputController.getLogger().log(OutputController.Level.MESSAGE_DEBUG, "Decided action for matching alaca at " + file.getCodeBase() + " was " + selectedValue);
+        
+        if (selectedValue == null){
+            return false;
+        }
         return selectedValue.toBoolean();
     } 
      
      public static boolean showMatchingALACAttributePanel(JNLPFile file, URL documentBase, Set<URL> remoteUrls) {
 
-        ExecuteAppletAction storedAction = getStoredAction(file, AppletSecurityActions.MATCHING_ALACA_ACTION);
-        OutputController.getLogger().log(OutputController.Level.ERROR_DEBUG, "Stored action for matching alaca at " + file.getCodeBase() +" was " + storedAction);
-        
-        if (storedAction != null){
-            if (storedAction == ExecuteAppletAction.ALWAYS){
-                return true;
-            }
-            if (storedAction == ExecuteAppletAction.NEVER){
-                return false;
-            }
-        }


More information about the distro-pkg-dev mailing list