@@ -31,23 +31,30 @@ void ContextMenuHandler::OnBeforeContextMenu(
31
31
if (!jparams)
32
32
return ;
33
33
jobject jmodel = NewJNIObject (env, " org/cef/callback/CefMenuModel_N" );
34
- if (!jmodel)
34
+ if (!jmodel) {
35
+ env->DeleteLocalRef (jparams);
35
36
return ;
37
+ }
36
38
37
39
SetCefForJNIObject (env, jparams, params.get (), " CefContextMenuParams" );
38
40
SetCefForJNIObject (env, jmodel, model.get (), " CefMenuModel" );
39
41
42
+ jobject jframe = GetJNIFrame (env, frame);
43
+
40
44
JNI_CALL_VOID_METHOD (env, jhandler_, " onBeforeContextMenu" ,
41
45
" (Lorg/cef/browser/CefBrowser;Lorg/cef/browser/"
42
46
" CefFrame;Lorg/cef/callback/CefContextMenuParams;"
43
47
" Lorg/cef/callback/CefMenuModel;)V" ,
44
- GetJNIBrowser (browser), GetJNIFrame (env, frame), jparams,
45
- jmodel);
48
+ GetJNIBrowser (browser), jframe, jparams, jmodel);
46
49
47
50
// Do not keep references to |params| or |model| outside of this callback.
48
51
SetCefForJNIObject<CefContextMenuParams>(env, jparams, NULL ,
49
52
" CefContextMenuParams" );
50
53
SetCefForJNIObject<CefMenuModel>(env, jmodel, NULL , " CefMenuModel" );
54
+
55
+ env->DeleteLocalRef (jparams);
56
+ env->DeleteLocalRef (jmodel);
57
+ env->DeleteLocalRef (jframe);
51
58
}
52
59
53
60
bool ContextMenuHandler::OnContextMenuCommand (
@@ -67,17 +74,19 @@ bool ContextMenuHandler::OnContextMenuCommand(
67
74
SetCefForJNIObject (env, jparams, params.get (), " CefContextMenuParams" );
68
75
69
76
jboolean result = JNI_FALSE;
77
+ jobject jframe = GetJNIFrame (env, frame);
70
78
JNI_CALL_METHOD (env, jhandler_, " onContextMenuCommand" ,
71
79
" (Lorg/cef/browser/CefBrowser;Lorg/cef/browser/CefFrame;Lorg/"
72
80
" cef/callback/"
73
81
" CefContextMenuParams;II)Z" ,
74
- Boolean, result, GetJNIBrowser (browser),
75
- GetJNIFrame (env, frame), jparams, (jint)command_id,
76
- (jint)event_flags);
82
+ Boolean, result, GetJNIBrowser (browser), jframe, jparams,
83
+ (jint)command_id, (jint)event_flags);
77
84
78
85
// Do not keep references to |params| or |model| outside of this callback.
79
86
SetCefForJNIObject<CefContextMenuParams>(env, jparams, NULL ,
80
87
" CefContextMenuParams" );
88
+ env->DeleteLocalRef (jparams);
89
+ env->DeleteLocalRef (jframe);
81
90
return (result != JNI_FALSE);
82
91
}
83
92
@@ -87,8 +96,10 @@ void ContextMenuHandler::OnContextMenuDismissed(CefRefPtr<CefBrowser> browser,
87
96
if (!env)
88
97
return ;
89
98
99
+ jobject jframe = GetJNIFrame (env, frame);
90
100
JNI_CALL_VOID_METHOD (
91
101
env, jhandler_, " onContextMenuDismissed" ,
92
102
" (Lorg/cef/browser/CefBrowser;Lorg/cef/browser/CefFrame;)V" ,
93
- GetJNIBrowser (browser), GetJNIFrame (env, frame));
103
+ GetJNIBrowser (browser), jframe);
104
+ env->DeleteLocalRef (jframe);
94
105
}
0 commit comments