bool KeyboardHandler::OnPreKeyEvent(CefRefPtr<CefBrowser> browser, const CefKeyEvent& event, CefEventHandle os_event, bool* is_keyboard_shortcut) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jevent = getjEvent(env, event); if (!jevent) return false; jobject jboolRef = NewJNIBoolRef(env, *is_keyboard_shortcut); if (!jboolRef) return false; jboolean jresult = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onPreKeyEvent", "(Lorg/cef/browser/CefBrowser;Lorg/cef/handler/CefKeyboardHandler$CefKeyEvent;Lorg/cef/misc/BoolRef;)Z", Boolean, jresult, GetJNIBrowser(browser), jevent, jboolRef); *is_keyboard_shortcut = GetJNIBoolRef(env, jboolRef); return (jresult != JNI_FALSE); }
bool JSDialogHandler::OnJSDialog(CefRefPtr<CefBrowser> browser, const CefString& origin_url, CefJSDialogHandler::JSDialogType dialog_type, const CefString& message_text, const CefString& default_prompt_text, CefRefPtr<CefJSDialogCallback> callback, bool& suppress_message) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jdialogType = NULL; switch (dialog_type) { default: JNI_CASE(env, "org/cef/handler/CefJSDialogHandler$JSDialogType", JSDIALOGTYPE_ALERT, jdialogType); JNI_CASE(env, "org/cef/handler/CefJSDialogHandler$JSDialogType", JSDIALOGTYPE_CONFIRM, jdialogType); JNI_CASE(env, "org/cef/handler/CefJSDialogHandler$JSDialogType", JSDIALOGTYPE_PROMPT, jdialogType); } jobject jboolRef = NewJNIBoolRef(env, suppress_message); if (!jboolRef) return false; jobject jcallback = NewJNIObject(env, "org/cef/callback/CefJSDialogCallback_N"); if (!jcallback) return false; SetCefForJNIObject(env, jcallback, callback.get(), "CefJSDialogCallback"); jboolean jresult = JNI_FALSE; JNI_CALL_METHOD( env, jhandler_, "onJSDialog", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;" "Lorg/cef/handler/CefJSDialogHandler$JSDialogType;Ljava/lang/String;" "Ljava/lang/String;Lorg/cef/callback/CefJSDialogCallback;Lorg/cef/misc/" "BoolRef;)Z", Boolean, jresult, GetJNIBrowser(browser), NewJNIString(env, origin_url), jdialogType, NewJNIString(env, message_text), NewJNIString(env, default_prompt_text), jcallback, jboolRef); suppress_message = GetJNIBoolRef(env, jboolRef); if (jresult == JNI_FALSE) { // If the java method returns "false", the callback won't be used and // therefore the reference can be removed. SetCefForJNIObject<CefJSDialogCallback>(env, jcallback, NULL, "CefJSDialogCallback"); } return (jresult != JNI_FALSE); }