jdk/test/java/awt/Headless/HeadlessAWTEventMulticaster.java
author sangheki
Thu, 24 Mar 2016 23:07:06 -0700
changeset 37194 96cc74bd293b
parent 25203 ea684628f900
permissions -rw-r--r--
8152160: SIGFPE in CompactibleFreeListSpaceLAB::compute_desired_plab_size Summary: Rephrase the calculation with CMSOldPLABNumRefills to avoid an overflow Reviewed-by: pliden, jmasa

/*
 * Copyright (c) 2007, 2014, 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.
 */

import java.awt.*;
import java.awt.event.*;

/*
 * @test
 * @summary Check for AWTEventMulticaster working in headless mode
 * @run main/othervm -Djava.awt.headless=true HeadlessAWTEventMulticaster
 */

public class HeadlessAWTEventMulticaster {
    class ComponentListenerImpl implements ComponentListener {
        public boolean hidden = false;
        public boolean moved = false;
        public boolean resized = false;
        public boolean shown = false;

        public void componentHidden(ComponentEvent e) {
            hidden = true;
        }

        public void componentMoved(ComponentEvent e) {
            moved = true;
        }

        public void componentResized(ComponentEvent e) {
            resized = true;
        }

        public void componentShown(ComponentEvent e) {
            shown = true;
        }
    }

    class ContainerListenerImpl implements ContainerListener {
        public boolean removed = false;
        public boolean added = false;

        public void componentAdded(ContainerEvent e) {
            added = true;
        }

        public void componentRemoved(ContainerEvent e) {
            removed = true;
        }
    }

    class FocusListenerImpl implements FocusListener {
        public boolean gained = false;
        public boolean lost = false;

        public void focusGained(FocusEvent e) {
            gained = true;
        }

        public void focusLost(FocusEvent e) {
            lost = true;
        }
    }

    class KeyListenerImpl implements KeyListener {
        public boolean pressed = false;
        public boolean released = false;
        public boolean typed = false;

        public void keyPressed(KeyEvent e) {
            pressed = true;
        }

        public void keyReleased(KeyEvent e) {
            released = true;
        }

        public void keyTyped(KeyEvent e) {
            typed = true;
        }
    }

    public static void main(String args[]) {
        new HeadlessAWTEventMulticaster().doTest();
    }

