CefRefPtr<CefResourceHandler> SchemeHandlerFactory::Create( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& scheme_name, CefRefPtr<CefRequest> request) { JNIEnv* env = GetJNIEnv(); if (!env) return NULL; jobject jRequest = NewJNIObject(env, "org/cef/network/CefRequest_N"); if (jRequest != NULL) SetCefForJNIObject(env, jRequest, request.get(), "CefRequest"); jobject jResourceHandler = NULL; JNI_CALL_METHOD(env, jfactory_, "create", "(Lorg/cef/browser/CefBrowser;Lorg/cef/browser/" "CefFrame;Ljava/lang/String;Lorg/cef/" "network/CefRequest;)Lorg/cef/handler/CefResourceHandler;", Object, jResourceHandler, GetJNIBrowser(browser), GetJNIFrame(env, frame), NewJNIString(env, scheme_name), jRequest); if (jRequest != NULL) SetCefForJNIObject<CefRequest>(env, jRequest, NULL, "CefRequest"); if (!jResourceHandler) return NULL; CefRefPtr<CefResourceHandler> result = new ResourceHandler(env, jResourceHandler); return result; }
bool LifeSpanHandler::OnBeforePopup(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& target_url, const CefString& target_frame_name, const CefPopupFeatures& popupFeatures, CefWindowInfo& windowInfo, CefRefPtr<CefClient>& client, CefBrowserSettings& settings, bool* no_javascript_access) { if (browser->GetHost()->IsWindowRenderingDisabled()) { // Cancel popups in off-screen rendering mode. return true; } JNIEnv* env = GetJNIEnv(); if (!env) return false; jboolean jreturn = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onBeforePopup", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;Ljava/lang/String;)Z", Boolean, jreturn, GetJNIBrowser(browser), NewJNIString(env, target_url), NewJNIString(env, target_frame_name)); return (jreturn != JNI_FALSE); }
bool ContextMenuHandler::OnContextMenuCommand(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, int command_id, EventFlags event_flags) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jparams = NewJNIObject(env, "org/cef/callback/CefContextMenuParams_N"); if (!jparams) return false; SetCefForJNIObject(env, jparams, params.get(), "CefContextMenuParams"); jboolean result = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onContextMenuCommand", "(Lorg/cef/browser/CefBrowser;Lorg/cef/callback/CefContextMenuParams;II)Z", Boolean, result, GetJNIBrowser(browser), jparams, (jint)command_id, (jint)event_flags); // Do not keep references to |params| or |model| outside of this callback. SetCefForJNIObject<CefContextMenuParams>(env, jparams, NULL, "CefContextMenuParams"); return (result != JNI_FALSE); }
bool DragHandler::OnDragEnter(CefRefPtr<CefBrowser> browser, CefRefPtr<CefDragData> dragData, CefDragHandler::DragOperationsMask mask) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jdragdata = NewJNIObject(env, "org/cef/callback/CefDragData_N"); if (!jdragdata) return false; SetCefForJNIObject(env, jdragdata, dragData.get(), "CefDragData"); jboolean result = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onDragEnter", "(Lorg/cef/browser/CefBrowser;Lorg/cef/callback/CefDragData;I)Z", Boolean, result, GetJNIBrowser(browser), jdragdata, (jint)mask); //Remove native reference from java class SetCefForJNIObject<CefDragData>(env, jdragdata, NULL, "CefDragData"); return (result != JNI_FALSE); }
void ContextMenuHandler::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) { JNIEnv* env = GetJNIEnv(); if (!env) return; jobject jparams = NewJNIObject(env, "org/cef/callback/CefContextMenuParams_N"); if (!jparams) return; jobject jmodel = NewJNIObject(env, "org/cef/callback/CefMenuModel_N"); if (!jmodel) return; SetCefForJNIObject(env, jparams, params.get(), "CefContextMenuParams"); SetCefForJNIObject(env, jmodel, model.get(), "CefMenuModel"); JNI_CALL_VOID_METHOD(env, jhandler_, "onBeforeContextMenu", "(Lorg/cef/browser/CefBrowser;Lorg/cef/callback/CefContextMenuParams;" "Lorg/cef/callback/CefMenuModel;)V", GetJNIBrowser(browser), jparams, jmodel); // Do not keep references to |params| or |model| outside of this callback. SetCefForJNIObject<CefContextMenuParams>(env, jparams, NULL, "CefContextMenuParams"); SetCefForJNIObject<CefMenuModel>(env, jmodel, NULL, "CefMenuModel"); }
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::OnBeforeUnloadDialog( CefRefPtr<CefBrowser> browser, const CefString& message_text, bool is_reload, CefRefPtr<CefJSDialogCallback> callback) { JNIEnv* env = GetJNIEnv(); if (!env) 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_, "onBeforeUnloadDialog", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;ZLorg/cef/" "callback/CefJSDialogCallback;)Z", Boolean, jresult, GetJNIBrowser(browser), NewJNIString(env, message_text), (is_reload ? JNI_TRUE : JNI_FALSE), jcallback); 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); }
bool RenderHandler::GetScreenPoint(CefRefPtr<CefBrowser> browser, int viewX, int viewY, int& screenX, int& screenY) { return GetScreenPoint(GetJNIBrowser(browser), viewX, viewY, screenX, screenY); }
void JSDialogHandler::OnDialogClosed(CefRefPtr<CefBrowser> browser) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onDialogClosed", "(Lorg/cef/browser/CefBrowser;)V", GetJNIBrowser(browser)); }
void ContextMenuHandler::OnContextMenuDismissed(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onContextMenuDismissed", "(Lorg/cef/browser/CefBrowser;)V", GetJNIBrowser(browser)); }
void DisplayHandler::OnStatusMessage(CefRefPtr<CefBrowser> browser, const CefString& value) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onStatusMessage", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;)V", GetJNIBrowser(browser), NewJNIString(env, value)); }
void RenderHandler::OnPopupShow(CefRefPtr<CefBrowser> browser, bool show) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onPopupShow", "(Lorg/cef/browser/CefBrowser;Z)V", GetJNIBrowser(browser), (jboolean)show); }
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); }
void DisplayHandler::OnAddressChange(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& url) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onAddressChange", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;)V", GetJNIBrowser(browser), NewJNIString(env, url)); }
void LifeSpanHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) { REQUIRE_UI_THREAD(); JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onBeforeClose", "(Lorg/cef/browser/CefBrowser;)V", GetJNIBrowser(browser)); CefRefPtr<ClientHandler> client = (ClientHandler*)browser->GetHost()->GetClient().get(); client->OnBeforeClose(browser); }
void RenderHandler::OnCursorChange(CefRefPtr<CefBrowser> browser, CefCursorHandle cursor) { JNIEnv* env = GetJNIEnv(); if (!env) return; const int cursorId = NativeGetCursorId(cursor); JNI_CALL_VOID_METHOD(env, jhandler_, "onCursorChange", "(Lorg/cef/browser/CefBrowser;I)V", GetJNIBrowser(browser), cursorId); }
bool LifeSpanHandler::DoClose(CefRefPtr<CefBrowser> browser) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jboolean jreturn = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "doClose", "(Lorg/cef/browser/CefBrowser;)Z", Boolean, jreturn, GetJNIBrowser(browser)); return (jreturn != JNI_FALSE); }
void WindowHandler::OnMouseEvent(CefRefPtr<CefBrowser> browser, int mouseEvent, int absX, int absY, int modifier, int button) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onMouseEvent", "(Lorg/cef/browser/CefBrowser;IIIII)V", GetJNIBrowser(browser), (jint)mouseEvent, (jint)absX, (jint)absY, (jint)modifier, (jint)button); }
bool DisplayHandler::OnTooltip(CefRefPtr<CefBrowser> browser, CefString& text) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jboolean jreturn = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onTooltip", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;)Z", Boolean, jreturn, GetJNIBrowser(browser), NewJNIString(env, text)); return (jreturn != JNI_FALSE); }
void RenderHandler::OnPopupSize(CefRefPtr<CefBrowser> browser, const CefRect& rect) { JNIEnv* env = GetJNIEnv(); if (!env) return; jobject rect_obj = NewJNIRect(env, rect); if (!rect_obj) return; JNI_CALL_VOID_METHOD(env, jhandler_, "onPopupSize", "(Lorg/cef/browser/CefBrowser;Ljava/awt/Rectangle;)V", GetJNIBrowser(browser), rect_obj); env->DeleteLocalRef(rect_obj); }
bool DisplayHandler::OnConsoleMessage(CefRefPtr<CefBrowser> browser, const CefString& message, const CefString& source, int line) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jboolean jreturn = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onConsoleMessage", "(Lorg/cef/browser/CefBrowser;Ljava/lang/String;Ljava/lang/String;I)Z", Boolean, jreturn, GetJNIBrowser(browser), NewJNIString(env, message), NewJNIString(env, source), line ); return (jreturn != JNI_FALSE); }
bool KeyboardHandler::OnKeyEvent(CefRefPtr<CefBrowser> browser, const CefKeyEvent& event, CefEventHandle os_event) { JNIEnv* env = GetJNIEnv(); if (!env) return false; jobject jevent = getjEvent(env, event); if (!jevent) return false; jboolean jresult = JNI_FALSE; JNI_CALL_METHOD(env, jhandler_, "onKeyEvent", "(Lorg/cef/browser/CefBrowser;Lorg/cef/handler/CefKeyboardHandler$CefKeyEvent;)Z", Boolean, jresult, GetJNIBrowser(browser), jevent); return (jresult != JNI_FALSE); }
void RenderHandler::OnPaint(CefRefPtr<CefBrowser> browser, PaintElementType type, const RectList& dirtyRects, const void* buffer, int width, int height) { JNIEnv* env = GetJNIEnv(); if (!env) return; jobjectArray rect_array = NewJNIRectArray(env, dirtyRects); jobject direct_buffer = env->NewDirectByteBuffer(const_cast<void*>(buffer), width * height * 4); jboolean jtype = type == PET_VIEW ? JNI_FALSE : JNI_TRUE; JNI_CALL_VOID_METHOD(env, jhandler_, "onPaint", "(Lorg/cef/browser/CefBrowser;Z[Ljava/awt/Rectangle;Ljava/nio/ByteBuffer;II)V", GetJNIBrowser(browser), jtype, rect_array, direct_buffer, width, height); env->DeleteLocalRef(rect_array); env->DeleteLocalRef(direct_buffer); }
bool WindowHandler::GetRect(CefRefPtr<CefBrowser> browser, CefRect& rect) { return GetRect(GetJNIBrowser(browser), rect); }
bool RenderHandler::GetViewRect(CefRefPtr<CefBrowser> browser, CefRect& rect) { return GetViewRect(GetJNIBrowser(browser), rect); }