Exemple #1
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1ExecuteJavaScript
  (JNIEnv *env, jobject obj, jstring code, jstring url, jint line) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
  browser->GetMainFrame()->ExecuteJavaScript(GetJNIString(env,code),
                                             GetJNIString(env,url),
                                             line);
}
Exemple #2
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1RunFileDialog
  (JNIEnv *env, jobject obj, jobject jmode, jstring jtitle, 
   jstring jdefaultFileName , jobject jacceptTypes, jobject jcallback) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);

  std::vector<CefString> accept_types;
  GetJNIStringVector(env, jacceptTypes, accept_types);

  CefBrowserHost::FileDialogMode mode;
  if (IsJNIEnumValue(env, jmode, 
                     "org/cef/handler/CefDialogHandler$FileDialogMode",
                     "FILE_DIALOG_OPEN")) {
    mode = FILE_DIALOG_OPEN;
  } else if (IsJNIEnumValue(env, jmode,
                            "org/cef/handler/CefDialogHandler$FileDialogMode",
                            "FILE_DIALOG_OPEN_MULTIPLE")) {
    mode = FILE_DIALOG_OPEN_MULTIPLE;
  } else if (IsJNIEnumValue(env, jmode,
                            "org/cef/handler/CefDialogHandler$FileDialogMode",
                            "FILE_DIALOG_SAVE")) {
    mode = FILE_DIALOG_SAVE;
  } else {
    mode = FILE_DIALOG_OPEN;
  }

  browser->GetHost()->RunFileDialog(mode,
                                    GetJNIString(env, jtitle),
                                    GetJNIString(env, jdefaultFileName),
                                    accept_types,
                                    new RunFileDialogCallback(env, jcallback));
}
JNIEXPORT void JNICALL Java_org_cef_callback_CefAuthCallback_1N_N_1Continue
  (JNIEnv *env, jobject obj, jstring username, jstring password) {
  CefRefPtr<CefAuthCallback> callback =
      GetCefFromJNIObject<CefAuthCallback>(env, obj, "CefAuthCallback");
  if (!callback.get())
    return;
  callback->Continue(GetJNIString(env, username), GetJNIString(env, password));

  // Clear the reference added in RequestHandler::GetAuthCredentials
  SetCefForJNIObject<CefAuthCallback>(env, obj, NULL, "CefAuthCallback");
}
JNIEXPORT void JNICALL Java_org_cef_network_CefResponse_1N_N_1SetHeaderMap
  (JNIEnv *env, jobject obj, jobject jheaderMap) {
  CefRefPtr<CefResponse> response = GetCefFromJNIObject<CefResponse>(env, obj, "CefResponse");
  if (!response)
    return;

  // public abstract java.util.Set<java.util.Map$Entry<K, V>> entrySet();
  jobject entrySet = NULL;
  JNI_CALL_METHOD(env, jheaderMap,
                  "entrySet",
                  "()Ljava/util/Set;",
                  Object,
                  entrySet);
  if (!entrySet)
    return;

  // public abstract java.lang.Object[] toArray();
  jobject entrySetValues = NULL;
  JNI_CALL_METHOD(env, entrySet,
                  "toArray",
                  "()[Ljava/lang/Object;",
                  Object,
                  entrySetValues);
  if (!entrySetValues)
    return;

  CefResponse::HeaderMap headerMap;
  jint length = env->GetArrayLength((jobjectArray)entrySetValues);
  for (jint i=0; i < length; i++) {
    jobject mapEntry = env->GetObjectArrayElement((jobjectArray)entrySetValues, i);
    if (!mapEntry)
      return;
    jobject key = NULL;
    jobject value = NULL;
    JNI_CALL_METHOD(env, mapEntry,
                    "getKey",
                    "()Ljava/lang/Object;",
                    Object,
                    key);
    JNI_CALL_METHOD(env, mapEntry,
                    "getValue",
                    "()Ljava/lang/Object;",
                    Object,
                    value);
    headerMap.insert(std::make_pair(GetJNIString(env, (jstring)key), GetJNIString(env, (jstring)value)));
  }
  response->SetHeaderMap(headerMap);
}
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 void JNICALL Java_org_cef_network_CefResponse_1N_N_1SetMimeType
  (JNIEnv *env, jobject obj, jstring jmimeType) {
  CefRefPtr<CefResponse> response = GetCefFromJNIObject<CefResponse>(env, obj, "CefResponse");
  if (!response)
    return;
  response->SetMimeType(GetJNIString(env, jmimeType));
}
JNIEXPORT void JNICALL Java_org_cef_misc_CefPrintSettings_1N_N_1SetDeviceName
  (JNIEnv *env, jobject obj, jstring jname) {
  CefRefPtr<CefPrintSettings> settings =
      GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings");
  if (!settings)
    return;
  settings->SetDeviceName(GetJNIString(env, jname));
}
Exemple #8
0
CefString GetJNIStringRef(JNIEnv* env, jobject jstringRef) {
  jobject jstr = NULL;
  JNI_CALL_METHOD(env, jstringRef, 
                  "get",
                  "()Ljava/lang/String;",
                  Object,
                  jstr);
  return GetJNIString(env, (jstring)jstr);
}
Exemple #9
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1Find
  (JNIEnv *env, jobject obj, jint identifier, jstring searchText, 
  jboolean forward, jboolean matchCase, jboolean findNext) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
  browser->GetHost()->Find((int)identifier, 
                           GetJNIString(env, searchText),
                           (forward != JNI_FALSE),
                           (matchCase != JNI_FALSE),
                           (findNext != JNI_FALSE));
}
JNIEXPORT void JNICALL Java_org_cef_callback_CefJSDialogCallback_1N_N_1Continue
  (JNIEnv *env, jobject obj, jboolean jsuccess, jstring juser_input) {
  CefRefPtr<CefJSDialogCallback> jsDialogCallback =
      GetCefFromJNIObject<CefJSDialogCallback>(env, obj, "CefJSDialogCallback");
  if (!jsDialogCallback.get())
    return;
  jsDialogCallback->Continue((jsuccess != JNI_FALSE),
                             GetJNIString(env, juser_input));

  // Clear the reference added in JSDialogCallback::OnJSDialog and JSDialogCallback::OnBeforeUnloadDialog.
  SetCefForJNIObject<CefJSDialogCallback>(env, obj, NULL, "CefJSDialogCallback");
}
JNIEXPORT jboolean JNICALL
Java_org_cef_network_CefCookieManager_1N_N_1DeleteCookies(JNIEnv* env,
                                                          jobject obj,
                                                          jstring jurl,
                                                          jstring jcookieName) {
  CefRefPtr<CefCookieManager> manager =
      GetCefFromJNIObject<CefCookieManager>(env, obj, "CefCookieManager");
  if (!manager.get())
    return JNI_FALSE;

  // The method CefCookieManager::DeleteCookies must be called on the IO thread.
  // We ignore its return value and return the result of the PostTask event to
  // java instead.
  // TODO(JCEF): Expose the callback object.
  bool result = CefPostTask(
      TID_IO, base::Bind(base::IgnoreResult(&CefCookieManager::DeleteCookies),
                         manager.get(), GetJNIString(env, jurl),
                         GetJNIString(env, jcookieName),
                         CefRefPtr<CefDeleteCookiesCallback>()));
  return result ? JNI_TRUE : JNI_FALSE;
}
Exemple #12
0
void GetJNIStringVector(JNIEnv* env, jobject jvector,
                        std::vector<CefString>& vals) {
  if (!jvector)
    return;

  jint jsize=0;
  JNI_CALL_METHOD(env, jvector, "size", "()I", Int, jsize);

  for (jint index=0; index< jsize; index++) {
    jobject str=NULL;
    JNI_CALL_METHOD(env, jvector, "get", "(I)Ljava/lang/Object;", Object, str, index);
    vals.push_back(GetJNIString(env, (jstring)str));
  }
}
JNIEXPORT jboolean JNICALL
Java_org_cef_network_CefCookieManager_1N_N_1SetStoragePath(
    JNIEnv* env,
    jobject obj,
    jstring jpath,
    jboolean jpersistSessionCookies) {
  CefRefPtr<CefCookieManager> manager =
      GetCefFromJNIObject<CefCookieManager>(env, obj, "CefCookieManager");
  if (!manager.get())
    return JNI_FALSE;
  // TODO(JCEF): Expose the callback object.
  bool result = manager->SetStoragePath(
      GetJNIString(env, jpath), (jpersistSessionCookies != JNI_FALSE), NULL);
  return result ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT void JNICALL
Java_org_cef_callback_CefQueryCallback_1N_N_1Success(JNIEnv* env,
                                                     jobject obj,
                                                     jstring response) {
  CefRefPtr<CefMessageRouterBrowserSide::Callback> callback =
      GetCefFromJNIObject<CefMessageRouterBrowserSide::Callback>(
          env, obj, "CefQueryCallback");
  if (!callback.get())
    return;

  callback->Success(GetJNIString(env, response));

  // Clear the reference added in ClientHandler::OnQuery.
  SetCefForJNIObject<CefMessageRouterBrowserSide::Callback>(env, obj, NULL,
                                                            "CefQueryCallback");
}
JNIEXPORT jobject JNICALL
Java_org_cef_network_CefCookieManager_1N_N_1CreateManager(
    JNIEnv* env,
    jclass cls,
    jstring jpath,
    jboolean jpersistSessionCookies) {
  // TODO(JCEF): Expose the callback object.
  CefRefPtr<CefCookieManager> manager = CefCookieManager::CreateManager(
      GetJNIString(env, jpath), (jpersistSessionCookies != JNI_FALSE), NULL);
  if (!manager.get())
    return NULL;

  jobject jManager = NewJNIObject(env, cls);
  if (!jManager)
    return NULL;

  SetCefForJNIObject(env, jManager, manager.get(), "CefCookieManager");
  return jManager;
}
JNIEXPORT jboolean JNICALL
Java_org_cef_network_CefCookieManager_1N_N_1VisitUrlCookies(
    JNIEnv* env,
    jobject obj,
    jstring jurl,
    jboolean jincludeHttpOnly,
    jobject jvisitor) {
  CefRefPtr<CefCookieManager> manager =
      GetCefFromJNIObject<CefCookieManager>(env, obj, "CefCookieManager");
  if (!manager.get() || !jvisitor)
    return JNI_FALSE;

  CefRefPtr<CefCookieVisitor> visitor = new CookieVisitor(env, jvisitor);
  if (!visitor.get())
    return JNI_FALSE;

  bool result = manager->VisitUrlCookies(
      GetJNIString(env, jurl), (jincludeHttpOnly != JNI_FALSE), visitor);
  return result ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT jboolean JNICALL Java_org_cef_callback_CefSchemeRegistrar_1N_N_1AddCustomScheme
  (JNIEnv *env, jobject obj, jstring jSchemeName, jboolean jIsStandard, 
   jboolean jIsLocal, jboolean jIsDisplayIsolated) {

  CefRefPtr<CefSchemeRegistrar> registrar =
      GetCefFromJNIObject<CefSchemeRegistrar>(env, obj, "CefSchemeRegistrar");
  if (!registrar.get())
    return JNI_FALSE;
  CefString schemeName = GetJNIString(env, jSchemeName);
  bool result = registrar->AddCustomScheme(schemeName,
                                           jIsStandard != JNI_FALSE,
                                           jIsLocal != JNI_FALSE,
                                           jIsDisplayIsolated != JNI_FALSE);
  if (!result)
    return JNI_FALSE;

  // The registered scheme has to be forwarded to all other processes which will
  // be created by the browser process (e.g. the render-process). Otherwise
  // things like JS "localStorage" get/set will end up in a crashed
  // render process.
  std::string tmpName = util::GetTempFileName("scheme", false);

  std::ofstream fStream(tmpName.c_str(), std::ofstream::out |
      std::ofstream::app);

  if (fStream.is_open()) {
    // 1) Write the scheme name and the params to the file.
    fStream << schemeName.ToString().c_str() << "," <<
        (jIsStandard != JNI_FALSE) << (jIsLocal != JNI_FALSE) <<
        (jIsDisplayIsolated != JNI_FALSE);
    fStream.close();

    // 2) Register file to be deleted in CefShutdown()
    ClientApp::registerTempFile(tmpName);
  }
  return JNI_TRUE;
}
Exemple #18
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1LoadString
  (JNIEnv *env, jobject obj, jstring val, jstring url) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
  browser->GetMainFrame()->LoadString(GetJNIString(env,val),
                                      GetJNIString(env,url));
}
Exemple #19
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1ReplaceMisspelling
  (JNIEnv *env, jobject obj, jstring jword) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
  browser->GetHost()->ReplaceMisspelling(GetJNIString(env, jword));
}
Exemple #20
0
JNIEXPORT void JNICALL Java_org_cef_browser_CefBrowser_1N_N_1StartDownload
  (JNIEnv *env, jobject obj, jstring url) {
  CefRefPtr<CefBrowser> browser = JNI_GET_BROWSER_OR_RETURN(env, obj);
  browser->GetHost()->StartDownload(GetJNIString(env, url));
}