JNIEXPORT jstring JNICALL Java_org_cef_browser_CefBrowser_1N_N_1GetURL (JNIEnv *env, jobject obj) { jstring tmp = NewJNIString(env,""); CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj, tmp); return NewJNIString(env, browser->GetMainFrame()->GetURL()); }
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 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 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)); }
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); }
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; }
JNIEXPORT jstring JNICALL Java_org_cef_network_CefResponse_1N_N_1GetHeader (JNIEnv *env, jobject obj, jstring jheader) { CefRefPtr<CefResponse> response = GetCefFromJNIObject<CefResponse>(env, obj, "CefResponse"); if (!response) return NULL; return NewJNIString(env, response->GetHeader(GetJNIString(env, jheader))); }
JNIEXPORT jstring JNICALL Java_org_cef_callback_CefDownloadItem_1N_N_1GetMimeType (JNIEnv *env, jobject obj) { CefRefPtr<CefDownloadItem> downloadItem = GetCefFromJNIObject<CefDownloadItem>(env, obj, "CefDownloadItem"); if (!downloadItem.get()) return NULL; return NewJNIString(env, downloadItem->GetMimeType()); }
JNIEXPORT jstring JNICALL Java_org_cef_misc_CefPrintSettings_1N_N_1GetDeviceName (JNIEnv *env, jobject obj) { CefRefPtr<CefPrintSettings> settings = GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings"); if (!settings) return NULL; return NewJNIString(env, settings->GetDeviceName()); }
JNIEXPORT jstring JNICALL Java_org_cef_callback_CefContextMenuParams_1N_N_1GetFrameCharset (JNIEnv *env, jobject obj) { CefRefPtr<CefContextMenuParams> menuParams = GetCefFromJNIObject<CefContextMenuParams>(env, obj, "CefContextMenuParams"); if (!menuParams.get()) return NULL; return NewJNIString(env, menuParams->GetFrameCharset()); }
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); }
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 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)); }
jobject NewJNICookie(JNIEnv* env, const CefCookie& cookie) { bool hasExpires = (cookie.has_expires != 0); jobject jExpiresDate = hasExpires ? NewJNIDate(env, cookie.expires) : NULL; jobject jcookie = NewJNIObject(env, "org/cef/network/CefCookie", "(Ljava/lang/String;Ljava/lang/String;" "Ljava/lang/String;Ljava/lang/String;" "ZZLjava/util/Date;Ljava/util/Date;" "ZLjava/util/Date;)V", NewJNIString(env, CefString(&cookie.name)), NewJNIString(env, CefString(&cookie.value)), NewJNIString(env, CefString(&cookie.domain)), NewJNIString(env, CefString(&cookie.path)), (cookie.secure != 0 ? JNI_TRUE : JNI_FALSE), (cookie.httponly != 0 ? JNI_TRUE : JNI_FALSE), NewJNIDate(env, cookie.creation), NewJNIDate(env, cookie.last_access), (hasExpires ? JNI_TRUE : JNI_FALSE), jExpiresDate); return jcookie; }
JNIEXPORT void JNICALL Java_org_cef_network_CefResponse_1N_N_1GetHeaderMap (JNIEnv *env, jobject obj, jobject jheaderMap) { CefRefPtr<CefResponse> response = GetCefFromJNIObject<CefResponse>(env, obj, "CefResponse"); if (!response) return; CefResponse::HeaderMap headerMap; response->GetHeaderMap(headerMap); for (CefResponse::HeaderMap::iterator iter = headerMap.begin(); iter != headerMap.end(); ++iter) { jstring jkey = NewJNIString(env, iter->first); jstring jvalue = NewJNIString(env, iter->second); jobject returnIgn = NULL; JNI_CALL_METHOD(env, jheaderMap, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", Object, returnIgn, jkey, jvalue); UNUSED(returnIgn); } }
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); }
jobjectArray NewJNIStringArray(JNIEnv* env, const std::vector<CefString>& vals) { if(vals.empty()) return NULL; jclass cls = env->FindClass("java/lang/String"); if (!cls) return NULL; jobjectArray arr = env->NewObjectArray( static_cast<jsize>(vals.size()), cls, NULL); for(jsize i = 0; i < static_cast<jsize>(vals.size()); i++) env->SetObjectArrayElement(arr, i, NewJNIString(env, vals[i])); return arr; }
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)); }