jobject ClientHandler::getBrowser(CefRefPtr<CefBrowser> browser) { jobject jbrowser = NULL; BEGIN_ENV(env) JNI_CALL_METHOD(env, jhandler_, "getBrowser", "(I)Lorg/cef/browser/CefBrowser;", Object, jbrowser, browser->GetIdentifier()); END_ENV(env) return jbrowser; }
CefRefPtr<CefDownloadHandler> ClientHandler::GetDownloadHandler() { CefRefPtr<CefDownloadHandler> result = NULL; BEGIN_ENV(env) jobject handler = NULL; JNI_CALL_METHOD(env, jhandler_, "getDownloadHandler", "()Lorg/cef/handler/CefDownloadHandler;", Object, handler); if (handler) { result = GetCefFromJNIObject<CefDownloadHandler>(env, handler, "CefDownloadHandler"); if (!result.get()) { result = new DownloadHandler(env, handler); SetCefForJNIObject(env, handler, result.get(), "CefDownloadHandler"); } } END_ENV(env) return result; }
size_t WriteHandler::Write(const void* ptr, size_t size, size_t n) { base::AutoLock lock_scope(lock_); size_t rv = n; BEGIN_ENV(env) jbyteArray jbyteArray = env->NewByteArray((jsize)(size * n)); env->SetByteArrayRegion(jbyteArray, 0, (jsize)(size * n), (const jbyte*)ptr); JNI_CALL_VOID_METHOD_EX(env, jOutputStream_, "write", "([B)V", jbyteArray); if (env->ExceptionOccurred()) { env->ExceptionClear(); rv = 0; } offset_ += (rv * size); END_ENV(env) return rv; }
int WriteHandler::Flush() { BEGIN_ENV(env) JNI_CALL_VOID_METHOD(env, jOutputStream_, "flush", "()V"); END_ENV(env) return 0; }
ClientHandler::~ClientHandler() { BEGIN_ENV(env) env->DeleteGlobalRef(jhandler_); END_ENV(env) }