Ejemplo n.º 1
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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));
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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));
}
Ejemplo n.º 14
0
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);
}
Ejemplo n.º 17
0
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;
}
Ejemplo n.º 18
0
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);
}
Ejemplo n.º 19
0
void SetJNIStringRef(JNIEnv* env, jobject jstringRef, const CefString& stringValue) {
  JNI_CALL_VOID_METHOD(env, jstringRef, 
                       "set",
                       "(Ljava/lang/String;)V",
                       NewJNIString(env, stringValue));
}