Mercurial > hg > release > icedtea-web-1.8
changeset 1239:b2406e30f04b
make jnlpfile nearly mandatory argument of message and adapt various re-declarations accordingly
author | Jiri Vanek <jvanek@redhat.com> |
---|---|
date | Thu, 11 Jun 2015 12:51:00 +0200 |
parents | 6565b10a1557 |
children | 21aca3386c4f |
files | ChangeLog netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java netx/net/sourceforge/jnlp/security/SecurityDialog.java netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java netx/net/sourceforge/jnlp/security/SecurityDialogs.java tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java |
diffstat | 6 files changed, 50 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Thu Jun 11 11:44:11 2015 +0200 +++ b/ChangeLog Thu Jun 11 12:51:00 2015 +0200 @@ -1,3 +1,17 @@ +2015-06-11 Jiri Vanek <jvanek@redhat.com> + + make jnlpfile nearly mandatory argument of message and adapt various re-declarations accordingly + * netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java: adapted to new api + * netx/net/sourceforge/jnlp/security/SecurityDialog.java: all (SecurityDialog) made private + (getPanel) adapted to new apis + * netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java: file made final + and only default constructor is the one with file. + * netx/net/sourceforge/jnlp/security/SecurityDialogs.java: All constructions + of SecurityDialogMessage adapted to new constructor. All sets, where information from + file were dulicated, replaced by calls to file + * tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java: + showMissingPermissionsAttributeDialogue's constructor adapted. + 2015-06-10 Jiri Vanek <jvanek@redhat.com> Security dialogs got, moreover, unified dealing with trustNone/All and headless
--- a/netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java Thu Jun 11 11:44:11 2015 +0200 +++ b/netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java Thu Jun 11 12:51:00 2015 +0200 @@ -274,7 +274,7 @@ throw new LaunchException("Your Extended applets security is at 'Very high', and this application is missing the 'permissions' attribute in manifest. This is fatal"); } if (itwSecurityLevel == AppletSecurityLevel.ASK_UNSIGNED) { - final boolean userApproved = SecurityDialogs.showMissingPermissionsAttributeDialogue(file.getTitle(), file.getCodeBase()); + final boolean userApproved = SecurityDialogs.showMissingPermissionsAttributeDialogue(file); if (!userApproved) { throw new LaunchException("Your Extended applets security is at 'high' and this application is missing the 'permissions' attribute in manifest. And you have refused to run it."); } else { @@ -388,7 +388,7 @@ ClasspathMatchers att = file.getManifestsAttributes().getApplicationLibraryAllowableCodebase(); if (att == null) { - final boolean userApproved = isLowSecurity() || SecurityDialogs.showMissingALACAttributePanel(file.getTitle(), documentBase, usedUrls); + final boolean userApproved = isLowSecurity() || SecurityDialogs.showMissingALACAttributePanel(file, documentBase, usedUrls); if (!userApproved) { throw new LaunchException("The application uses non-codebase resources, has no Application-Library-Allowable-Codebase Attribute, and was blocked from running by the user"); } else {
--- a/netx/net/sourceforge/jnlp/security/SecurityDialog.java Thu Jun 11 11:44:11 2015 +0200 +++ b/netx/net/sourceforge/jnlp/security/SecurityDialog.java Thu Jun 11 12:51:00 2015 +0200 @@ -127,7 +127,7 @@ /** * Construct a SecurityDialog to display some sort of access warning */ - SecurityDialog(DialogType dialogType, AccessType accessType, + private SecurityDialog(DialogType dialogType, AccessType accessType, JNLPFile file) { this(dialogType, accessType, file, null, null, null); } @@ -135,7 +135,7 @@ /** * Create a SecurityDialog to display a certificate-related warning */ - SecurityDialog(DialogType dialogType, AccessType accessType, + private SecurityDialog(DialogType dialogType, AccessType accessType, JNLPFile file, CertVerifier certVerifier) { this(dialogType, accessType, file, certVerifier, null, null); } @@ -143,7 +143,7 @@ /** * Create a SecurityDialog to display a certificate-related warning */ - SecurityDialog(DialogType dialogType, AccessType accessType, + private SecurityDialog(DialogType dialogType, AccessType accessType, CertVerifier certVerifier) { this(dialogType, accessType, null, certVerifier, null, null); } @@ -152,7 +152,7 @@ * Create a SecurityDialog to display some sort of access warning * with more information */ - SecurityDialog(DialogType dialogType, AccessType accessType, + private SecurityDialog(DialogType dialogType, AccessType accessType, JNLPFile file, Object[] extras) { this(dialogType, accessType, file, null, null, extras); } @@ -161,7 +161,7 @@ * Create a SecurityWarningDailog to display information about a single * certificate */ - SecurityDialog(DialogType dialogType, X509Certificate c) { + private SecurityDialog(DialogType dialogType, X509Certificate c) { this(dialogType, null, null, null, c, null); } @@ -317,11 +317,11 @@ else if (dialogType == DialogType.AUTHENTICATION) panel = new PasswordAuthenticationPane(this, extras); else if (dialogType == DialogType.UNSIGNED_EAS_NO_PERMISSIONS_WARNING) - panel = new MissingPermissionsAttributePanel(this, (String) extras[0], (String) extras[1]); + panel = new MissingPermissionsAttributePanel(this, file.getTitle(), file.getCodeBase().toExternalForm()); else if (dialogType == DialogType.MISSING_ALACA) - panel = new MissingALACAttributePanel(this, (String) extras[0], (String) extras[1], (String) extras[2]); + panel = new MissingALACAttributePanel(this, file.getTitle(), (String) extras[0], (String) extras[1]); else if (dialogType == DialogType.MATCHING_ALACA) - panel = AppTrustWarningDialog.matchingAlaca(this, (JNLPFile) extras[0], (String) extras[1], (String) extras[2]); + panel = AppTrustWarningDialog.matchingAlaca(this, file, (String) extras[0], (String) extras[1]); add(panel, BorderLayout.CENTER); } @@ -333,8 +333,9 @@ private void selectDefaultButton() { if (panel == null) { OutputController.getLogger().log(OutputController.Level.MESSAGE_ALL, "initial value panel is null"); + } else { + panel.requestFocusOnDefaultButton(); } - panel.requestFocusOnDefaultButton(); } public void setValue(DialogResult value) {
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java Thu Jun 11 11:44:11 2015 +0200 +++ b/netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java Thu Jun 11 12:51:00 2015 +0200 @@ -53,13 +53,20 @@ */ public final class SecurityDialogMessage { + + public SecurityDialogMessage(JNLPFile file) { + this.file = file; + } + /* * These fields contain information need to display the correct dialog type */ public DialogType dialogType; public AccessType accessType; - public JNLPFile file; + //all informations dilaogs needs are in file. + //The only known exception is, and should remain, showAuthenicationPrompt + public final JNLPFile file; public CertVerifier certVerifier; public X509Certificate certificate; public Object[] extras; @@ -77,6 +84,7 @@ */ public Semaphore lock; + //if dialog slip out of awt thread, fake modal dialog is created. This is keeping it. public JDialog toDispose; }
--- a/netx/net/sourceforge/jnlp/security/SecurityDialogs.java Thu Jun 11 11:44:11 2015 +0200 +++ b/netx/net/sourceforge/jnlp/security/SecurityDialogs.java Thu Jun 11 12:51:00 2015 +0200 @@ -132,11 +132,10 @@ } } - final SecurityDialogMessage message = new SecurityDialogMessage(); + final SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.ACCESS_WARNING; message.accessType = accessType; - message.file = file; message.extras = extras; return (AccessWarningPaneComplexReturn) getUserResponse(message); @@ -161,10 +160,9 @@ } } - final SecurityDialogMessage message = new SecurityDialogMessage(); + final SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.UNSIGNED_WARNING; message.accessType = AccessType.UNSIGNED; - message.file = file; return ((RememberPanel.Garbage) getUserResponse(message)).getAction(); } @@ -195,10 +193,9 @@ } } - final SecurityDialogMessage message = new SecurityDialogMessage(); + final SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.CERT_WARNING; message.accessType = accessType; - message.file = file; message.certVerifier = certVerifier; message.extras = new Object[] { securityDelegate }; @@ -226,10 +223,9 @@ } } - final SecurityDialogMessage message = new SecurityDialogMessage(); + final SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.PARTIALLYSIGNED_WARNING; message.accessType = AccessType.PARTIALLYSIGNED; - message.file = file; message.certVerifier = certVerifier; message.extras = new Object[] { securityDelegate }; @@ -261,7 +257,7 @@ sm.checkPermission(requestPermission); } - final SecurityDialogMessage message = new SecurityDialogMessage(); + final SecurityDialogMessage message = new SecurityDialogMessage(null); message.dialogType = DialogType.AUTHENTICATION; message.extras = new Object[] { host, port, prompt, type }; @@ -270,7 +266,7 @@ return (NamePassword) response; } - public static boolean showMissingALACAttributePanel(String title, URL codeBase, Set<URL> remoteUrls) { + public static boolean showMissingALACAttributePanel(JNLPFile file, URL codeBase, Set<URL> remoteUrls) { if (!shouldPromptUser()) { if (JNLPRuntime.isTrustAll()) { @@ -280,7 +276,7 @@ } } - SecurityDialogMessage message = new SecurityDialogMessage(); + SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.MISSING_ALACA; String urlToShow = "unknown url"; if (codeBase != null) { @@ -288,12 +284,12 @@ } else { OutputController.getLogger().log("Warning, null codebase wants to show in ALACA!"); } - message.extras = new Object[]{title, urlToShow, UrlUtils.setOfUrlsToHtmlList(remoteUrls)}; + message.extras = new Object[]{urlToShow, UrlUtils.setOfUrlsToHtmlList(remoteUrls)}; DialogResult selectedValue = getUserResponse(message); return selectedValue.toBoolean(); } - public static boolean showMatchingALACAttributePanel(JNLPFile file, URL codeBase, Set<URL> remoteUrls) { + 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); @@ -316,9 +312,9 @@ } } - SecurityDialogMessage message = new SecurityDialogMessage(); + SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.MATCHING_ALACA; - message.extras = new Object[]{file, codeBase.toString(), UrlUtils.setOfUrlsToHtmlList(remoteUrls)}; + message.extras = new Object[]{documentBase.toString(), UrlUtils.setOfUrlsToHtmlList(remoteUrls)}; AppSigningWarningAction selectedValue = ((RememberPanel.Garbage) getUserResponse(message)).getAction(); if (selectedValue != null) { @@ -332,7 +328,7 @@ } - public static boolean showMissingPermissionsAttributeDialogue(String title, URL codeBase) { + public static boolean showMissingPermissionsAttributeDialogue(JNLPFile file) { if (!shouldPromptUser()) { if (JNLPRuntime.isTrustAll()) { @@ -342,9 +338,8 @@ } } - SecurityDialogMessage message = new SecurityDialogMessage(); + SecurityDialogMessage message = new SecurityDialogMessage(file); message.dialogType = DialogType.UNSIGNED_EAS_NO_PERMISSIONS_WARNING; - message.extras = new Object[]{title, codeBase.toExternalForm()}; DialogResult selectedValue = getUserResponse(message); return selectedValue.toBoolean(); }
--- a/tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java Thu Jun 11 11:44:11 2015 +0200 +++ b/tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java Thu Jun 11 12:51:00 2015 +0200 @@ -277,7 +277,7 @@ Assert.assertEquals(r.b, r7); boolean r8 = SecurityDialogs.showMatchingALACAttributePanel(new DummyJnlpWithTitleAndUrls(), url, new HashSet<URL>()); Assert.assertEquals(r.b, r8); - boolean r9 = SecurityDialogs.showMissingPermissionsAttributeDialogue(null, null); + boolean r9 = SecurityDialogs.showMissingPermissionsAttributeDialogue(null); Assert.assertEquals(r.b, r9); } @@ -376,7 +376,7 @@ } try { metcounter++; - SecurityDialogs.showMissingPermissionsAttributeDialogue(null, null); + SecurityDialogs.showMissingPermissionsAttributeDialogue(null); } catch (NullPointerException ex) { npecounter++; }