< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m
Print this page
rev 54094 : 8257853: Remove dependencies on JNF's JNI utility functions in AWT and 2D code
rev 54097 : 8259869: [macOS] Remove desktop module dependencies on JNF Reference APIs
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion
rev 54101 : 8259585: Accessible actions do not work on mac os x
Reviewed-by: serb
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021, 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. Oracle designates this
@@ -25,69 +25,85 @@
#import "JavaAccessibilityAction.h"
#import "JavaAccessibilityUtilities.h"
#import "ThreadUtilities.h"
+#import "JNIUtilities.h"
@implementation JavaAxAction
- (id)initWithEnv:(JNIEnv *)env withAccessibleAction:(jobject)accessibleAction withIndex:(jint)index withComponent:(jobject)component
{
self = [super init];
if (self) {
- fAccessibleAction = JNFNewWeakGlobalRef(env, accessibleAction);
+ fAccessibleAction = (*env)->NewWeakGlobalRef(env, accessibleAction);
+ CHECK_EXCEPTION();
fIndex = index;
- fComponent = JNFNewWeakGlobalRef(env, component);
+ fComponent = (*env)->NewWeakGlobalRef(env, component);
+ CHECK_EXCEPTION();
}
return self;
}
- (void)dealloc
{
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
- JNFDeleteWeakGlobalRef(env, fAccessibleAction);
+ (*env)->DeleteWeakGlobalRef(env, fAccessibleAction);
fAccessibleAction = NULL;
- JNFDeleteWeakGlobalRef(env, fComponent);
+ (*env)->DeleteWeakGlobalRef(env, fComponent);
fComponent = NULL;
[super dealloc];
}
- (NSString *)getDescription
{
- static JNF_STATIC_MEMBER_CACHE(jm_getAccessibleActionDescription, sjc_CAccessibility, "getAccessibleActionDescription", "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)Ljava/lang/String;");
-
JNIEnv* env = [ThreadUtilities getJNIEnv];
+ DECLARE_CLASS_RETURN(sjc_CAccessibility, "sun/lwawt/macosx/CAccessibility", nil);
+ DECLARE_STATIC_METHOD_RETURN(jm_getAccessibleActionDescription, sjc_CAccessibility,
+ "getAccessibleActionDescription",
+ "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)Ljava/lang/String;", nil);
+ /* WeakGlobalRefs can be cleared at any time, so first get strong local refs and use those */
jobject fCompLocal = (*env)->NewLocalRef(env, fComponent);
if ((*env)->IsSameObject(env, fCompLocal, NULL)) {
return nil;
}
+ jobject fAccessibleActionLocal = (*env)->NewLocalRef(env, fAccessibleAction);
+ if ((*env)->IsSameObject(env, fAccessibleActionLocal, NULL)) {
+ (*env)->DeleteLocalRef(env, fCompLocal);
+ return nil;
+ }
NSString *str = nil;
- jstring jstr = JNFCallStaticObjectMethod( env,
+ jstring jstr = (*env)->CallStaticObjectMethod(env, sjc_CAccessibility,
jm_getAccessibleActionDescription,
- fAccessibleAction,
+ fAccessibleActionLocal,
fIndex,
fCompLocal );
+ CHECK_EXCEPTION();
if (jstr != NULL) {
- str = JNFJavaToNSString(env, jstr); // AWT_THREADING Safe (AWTRunLoopMode)
+ str = JavaStringToNSString(env, jstr);
(*env)->DeleteLocalRef(env, jstr);
}
(*env)->DeleteLocalRef(env, fCompLocal);
+ (*env)->DeleteLocalRef(env, fAccessibleActionLocal);
return str;
}
- (void)perform
{
- static JNF_STATIC_MEMBER_CACHE(jm_doAccessibleAction, sjc_CAccessibility, "doAccessibleAction", "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)V");
-
JNIEnv* env = [ThreadUtilities getJNIEnv];
-
- JNFCallStaticVoidMethod(env, jm_doAccessibleAction, fAccessibleAction, fIndex, fComponent); // AWT_THREADING Safe (AWTRunLoopMode)
+ DECLARE_CLASS(sjc_CAccessibility, "sun/lwawt/macosx/CAccessibility");
+ DECLARE_STATIC_METHOD(jm_doAccessibleAction, sjc_CAccessibility, "doAccessibleAction",
+ "(Ljavax/accessibility/AccessibleAction;ILjava/awt/Component;)V");
+
+ (*env)->CallStaticVoidMethod(env, sjc_CAccessibility, jm_doAccessibleAction,
+ fAccessibleAction, fIndex, fComponent);
+ CHECK_EXCEPTION();
}
@end
@@ -95,25 +111,27 @@
- (id)initWithEnv:(JNIEnv *)env withTabGroup:(jobject)tabGroup withIndex:(jint)index withComponent:(jobject)component
{
self = [super init];
if (self) {
- fTabGroup = JNFNewWeakGlobalRef(env, tabGroup);
+ fTabGroup = (*env)->NewWeakGlobalRef(env, tabGroup);
+ CHECK_EXCEPTION();
fIndex = index;
- fComponent = JNFNewWeakGlobalRef(env, component);
+ fComponent = (*env)->NewWeakGlobalRef(env, component);
+ CHECK_EXCEPTION();
}
return self;
}
- (void)dealloc
{
JNIEnv *env = [ThreadUtilities getJNIEnvUncached];
- JNFDeleteWeakGlobalRef(env, fTabGroup);
+ (*env)->DeleteWeakGlobalRef(env, fTabGroup);
fTabGroup = NULL;
- JNFDeleteWeakGlobalRef(env, fComponent);
+ (*env)->DeleteWeakGlobalRef(env, fComponent);
fComponent = NULL;
[super dealloc];
}
< prev index next >