/hg/icedtea-web: make jnlpfile nearly mandatory argument of mess...
jvanek at icedtea.classpath.org
jvanek at icedtea.classpath.org
Thu Jun 11 10:51:22 UTC 2015
changeset b2406e30f04b in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=b2406e30f04b
author: Jiri Vanek <jvanek at redhat.com>
date: Thu Jun 11 12:51:00 2015 +0200
make jnlpfile nearly mandatory argument of message and adapt various re-declarations accordingly
diffstat:
ChangeLog | 14 ++++
netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java | 4 +-
netx/net/sourceforge/jnlp/security/SecurityDialog.java | 19 +++--
netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java | 10 ++-
netx/net/sourceforge/jnlp/security/SecurityDialogs.java | 31 ++++-----
tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java | 4 +-
6 files changed, 50 insertions(+), 32 deletions(-)
diffs (296 lines):
diff -r 6565b10a1557 -r b2406e30f04b ChangeLog
--- 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 at 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 at redhat.com>
Security dialogs got, moreover, unified dealing with trustNone/All and headless
diff -r 6565b10a1557 -r b2406e30f04b netx/net/sourceforge/jnlp/runtime/ManifestAttributesChecker.java
--- 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 {
diff -r 6565b10a1557 -r b2406e30f04b netx/net/sourceforge/jnlp/security/SecurityDialog.java
--- 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) {
diff -r 6565b10a1557 -r b2406e30f04b netx/net/sourceforge/jnlp/security/SecurityDialogMessage.java
--- 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;
}
diff -r 6565b10a1557 -r b2406e30f04b netx/net/sourceforge/jnlp/security/SecurityDialogs.java
--- 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();
}
diff -r 6565b10a1557 -r b2406e30f04b tests/netx/unit/net/sourceforge/jnlp/security/SecurityDialogsTest.java
--- 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++;
}
More information about the distro-pkg-dev
mailing list