    void doTest() {
        ComponentListener compList;
        ComponentListenerImpl compListImpl;

        ContainerListener contList;
        ContainerListenerImpl contListImpl;

        FocusListener focList;
        FocusListenerImpl focListImpl;

        KeyListener keyList;
        KeyListenerImpl keyListImpl;

        Component component = new Component(){};

        // Component resized
        compListImpl = new ComponentListenerImpl();
        compList = AWTEventMulticaster.add(compListImpl, null);
        compList.componentResized(new ComponentEvent(component,
                ComponentEvent.COMPONENT_RESIZED));
        if (compListImpl.hidden || compListImpl.moved || compListImpl.shown) {
            throw new RuntimeException("Wrong id delivered: hidden || moved || shown");
        }
        if (!compListImpl.resized) {
            throw new RuntimeException("Expected id, resized, not delivered");
        }

        // Component moved
        compListImpl = new ComponentListenerImpl();
        compList = AWTEventMulticaster.add(compListImpl, null);
        compList.componentMoved(new ComponentEvent(component,
                ComponentEvent.COMPONENT_MOVED));
        if (compListImpl.hidden || compListImpl.resized || compListImpl.shown) {
            throw new RuntimeException("Wrong id delivered: hidden || resized || shown");
        }
        if (!compListImpl.moved) {
            throw new RuntimeException("Expected id, moved, not delivered");
        }

        // Component shown
        compListImpl = new ComponentListenerImpl();
        compList = AWTEventMulticaster.add(compListImpl, null);
        compList.componentShown(new ComponentEvent(component,
                ComponentEvent.COMPONENT_SHOWN));
        if (compListImpl.hidden || compListImpl.resized || compListImpl.moved) {
            throw new RuntimeException("Wrong id delivered: hidden || resized || moved");
        }
        if (!compListImpl.shown) {
            throw new RuntimeException("Expected id, shown, not delivered");
        }

        // Component hidden
        compListImpl = new ComponentListenerImpl();
        compList = AWTEventMulticaster.add(compListImpl, null);
        compList.componentHidden(new ComponentEvent(component,
                ComponentEvent.COMPONENT_HIDDEN));
        if (compListImpl.shown || compListImpl.resized || compListImpl.moved) {
            throw new RuntimeException("Wrong id delivered: shown || resized || moved");
        }
        if (!compListImpl.hidden) {
            throw new RuntimeException("Expected id, hidden, not delivered");
        }

        // Component added
        contListImpl = new ContainerListenerImpl();
        contList = AWTEventMulticaster.add(contListImpl, null);
        contList.componentAdded(new ContainerEvent(component,
                ContainerEvent.COMPONENT_ADDED, component));
        if (contListImpl.removed) {
            throw new RuntimeException("Wrong id delivered: removed");
        }
        if (!contListImpl.added) {
            throw new RuntimeException("Expected id, added, not delivered");
        }

        // Component removed
        contListImpl = new ContainerListenerImpl();
        contList = AWTEventMulticaster.add(contListImpl, null);
        contList.componentRemoved(new ContainerEvent(component,
                ContainerEvent.COMPONENT_REMOVED, component));
        if (contListImpl.added) {
            throw new RuntimeException("Wrong id delivered: added");
        }
        if (!contListImpl.removed) {
            throw new RuntimeException("Expected id, removed, not delivered");
        }

        // Focus gained
        focListImpl = new FocusListenerImpl();
        focList = AWTEventMulticaster.add(focListImpl, null);
        focList.focusGained(new FocusEvent(component, FocusEvent.FOCUS_GAINED));
        if (focListImpl.lost) {
            throw new RuntimeException("Wrong id delivered: lost");
        }
        if (!focListImpl.gained) {
            throw new RuntimeException("Expected id, gained, not delivered");
        }

        // Focus lost
        focListImpl = new FocusListenerImpl();
        focList = AWTEventMulticaster.add(focListImpl, null);
        focList.focusLost(new FocusEvent(component, FocusEvent.FOCUS_LOST));
        if (focListImpl.gained) {
            throw new RuntimeException("Wrong id delivered: gained");
        }
        if (!focListImpl.lost) {
            throw new RuntimeException("Expected id, lost, not delivered");
        }

        // Key typed
        keyListImpl = new KeyListenerImpl();
        keyList = AWTEventMulticaster.add(keyListImpl, null);
        keyList.keyTyped(new KeyEvent(component,
                KeyEvent.KEY_TYPED, 0L, 0, 0));
        if (keyListImpl.pressed || keyListImpl.released)
            throw new RuntimeException("Wrong id delivered: pressed || released");

        if (!keyListImpl.typed)
            throw new RuntimeException("Expected id, typed, not delivered");

        // Key pressed
        keyListImpl = new KeyListenerImpl();
        keyList = AWTEventMulticaster.add(keyListImpl, null);
        keyList.keyPressed(new KeyEvent(component,
                KeyEvent.KEY_PRESSED, 0L, 0, 0));
        if (keyListImpl.typed || keyListImpl.released)
            throw new RuntimeException("Wrong id delivered: typed || released");

        if (!keyListImpl.pressed)
            throw new RuntimeException("Expected id, pressed, not delivered");

        // Key released
        keyListImpl = new KeyListenerImpl();
        keyList = AWTEventMulticaster.add(keyListImpl, null);
        keyList.keyReleased(new KeyEvent(component,
                KeyEvent.KEY_RELEASED, 0L, 0, 0));
        if (keyListImpl.pressed || keyListImpl.typed)
            throw new RuntimeException("Wrong id delivered: pressed || typed");

        if (!keyListImpl.released)
            throw new RuntimeException("Expected id, released, not delivered");
    }
}