26 package sun.awt.X11; |
26 package sun.awt.X11; |
27 |
27 |
28 //import static sun.awt.X11.XEmbed.*; |
28 //import static sun.awt.X11.XEmbed.*; |
29 import java.awt.*; |
29 import java.awt.*; |
30 import java.awt.event.*; |
30 import java.awt.event.*; |
31 import java.util.logging.*; |
31 import sun.util.logging.PlatformLogger; |
32 import static sun.awt.X11.XConstants.*; |
32 import static sun.awt.X11.XConstants.*; |
33 import java.util.LinkedList; |
33 import java.util.LinkedList; |
34 |
34 |
35 /** |
35 /** |
36 * Test XEmbed server implementation. See file:///home/dom/bugs/4931668/test_plan.html for |
36 * Test XEmbed server implementation. See file:///home/dom/bugs/4931668/test_plan.html for |
37 * specification and references. |
37 * specification and references. |
38 */ |
38 */ |
39 public class XEmbedServerTester implements XEventDispatcher { |
39 public class XEmbedServerTester implements XEventDispatcher { |
40 private static final Logger xembedLog = Logger.getLogger("sun.awt.X11.xembed.XEmbedServerTester"); |
40 private static final PlatformLogger xembedLog = PlatformLogger.getLogger("sun.awt.X11.xembed.XEmbedServerTester"); |
41 private final Object EVENT_LOCK = new Object(); |
41 private final Object EVENT_LOCK = new Object(); |
42 static final int SYSTEM_EVENT_MASK = 0x8000; |
42 static final int SYSTEM_EVENT_MASK = 0x8000; |
43 int my_version, server_version; |
43 int my_version, server_version; |
44 XEmbedHelper xembed = new XEmbedHelper(); |
44 XEmbedHelper xembed = new XEmbedHelper(); |
45 boolean focused; |
45 boolean focused; |
542 eventWaited = event; |
542 eventWaited = event; |
543 xembedLog.finer("Waiting for " + XEmbedHelper.msgidToString(event) + " starting from " + position); |
543 xembedLog.finer("Waiting for " + XEmbedHelper.msgidToString(event) + " starting from " + position); |
544 try { |
544 try { |
545 EVENT_LOCK.wait(3000); |
545 EVENT_LOCK.wait(3000); |
546 } catch (InterruptedException ie) { |
546 } catch (InterruptedException ie) { |
547 xembedLog.log(Level.WARNING, "Event wait interrupted", ie); |
547 xembedLog.warning("Event wait interrupted", ie); |
548 } |
548 } |
549 eventWaited = -1; |
549 eventWaited = -1; |
550 if (checkEventList(position, event) == -1) { |
550 if (checkEventList(position, event) == -1) { |
551 dumpReceivedEvents(); |
551 dumpReceivedEvents(); |
552 throw new RuntimeException("Didn't receive event " + XEmbedHelper.msgidToString(event) + " but recevied " + XEmbedHelper.msgidToString(eventReceived)); |
552 throw new RuntimeException("Didn't receive event " + XEmbedHelper.msgidToString(event) + " but recevied " + XEmbedHelper.msgidToString(eventReceived)); |
632 |
632 |
633 public void dispatchEvent(XEvent ev) { |
633 public void dispatchEvent(XEvent ev) { |
634 if (ev.get_type() == ClientMessage) { |
634 if (ev.get_type() == ClientMessage) { |
635 XClientMessageEvent msg = ev.get_xclient(); |
635 XClientMessageEvent msg = ev.get_xclient(); |
636 if (msg.get_message_type() == xembed.XEmbed.getAtom()) { |
636 if (msg.get_message_type() == xembed.XEmbed.getAtom()) { |
637 if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Embedded message: " + XEmbedHelper.msgidToString((int)msg.get_data(1))); |
637 if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Embedded message: " + XEmbedHelper.msgidToString((int)msg.get_data(1))); |
638 switch ((int)msg.get_data(1)) { |
638 switch ((int)msg.get_data(1)) { |
639 case XEmbedHelper.XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start |
639 case XEmbedHelper.XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start |
640 xembedActive = true; |
640 xembedActive = true; |
641 server_version = (int)msg.get_data(3); |
641 server_version = (int)msg.get_data(3); |
642 break; |
642 break; |