@@ -51,6 +51,8 @@ bool RequestHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
5151
5252 SetCefForJNIObject<CefRequest>(env, jframe, NULL , " CefFrame" );
5353 SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
54+ env->DeleteLocalRef (jframe);
55+ env->DeleteLocalRef (jrequest);
5456 return (result != JNI_FALSE);
5557}
5658
@@ -81,6 +83,8 @@ RequestHandler::ReturnValue RequestHandler::OnBeforeResourceLoad(
8183
8284 SetCefForJNIObject<CefRequest>(env, jframe, NULL , " CefFrame" );
8385 SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
86+ env->DeleteLocalRef (jframe);
87+ env->DeleteLocalRef (jrequest);
8488 return (result != JNI_FALSE) ? RV_CANCEL : RV_CONTINUE;
8589}
8690
@@ -97,8 +101,10 @@ CefRefPtr<CefResourceHandler> RequestHandler::GetResourceHandler(
97101 return NULL ;
98102
99103 jobject jrequest = NewJNIObject (env, " org/cef/network/CefRequest_N" );
100- if (!jrequest)
104+ if (!jrequest) {
105+ env->DeleteLocalRef (jframe);
101106 return NULL ;
107+ }
102108 SetCefForJNIObject (env, jrequest, request.get (), " CefRequest" );
103109
104110 jobject jhandler = NULL ;
@@ -107,15 +113,20 @@ CefRefPtr<CefResourceHandler> RequestHandler::GetResourceHandler(
107113 " cef/network/CefRequest;)"
108114 " Lorg/cef/handler/CefResourceHandler;" ,
109115 Object, jhandler, GetJNIBrowser (browser), jframe, jrequest);
110- if (!jhandler)
116+ if (!jhandler) {
117+ env->DeleteLocalRef (jframe);
118+ env->DeleteLocalRef (jrequest);
111119 return NULL ;
120+ }
112121 CefRefPtr<CefResourceHandler> handler = NULL ;
113122 handler = GetCefFromJNIObject<CefResourceHandler>(env, jhandler,
114123 " CefResourceHandler" );
115124 if (!handler.get ()) {
116125 handler = new ResourceHandler (env, jhandler);
117126 SetCefForJNIObject (env, jhandler, handler.get (), " CefResourceHandler" );
118127 }
128+ env->DeleteLocalRef (jframe);
129+ env->DeleteLocalRef (jrequest);
119130 return handler;
120131}
121132
@@ -165,13 +176,19 @@ bool RequestHandler::OnResourceResponse(CefRefPtr<CefBrowser> browser,
165176 return false ;
166177
167178 jobject jrequest = NewJNIObject (env, " org/cef/network/CefRequest_N" );
168- if (!jrequest)
179+ if (!jrequest) {
180+ env->DeleteLocalRef (jframe);
169181 return false ;
182+ }
170183 SetCefForJNIObject (env, jrequest, request.get (), " CefRequest" );
171184
172185 jobject jresponse = NewJNIObject (env, " org/cef/network/CefResponse_N" );
173- if (!jresponse)
186+ if (!jresponse) {
187+ SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
188+ env->DeleteLocalRef (jframe);
189+ env->DeleteLocalRef (jrequest);
174190 return false ;
191+ }
175192 SetCefForJNIObject (env, jresponse, response.get (), " CefResponse" );
176193
177194 jboolean result = JNI_FALSE;
@@ -184,6 +201,9 @@ bool RequestHandler::OnResourceResponse(CefRefPtr<CefBrowser> browser,
184201 SetCefForJNIObject<CefRequest>(env, jframe, NULL , " CefFrame" );
185202 SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
186203 SetCefForJNIObject<CefRequest>(env, jresponse, NULL , " CefResponse" );
204+ env->DeleteLocalRef (jframe);
205+ env->DeleteLocalRef (jrequest);
206+ env->DeleteLocalRef (jresponse);
187207 return (result != JNI_FALSE);
188208}
189209
@@ -203,13 +223,19 @@ void RequestHandler::OnResourceLoadComplete(
203223 return ;
204224
205225 jobject jrequest = NewJNIObject (env, " org/cef/network/CefRequest_N" );
206- if (!jrequest)
226+ if (!jrequest) {
227+ env->DeleteLocalRef (jframe);
207228 return ;
229+ }
208230 SetCefForJNIObject (env, jrequest, request.get (), " CefRequest" );
209231
210232 jobject jresponse = NewJNIObject (env, " org/cef/network/CefResponse_N" );
211- if (!jresponse)
233+ if (!jresponse) {
234+ SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
235+ env->DeleteLocalRef (jframe);
236+ env->DeleteLocalRef (jrequest);
212237 return ;
238+ }
213239 SetCefForJNIObject (env, jresponse, response.get (), " CefResponse" );
214240
215241 jobject jstatus = NewJNIURLRequestStatus (env, status);
@@ -227,6 +253,9 @@ void RequestHandler::OnResourceLoadComplete(
227253 SetCefForJNIObject<CefRequest>(env, jframe, NULL , " CefFrame" );
228254 SetCefForJNIObject<CefRequest>(env, jrequest, NULL , " CefRequest" );
229255 SetCefForJNIObject<CefRequest>(env, jresponse, NULL , " CefResponse" );
256+ env->DeleteLocalRef (jframe);
257+ env->DeleteLocalRef (jrequest);
258+ env->DeleteLocalRef (jresponse);
230259}
231260
232261bool RequestHandler::GetAuthCredentials (CefRefPtr<CefBrowser> browser,
0 commit comments