author | ptbrunet |
Thu, 12 Nov 2015 12:27:36 -0600 | |
changeset 34393 | 171a07c89136 |
child 35673 | 61884618e67d |
permissions | -rw-r--r-- |
34393
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
1 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
2 |
import java.awt.*; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
3 |
import java.awt.event.KeyEvent; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
4 |
import java.util.ArrayList; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
5 |
import java.util.List; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
6 |
import javax.accessibility.Accessible; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
7 |
import javax.accessibility.AccessibleComponent; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
8 |
import javax.accessibility.AccessibleContext; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
9 |
import javax.accessibility.AccessibleState; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
10 |
import javax.accessibility.AccessibleStateSet; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
11 |
import javax.swing.*; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
12 |
import javax.swing.plaf.nimbus.NimbusLookAndFeel; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
13 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
14 |
/* |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
15 |
* @test |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
16 |
* @bug 8134116 |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
17 |
* @summary JTabbedPane$Page.getBounds throws IndexOutOfBoundsException |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
18 |
* @run main Bug8134116 |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
19 |
*/ |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
20 |
public class Bug8134116 { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
21 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
22 |
public static void main(String args[]) throws Exception { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
23 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
24 |
try { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
25 |
UIManager.setLookAndFeel(new NimbusLookAndFeel()); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
26 |
} catch (Exception e) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
27 |
throw new RuntimeException(e); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
28 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
29 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
30 |
SwingUtilities.invokeAndWait(() -> { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
31 |
JPanel panel0 = new JPanel(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
32 |
BadPane badPane = new BadPane(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
33 |
badPane.add("zero", panel0); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
34 |
badPane.add("one", null); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
35 |
JFrame frame = new JFrame(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
36 |
frame.add(badPane); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
37 |
frame.setSize(300, 300); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
38 |
frame.setVisible(true); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
39 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
40 |
AccessibleContext ac = badPane.getAccessibleContext(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
41 |
Accessible page0 = ac.getAccessibleChild(0); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
42 |
if (page0 == null) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
43 |
// Not something being tested, but checking anyway |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
44 |
throw new RuntimeException("getAccessibleChild(0) is null"); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
45 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
46 |
Accessible page1 = ac.getAccessibleChild(1); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
47 |
if (page1 == null) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
48 |
// Not something being tested, but checking anyway |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
49 |
throw new RuntimeException("getAccessibleChild(1) is null"); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
50 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
51 |
// page0 and page1 are a JTabbedPane.Page, a private inner class |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
52 |
// and is an AccessibleContext |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
53 |
// and implements Accessible and AccessibleComponent |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
54 |
AccessibleContext pac0 = page0.getAccessibleContext(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
55 |
AccessibleContext pac1 = page1.getAccessibleContext(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
56 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
57 |
// the following would fail if JDK-8134116 fix not present |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
58 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
59 |
// test Page.getBounds |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
60 |
// ensure no IndexOutOfBoundsException |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
61 |
pac0.getAccessibleComponent().getBounds(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
62 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
63 |
// test Page.getAccessibleStateSet |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
64 |
// At this point page 0 is selected |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
65 |
AccessibleStateSet accSS0 = pac0.getAccessibleStateSet(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
66 |
if (!accSS0.contains(AccessibleState.SELECTED)) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
67 |
String msg = "Empty title -> AccessibleState.SELECTED not set"; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
68 |
throw new RuntimeException(msg); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
69 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
70 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
71 |
// test Page.getAccessibleIndexInParent |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
72 |
if (pac0.getAccessibleIndexInParent() == -1) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
73 |
String msg = "Empty title -> negative AccessibleIndexInParent"; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
74 |
throw new RuntimeException(msg); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
75 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
76 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
77 |
// test Page.getAccessibleName |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
78 |
String accName = pac0.getAccessibleName(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
79 |
if (!accName.equals("zero")) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
80 |
String msg = "Empty title -> empty AccessibleName"; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
81 |
throw new RuntimeException(msg); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
82 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
83 |
// test Page.getAccessibleName when component is null |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
84 |
accName = pac1.getAccessibleName(); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
85 |
if (!accName.equals("one")) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
86 |
String msg = "AccessibleName of null panel not 'one'"; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
87 |
throw new RuntimeException(msg); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
88 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
89 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
90 |
// test Page.setDisplayedMnemonicIndex |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
91 |
// Empty title -> IllegalArgumnetException |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
92 |
badPane.setDisplayedMnemonicIndexAt(0, 1); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
93 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
94 |
// test Page.updateDisplayedMnemonicIndex |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
95 |
badPane.setMnemonicAt(0, KeyEvent.VK_Z); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
96 |
if (badPane.getDisplayedMnemonicIndexAt(0) == -1) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
97 |
String msg="Empty title -> getDisplayedMnemonicIndexAt failure"; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
98 |
throw new RuntimeException(msg); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
99 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
100 |
}); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
101 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
102 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
103 |
// The following is likely what is being done in Burp Suite |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
104 |
// https://portswigger.net/burp/ which fails in the same way, i.e. the |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
105 |
// pages List in JTabbedPane is not being managed properly and thus |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
106 |
// Page.title is "" for each page. The overridden insertTab manages titles |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
107 |
// in the subclass passing a "" title to the superclass JTabbedPane through |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
108 |
// its insertTab. Later an overridden getTitleAt returns the titles as |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
109 |
// managed by the subclass. |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
110 |
static class BadPane extends JTabbedPane { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
111 |
private List<String> titles; |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
112 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
113 |
BadPane() { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
114 |
titles = new ArrayList<String>(1); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
115 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
116 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
117 |
@Override |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
118 |
public void insertTab( String title, Icon icon, Component component, |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
119 |
String tip, int index ) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
120 |
titles.add(index, title); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
121 |
super.insertTab("", icon, component, tip, index); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
122 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
123 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
124 |
@Override |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
125 |
public String getTitleAt(int i) { |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
126 |
return titles.get(i); |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
127 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
128 |
} |
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
129 |
|
171a07c89136
8134116: Add more comprehensive fix and regression test for JDK-8133897
ptbrunet
parents:
diff
changeset
|
130 |
} |