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"); }
void StringVisitor::Visit(const CefString& string) { JNIEnv* env = GetJNIEnv(); if (!env) return; JNI_CALL_VOID_METHOD(env, jvisitor_, "visit", "(Ljava/lang/String;)V", NewJNIString(env, string)); }
jobject NewJNIDate(JNIEnv* env, const CefTime& time) { jobject jdate = NewJNIObject(env, "java/util/Date"); if (!jdate) return NULL; double timestamp = time.GetDoubleT() * 1000; JNI_CALL_VOID_METHOD(env, jdate, "setTime", "(J)V",(jlong)timestamp); return jdate; }
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 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); }
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::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); }
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 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); }
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); }
JNIEXPORT void JNICALL Java_org_cef_misc_CefPrintSettings_1N_N_1GetPageRanges (JNIEnv *env, jobject obj , jobject jrangeVector) { CefRefPtr<CefPrintSettings> settings = GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings"); if (!settings || !jrangeVector) return; CefPrintSettings::PageRangeList rangeList; settings->GetPageRanges(rangeList); CefPrintSettings::PageRangeList::size_type i = 0; for (i=0; i < rangeList.size(); ++i) { jobject range = NewJNIPageRange(env, rangeList.at(i)); JNI_CALL_VOID_METHOD(env, jrangeVector, "addElement", "(Ljava/lang/Object;)V", range); } }
void LifeSpanHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser) { JNIEnv* env = GetJNIEnv(); if (!env || jbrowsers_.empty()) return; jobject jbrowser = jbrowsers_.front(); jbrowsers_.pop_front(); CefRefPtr<ClientHandler> client = (ClientHandler*)browser->GetHost()->GetClient().get(); client->OnAfterCreated(); if (SetCefForJNIObject(env, jbrowser, browser.get(), "CefBrowser")) { JNI_CALL_VOID_METHOD(env, jhandler_, "onAfterCreated", "(Lorg/cef/browser/CefBrowser;)V", jbrowser); } env->DeleteGlobalRef(jbrowser); }
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); }
void AddJNIStringToVector(JNIEnv* env, jobject jvector, const CefString &str) { jstring argument = NewJNIString(env, str); JNI_CALL_VOID_METHOD(env, jvector, "addElement", "(Ljava/lang/Object;)V",argument); }
void SetJNIStringRef(JNIEnv* env, jobject jstringRef, const CefString& stringValue) { JNI_CALL_VOID_METHOD(env, jstringRef, "set", "(Ljava/lang/String;)V", NewJNIString(env, stringValue)); }
void SetJNIIntRef(JNIEnv* env, jobject jintRef, int intValue) { JNI_CALL_VOID_METHOD(env, jintRef, "set", "(I)V", intValue); }
void SetJNIBoolRef(JNIEnv* env, jobject jboolRef, bool boolValue) { JNI_CALL_VOID_METHOD(env, jboolRef, "set", "(Z)V", (boolValue ? JNI_TRUE : JNI_FALSE)); }
int WriteHandler::Flush() { BEGIN_ENV(env) JNI_CALL_VOID_METHOD(env, jOutputStream_, "flush", "()V"); END_ENV(env) return 0; }