undefect. CWE-407 — 63 sites patched across 27 ecosystems
Authors: russell@unturf.com · brackishbert@gmail.com · foxhop.net · TimeHexOn.com Patches, unit tests, benchmarks, whitepaper, and outreach briefs. Public domain — no copyright claimed. Use freely.
This commit is contained in:
commit
0a580b313d
70422 changed files with 17213626 additions and 0 deletions
177
test/jdk/java/awt/Focus/FocusPolicyTest.java
Normal file
177
test/jdk/java/awt/Focus/FocusPolicyTest.java
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4897459
|
||||
* @key headful
|
||||
* @summary The <Tab> key does not switches focus in the internal frames in Swing apps.
|
||||
* @run main FocusPolicyTest
|
||||
*/
|
||||
|
||||
import java.awt.Container;
|
||||
import java.awt.Component;
|
||||
import java.awt.DefaultFocusTraversalPolicy;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.FocusTraversalPolicy;
|
||||
import java.awt.Frame;
|
||||
import java.awt.KeyboardFocusManager;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.Window;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JInternalFrame;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JWindow;
|
||||
import javax.swing.LayoutFocusTraversalPolicy;
|
||||
|
||||
public class FocusPolicyTest {
|
||||
static int stageNum;
|
||||
static FocusTraversalPolicy customPolicy = new CustomPolicy();
|
||||
final static Class awtDefaultPolicy = DefaultFocusTraversalPolicy.class;
|
||||
final static Class swingDefaultPolicy = LayoutFocusTraversalPolicy.class;
|
||||
|
||||
public static void main(String[] args) {
|
||||
final boolean isXawt = "sun.awt.X11.XToolkit".equals(Toolkit.getDefaultToolkit().getClass().getName());
|
||||
|
||||
System.err.println("isXawt = " + isXawt);
|
||||
|
||||
// 1. Check default policy
|
||||
if (KeyboardFocusManager.getCurrentKeyboardFocusManager().
|
||||
getDefaultFocusTraversalPolicy().getClass() != awtDefaultPolicy) {
|
||||
throw new RuntimeException("Error: stage 1: default policy is not DefaultFocusTraversalPolicy");
|
||||
}
|
||||
|
||||
// 2. Check AWT top-levels policies
|
||||
stageNum = 2;
|
||||
checkAWTPoliciesFor(awtDefaultPolicy);
|
||||
|
||||
// 3. Check Swing top-levels policies
|
||||
stageNum = 3;
|
||||
checkSwingPoliciesFor(swingDefaultPolicy);
|
||||
|
||||
// 4. Check default policy if not XToolkit
|
||||
if (!isXawt) {
|
||||
if (KeyboardFocusManager.getCurrentKeyboardFocusManager().
|
||||
getDefaultFocusTraversalPolicy().getClass() != swingDefaultPolicy) {
|
||||
throw new RuntimeException("Error: stage 4: default policy is not LayoutFocusTraversalPolicy");
|
||||
}
|
||||
}
|
||||
|
||||
// 5. Check AWT top-levels policies
|
||||
// this is a bug in XAWT we should change the test as soon as
|
||||
// we will be able to fix this bug.
|
||||
stageNum = 5;
|
||||
Class defaultPolicy = swingDefaultPolicy;
|
||||
if (isXawt) {
|
||||
defaultPolicy = awtDefaultPolicy;
|
||||
}
|
||||
checkAWTPoliciesFor(defaultPolicy);
|
||||
|
||||
// Set custom policy as default
|
||||
KeyboardFocusManager.getCurrentKeyboardFocusManager().setDefaultFocusTraversalPolicy(customPolicy);
|
||||
|
||||
// 6. Check AWT top-levels policies for custom
|
||||
stageNum = 6;
|
||||
checkAWTPoliciesFor(customPolicy.getClass());
|
||||
|
||||
// 7. Check Swing top-levels policies for custom
|
||||
stageNum = 7;
|
||||
checkSwingPoliciesFor(customPolicy.getClass());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public static void checkAWTPoliciesFor(Class expectedPolicyClass) {
|
||||
Window[] tlvs = new Window[7];
|
||||
|
||||
tlvs[0] = new Frame("");
|
||||
tlvs[1] = new Frame("", tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[2] = new Window((Frame)tlvs[0]);
|
||||
tlvs[3] = new Dialog((Frame)tlvs[0], "", false);
|
||||
tlvs[4] = new Dialog((Frame)tlvs[0], "", false, tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[5] = new Dialog((Dialog)tlvs[3], "", false);
|
||||
tlvs[6] = new Dialog((Dialog)tlvs[3], "", false, tlvs[0].getGraphicsConfiguration());
|
||||
|
||||
for (int i = 0; i < 7; i++) {
|
||||
Class policyClass = tlvs[i].getFocusTraversalPolicy().getClass();
|
||||
if (policyClass != expectedPolicyClass) {
|
||||
throw new RuntimeException("Error: stage " + stageNum + ": "
|
||||
+ tlvs[i].getClass().getName()
|
||||
+ "'s policy is " + policyClass.getName()
|
||||
+ " but not " + expectedPolicyClass.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkSwingPoliciesFor(Class expectedPolicyClass) {
|
||||
Container[] tlvs = new Container[12];
|
||||
|
||||
tlvs[0] = new JFrame();
|
||||
tlvs[1] = new JFrame(tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[2] = new JFrame("");
|
||||
tlvs[3] = new JFrame("", tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[4] = new JWindow((Frame)tlvs[0]);
|
||||
tlvs[5] = new JWindow((Window)tlvs[4]);
|
||||
tlvs[6] = new JWindow((Window)tlvs[4], tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[7] = new JDialog((Frame)tlvs[0], "", false);
|
||||
tlvs[8] = new JDialog((Frame)tlvs[0], "", false, tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[9] = new JDialog((Dialog)tlvs[7], "", false);
|
||||
tlvs[10] = new JDialog((Dialog)tlvs[7], "", false, tlvs[0].getGraphicsConfiguration());
|
||||
tlvs[11] = new JInternalFrame("", false, false, false, false);
|
||||
|
||||
for (int i = 0; i < tlvs.length; i++) {
|
||||
Class policyClass = tlvs[i].getFocusTraversalPolicy().getClass();
|
||||
if (policyClass != expectedPolicyClass) {
|
||||
throw new RuntimeException("Error: stage " + stageNum
|
||||
+ ": " + tlvs[i].getClass().getName()
|
||||
+ "'s policy is " + policyClass.getName() + " but not "
|
||||
+ expectedPolicyClass.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Dummy policy.
|
||||
static class CustomPolicy extends FocusTraversalPolicy {
|
||||
public Component getComponentAfter(Container focusCycleRoot,
|
||||
Component aComponent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Component getComponentBefore(Container focusCycleRoot,
|
||||
Component aComponent) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Component getFirstComponent(Container focusCycleRoot) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Component getLastComponent(Container focusCycleRoot) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Component getDefaultComponent(Container focusCycleRoot) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue