< prev index next >

test/jdk/java/awt/Window/MainKeyWindowTest/libTestMainKeyWindow.m

Print this page
rev 54093 : 8257858: [macOS]: Remove JNF dependency from libosxsecurity/KeystoreImpl.m
8257860: [macOS]: Remove JNF dependency from libosxkrb5/SCDynamicStoreConfig.m
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion

@@ -22,23 +22,57 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 
 #import <Cocoa/Cocoa.h>
-#import <JavaNativeFoundation/JavaNativeFoundation.h>
+#import <jni_util.h>
 
 static NSWindow *testWindow;
 static NSColorPanel *colorPanel;
 
+#define JNI_COCOA_ENTER(env) \
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; \
+ @try {
+
+#define JNI_COCOA_EXIT(env) \
+ } \
+ @catch (NSException *e) { \
+     NSLog(@"%@", [e callStackSymbols]); \
+ } \
+ @finally { \
+    [pool drain]; \
+  };
+
+/*
+ * Pass the block to a selector of a class that extends NSObject
+ * There is no need to copy the block since this class always waits.
+ */
+@interface BlockRunner : NSObject { }
+
++ (void)invokeBlock:(void (^)())block;
+@end
+
+@implementation BlockRunner
+
++ (void)invokeBlock:(void (^)())block{
+  block();
+}
+
++ (void)performBlock:(void (^)())block {
+  [self performSelectorOnMainThread:@selector(invokeBlock:) withObject:block waitUntilDone:YES];
+}
+
+@end
+
 /*
  * Class:     TestMainKeyWindow
  * Method:    setup
  * Signature: ()V
  */
 JNIEXPORT void JNICALL Java_TestMainKeyWindow_setup(JNIEnv *env, jclass cl)
 {
-    JNF_COCOA_ENTER(env);
+    JNI_COCOA_ENTER(env);
 
     void (^block)() = ^(){
         NSScreen *mainScreen = [NSScreen mainScreen];
         NSRect screenFrame = [mainScreen frame];
         NSRect frame = NSMakeRect(130, screenFrame.size.height - 280, 200, 100);

@@ -66,24 +100,24 @@
     };
 
     if ([NSThread isMainThread]) {
         block();
     } else {
-        [JNFRunLoop performOnMainThreadWaiting:YES withBlock:block];
+        [BlockRunner performBlock:block];
     }
 
-    JNF_COCOA_EXIT(env);
+    JNI_COCOA_EXIT(env);
 }
 
 /*
  * Class:     TestMainKeyWindow
  * Method:    takedown
  * Signature: ()V
  */
 JNIEXPORT void JNICALL Java_TestMainKeyWindow_takedown(JNIEnv *env, jclass cl)
 {
-    JNF_COCOA_ENTER(env);
+    JNI_COCOA_ENTER(env);
 
     void (^block)() = ^(){
         if (testWindow != nil) {
             [testWindow close];
             testWindow = nil;

@@ -95,29 +129,29 @@
     };
 
     if ([NSThread isMainThread]) {
         block();
     } else {
-        [JNFRunLoop performOnMainThreadWaiting:YES withBlock:block];
+        [BlockRunner performBlock:block];
     }
 
-    JNF_COCOA_EXIT(env);
+    JNI_COCOA_EXIT(env);
 }
 
 /*
  * Class:     TestMainKeyWindow
  * Method:    activateApplication
  * Signature: ()V
  */
 JNIEXPORT void JNICALL Java_TestMainKeyWindow_activateApplication
   (JNIEnv *env, jclass cl)
 {
-    JNF_COCOA_ENTER(env);
+    JNI_COCOA_ENTER(env);
 
     void (^block)() = ^(){
         [NSApp activateIgnoringOtherApps:YES];
     };
 
-    [JNFRunLoop performOnMainThreadWaiting:YES withBlock:block];
+    [BlockRunner performBlock:block];
 
-  JNF_COCOA_EXIT(env);
+  JNI_COCOA_EXIT(env);
 }
< prev index next >