提交 873f5572 编写于 作者: L lana

Merge

/* /*
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -40,10 +40,17 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease ...@@ -40,10 +40,17 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease
if (releaseOnAppKitThread) { if (releaseOnAppKitThread) {
// Releasing resources on the main AppKit message loop only // Releasing resources on the main AppKit message loop only
// Releasing resources on the nested loops may cause dangling // Releasing resources on the nested loops may cause dangling
// pointers after the nested loop is exited // pointers after the nested loop is exited
[NSApp postRunnableEvent:^(){ if ([NSApp respondsToSelector:@selector(postRunnableEvent:)]) {
CFRelease(jlong_to_ptr(ptr)); [NSApp postRunnableEvent:^() {
}]; CFRelease(jlong_to_ptr(ptr));
}];
} else {
// could happen if we are embedded inside SWT/FX application,
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
CFRelease(jlong_to_ptr(ptr));
}];
}
} else { } else {
JNF_COCOA_ENTER(env); JNF_COCOA_ENTER(env);
......
...@@ -682,12 +682,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable { ...@@ -682,12 +682,7 @@ abstract class AppletPanel extends Panel implements AppletStub, Runnable {
if (toFocus != null) { if (toFocus != null) {
if (parent instanceof EmbeddedFrame) { if (parent instanceof EmbeddedFrame) {
// JDK-8056915: Try to request focus to the embedder first and ((EmbeddedFrame) parent).synthesizeWindowActivation(true);
// activate the embedded frame through it
if (!((EmbeddedFrame) parent).requestFocusToEmbedder()) {
// Otherwise activate the embedded frame directly
((EmbeddedFrame) parent).synthesizeWindowActivation(true);
}
} }
// EmbeddedFrame might have focus before the applet was added. // EmbeddedFrame might have focus before the applet was added.
// Thus after its activation the most recent focus owner will be // Thus after its activation the most recent focus owner will be
......
...@@ -360,15 +360,6 @@ public abstract class EmbeddedFrame extends Frame ...@@ -360,15 +360,6 @@ public abstract class EmbeddedFrame extends Frame
*/ */
public void synthesizeWindowActivation(boolean doActivate) {} public void synthesizeWindowActivation(boolean doActivate) {}
/**
* Requests the focus to the embedder.
*
* @return {@code true} if focus request was successful, and {@code false} otherwise.
*/
public boolean requestFocusToEmbedder() {
return false;
}
/** /**
* Moves this embedded frame to a new location. The top-left corner of * Moves this embedded frame to a new location. The top-left corner of
* the new location is specified by the <code>x</code> and <code>y</code> * the new location is specified by the <code>x</code> and <code>y</code>
......
...@@ -248,14 +248,6 @@ public class WEmbeddedFrame extends EmbeddedFrame { ...@@ -248,14 +248,6 @@ public class WEmbeddedFrame extends EmbeddedFrame {
} }
} }
@SuppressWarnings("deprecation")
public boolean requestFocusToEmbedder() {
if (isEmbeddedInIE) {
return ((WEmbeddedFramePeer) getPeer()).requestFocusToEmbedder();
}
return false;
}
public void registerAccelerator(AWTKeyStroke stroke) {} public void registerAccelerator(AWTKeyStroke stroke) {}
public void unregisterAccelerator(AWTKeyStroke stroke) {} public void unregisterAccelerator(AWTKeyStroke stroke) {}
......
...@@ -79,10 +79,4 @@ public class WEmbeddedFramePeer extends WFramePeer { ...@@ -79,10 +79,4 @@ public class WEmbeddedFramePeer extends WFramePeer {
return !Win32GraphicsEnvironment.isDWMCompositionEnabled(); return !Win32GraphicsEnvironment.isDWMCompositionEnabled();
} }
/**
* Sets the focus to plugin control window, the parent of embedded frame.
* Eventually, it will synthesizeWindowActivation to activate the embedded frame,
* if plugin control window gets the focus.
*/
public native boolean requestFocusToEmbedder();
} }
...@@ -1961,29 +1961,6 @@ Java_sun_awt_windows_WFramePeer_synthesizeWmActivate(JNIEnv *env, jobject self, ...@@ -1961,29 +1961,6 @@ Java_sun_awt_windows_WFramePeer_synthesizeWmActivate(JNIEnv *env, jobject self,
CATCH_BAD_ALLOC; CATCH_BAD_ALLOC;
} }
JNIEXPORT jboolean JNICALL
Java_sun_awt_windows_WEmbeddedFramePeer_requestFocusToEmbedder(JNIEnv *env, jobject self)
{
jboolean result = JNI_FALSE;
TRY;
AwtFrame *frame = NULL;
PDATA pData;
JNI_CHECK_PEER_GOTO(self, ret);
frame = (AwtFrame *)pData;
// JDK-8056915: During initial applet activation, set focus to plugin control window
HWND hwndParent = ::GetParent(frame->GetHWnd());
result = SetFocusToPluginControl(hwndParent);
CATCH_BAD_ALLOC_RET(JNI_FALSE);
ret:
return result;
}
} /* extern "C" */ } /* extern "C" */
static bool SetFocusToPluginControl(HWND hwndPlugin) static bool SetFocusToPluginControl(HWND hwndPlugin)
......
...@@ -168,6 +168,11 @@ public class CatchExceptionTest { ...@@ -168,6 +168,11 @@ public class CatchExceptionTest {
try { try {
returned = target.invokeWithArguments(args); returned = target.invokeWithArguments(args);
} catch (Throwable ex) { } catch (Throwable ex) {
if (CodeCacheOverflowProcessor.isThrowableCausedByVME(ex)) {
// This error will be treated by CodeCacheOverflowProcessor
// to prevent the test from failing because of code cache overflow.
throw new Error(ex);
}
testCase.assertCatch(ex); testCase.assertCatch(ex);
returned = ex; returned = ex;
} }
......
...@@ -382,6 +382,16 @@ public class TestLibrary { ...@@ -382,6 +382,16 @@ public class TestLibrary {
return LocateRegistry.createRegistry(getUnusedRandomPort()); return LocateRegistry.createRegistry(getUnusedRandomPort());
} }
/**
* Creates an RMI {@link Registry} on an ephemeral port.
*
* @returns an RMI Registry
* @throws RemoteException if there was a problem creating a Registry.
*/
public static Registry createRegistryOnEphemeralPort() throws RemoteException {
return LocateRegistry.createRegistry(0);
}
/** /**
* Returns the port number the RMI {@link Registry} is running on. * Returns the port number the RMI {@link Registry} is running on.
* *
......
...@@ -58,7 +58,6 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -58,7 +58,6 @@ import java.util.concurrent.atomic.AtomicInteger;
public class PinClientSocketFactory { public class PinClientSocketFactory {
private static final int PORT = TestLibrary.getUnusedRandomPort();
private static final int SESSIONS = 50; private static final int SESSIONS = 50;
public interface Factory extends Remote { public interface Factory extends Remote {
...@@ -96,10 +95,13 @@ public class PinClientSocketFactory { ...@@ -96,10 +95,13 @@ public class PinClientSocketFactory {
} }
UnicastRemoteObject.unexportObject(factoryImpl, true); UnicastRemoteObject.unexportObject(factoryImpl, true);
Registry registryImpl = LocateRegistry.createRegistry(PORT); Registry registryImpl = TestLibrary.createRegistryOnEphemeralPort();
int port = TestLibrary.getRegistryPort(registryImpl);
System.out.println("Registry listening on port " + port);
CSF csf = new CSF(); CSF csf = new CSF();
Reference<CSF> registryRef = new WeakReference<CSF>(csf); Reference<CSF> registryRef = new WeakReference<CSF>(csf);
Registry registryStub = LocateRegistry.getRegistry("", PORT, csf); Registry registryStub = LocateRegistry.getRegistry("", port, csf);
csf = null; csf = null;
registryStub.list(); registryStub.list();
registryStub = null; registryStub = null;
......
/* /*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
* 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133 * 6358731 6178785 6284152 6231989 6497148 6486934 6233084 6504326 6635133
* 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066 * 6350801 6676425 6878475 6919132 6931676 6948903 6990617 7014645 7039066
* 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590 * 7067045 7014640 7189363 8007395 8013252 8013254 8012646 8023647 6559590
* 8027645 * 8027645 6854417
*/ */
import java.util.regex.*; import java.util.regex.*;
...@@ -3131,15 +3131,26 @@ public class RegExTest { ...@@ -3131,15 +3131,26 @@ public class RegExTest {
// Create a short pattern to search for // Create a short pattern to search for
int patternLength = generator.nextInt(7) + 4; int patternLength = generator.nextInt(7) + 4;
StringBuffer patternBuffer = new StringBuffer(patternLength); StringBuffer patternBuffer = new StringBuffer(patternLength);
for (int x=0; x<patternLength; x++) { String pattern;
int ch = baseCharacter + generator.nextInt(26); retry: for (;;) {
if (Character.isSupplementaryCodePoint(ch)) { for (int x=0; x<patternLength; x++) {
patternBuffer.append(Character.toChars(ch)); int ch = baseCharacter + generator.nextInt(26);
} else { if (Character.isSupplementaryCodePoint(ch)) {
patternBuffer.append((char)ch); patternBuffer.append(Character.toChars(ch));
} else {
patternBuffer.append((char)ch);
}
}
pattern = patternBuffer.toString();
// Avoid patterns that start and end with the same substring
// See JDK-6854417
for (int x=1; x <patternLength; x++) {
if (pattern.startsWith(pattern.substring(x)))
continue retry;
} }
break;
} }
String pattern = patternBuffer.toString();
Pattern p = Pattern.compile(pattern); Pattern p = Pattern.compile(pattern);
// Create a buffer with random ASCII chars that does // Create a buffer with random ASCII chars that does
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册