Esempio n. 1
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_misc_CefPrintSettings_1N_N_1SetDuplexMode
  (JNIEnv *env, jobject obj, jobject jduplex_mode) {
  CefRefPtr<CefPrintSettings> settings =
      GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings");
  if (!settings)
    return;
  CefPrintSettings::DuplexMode mode;
  if (IsJNIEnumValue(env, jduplex_mode,
                     "org/cef/misc/CefPrintSettings$DuplexMode",
                     "DUPLEX_MODE_SIMPLEX")) {
    mode = DUPLEX_MODE_SIMPLEX;
  } else if (IsJNIEnumValue(env, jduplex_mode,
                     "org/cef/misc/CefPrintSettings$DuplexMode",
                     "DUPLEX_MODE_LONG_EDGE")) {
    mode = DUPLEX_MODE_LONG_EDGE;
  } else if (IsJNIEnumValue(env, jduplex_mode,
                     "org/cef/misc/CefPrintSettings$DuplexMode",
                     "DUPLEX_MODE_SHORT_EDGE")) {
    mode = DUPLEX_MODE_SHORT_EDGE;
  } else {
    mode = DUPLEX_MODE_UNKNOWN;
  }
  settings->SetDuplexMode(mode);
}
Esempio n. 3
0
CefSettings GetJNISettings(JNIEnv* env, jobject obj) {
  CefString tmp;
  CefSettings settings;
  if (!obj)
    return settings;

  jclass cls = env->FindClass("org/cef/CefSettings");
  if (!cls)
    return settings;

  if (GetJNIFieldString(env, cls, obj, "browser_subprocess_path", &tmp) &&
      !tmp.empty()) {
    CefString(&settings.browser_subprocess_path) = tmp;
    tmp.clear();
  }
  GetJNIFieldBoolean(env, cls, obj, "windowless_rendering_enabled",
      &settings.windowless_rendering_enabled);
  GetJNIFieldBoolean(env, cls, obj, "command_line_args_disabled",
      &settings.command_line_args_disabled);
  if (GetJNIFieldString(env, cls, obj, "cache_path", &tmp) && !tmp.empty()) {
    CefString(&settings.cache_path) = tmp;
    tmp.clear();
  }
  GetJNIFieldBoolean(env, cls, obj, "persist_session_cookies",
      &settings.persist_session_cookies);
  if (GetJNIFieldString(env, cls, obj, "user_agent", &tmp) && !tmp.empty()) {
    CefString(&settings.user_agent) = tmp;
    tmp.clear();
  }
  if (GetJNIFieldString(env, cls, obj, "product_version", &tmp) &&
      !tmp.empty()) {
    CefString(&settings.product_version) = tmp;
    tmp.clear();
  }
  if (GetJNIFieldString(env, cls, obj, "locale", &tmp) && !tmp.empty()) {
    CefString(&settings.locale) = tmp;
    tmp.clear();
  }
  if (GetJNIFieldString(env, cls, obj, "log_file", &tmp) && !tmp.empty()) {
    CefString(&settings.log_file) = tmp;
    tmp.clear();
  }
  jobject obj_sev = NULL;
  if (GetJNIFieldObject(env, cls, obj, "log_severity", &obj_sev,
          "Lorg/cef/CefSettings$LogSeverity;")) {
    if (obj_sev != NULL) {
      if (IsJNIEnumValue(env, obj_sev, "org/cef/CefSettings$LogSeverity",
                     "LOGSEVERITY_VERBOSE"))
        settings.log_severity = LOGSEVERITY_VERBOSE;
      else if (IsJNIEnumValue(env, obj_sev, "org/cef/CefSettings$LogSeverity",
                     "LOGSEVERITY_INFO"))
        settings.log_severity = LOGSEVERITY_INFO;
      else if (IsJNIEnumValue(env, obj_sev, "org/cef/CefSettings$LogSeverity",
                     "LOGSEVERITY_WARNING"))
        settings.log_severity = LOGSEVERITY_WARNING;
      else if (IsJNIEnumValue(env, obj_sev, "org/cef/CefSettings$LogSeverity",
                     "LOGSEVERITY_ERROR"))
        settings.log_severity = LOGSEVERITY_ERROR;
      else if (IsJNIEnumValue(env, obj_sev, "org/cef/CefSettings$LogSeverity",
                     "LOGSEVERITY_DISABLE"))
        settings.log_severity = LOGSEVERITY_DISABLE;
      else
        settings.log_severity = LOGSEVERITY_DEFAULT;
    }
  }
  if (GetJNIFieldString(env, cls, obj, "javascript_flags", &tmp) &&
      !tmp.empty()) {
    CefString(&settings.javascript_flags) = tmp;
    tmp.clear();
  }
  if (GetJNIFieldString(env, cls, obj, "resources_dir_path", &tmp) &&
      !tmp.empty()) {
    CefString(&settings.resources_dir_path) = tmp;
    tmp.clear();
  }
  if (GetJNIFieldString(env, cls, obj, "locales_dir_path", &tmp) &&
      !tmp.empty()) {
    CefString(&settings.locales_dir_path) = tmp;
    tmp.clear();
  }
  GetJNIFieldBoolean(env, cls, obj, "pack_loading_disabled",
      &settings.pack_loading_disabled);
  GetJNIFieldInt(env, cls, obj, "remote_debugging_port",
      &settings.remote_debugging_port);
  GetJNIFieldInt(env, cls, obj, "uncaught_exception_stack_size",
      &settings.uncaught_exception_stack_size);
  GetJNIFieldInt(env, cls, obj, "context_safety_implementation",
      &settings.context_safety_implementation);
  GetJNIFieldBoolean(env, cls, obj, "ignore_certificate_errors",
      &settings.ignore_certificate_errors);
  jobject obj_col = NULL;
  if (GetJNIFieldObject(env, cls, obj, "background_color", &obj_col,
          "Lorg/cef/CefSettings$ColorType;")) {
    if (obj_col != NULL) {
      jlong jcolor = 0;
      JNI_CALL_METHOD(env, obj_col, "getColor", "()J", Long, jcolor);
      settings.background_color = (cef_color_t)jcolor;
    }
  }
  return settings;
}
JNIEXPORT void JNICALL Java_org_cef_misc_CefPrintSettings_1N_N_1SetColorModel
  (JNIEnv *env, jobject obj, jobject jcolor_model) {
  CefRefPtr<CefPrintSettings> settings =
      GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings");
  if (!settings)
    return;
  CefPrintSettings::ColorModel mode;
  if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_GRAY")) {
    mode = COLOR_MODEL_GRAY;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_COLOR")) {
    mode = COLOR_MODEL_COLOR;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_CMYK")) {
    mode = COLOR_MODEL_CMYK;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_CMY")) {
    mode = COLOR_MODEL_CMY;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_KCMY")) {
    mode = COLOR_MODEL_KCMY;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_CMY_K")) {
    mode = COLOR_MODEL_CMY_K;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_BLACK")) {
    mode = COLOR_MODEL_BLACK;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_GRAYSCALE")) {
    mode = COLOR_MODEL_GRAYSCALE;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_RGB")) {
    mode = COLOR_MODEL_RGB;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_RGB16")) {
    mode = COLOR_MODEL_RGB16;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_RGBA")) {
    mode = COLOR_MODEL_RGBA;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_COLORMODE_COLOR")) {
    mode = COLOR_MODEL_COLORMODE_COLOR;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_COLORMODE_MONOCHROME")) {
    mode = COLOR_MODEL_COLORMODE_MONOCHROME;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_HP_COLOR_COLOR")) {
    mode = COLOR_MODEL_HP_COLOR_COLOR;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_HP_COLOR_BLACK")) {
    mode = COLOR_MODEL_HP_COLOR_BLACK;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_PRINTOUTMODE_NORMAL")) {
    mode = COLOR_MODEL_PRINTOUTMODE_NORMAL;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_PRINTOUTMODE_NORMAL_GRAY")) {
    mode = COLOR_MODEL_PRINTOUTMODE_NORMAL_GRAY;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_PROCESSCOLORMODEL_CMYK")) {
    mode = COLOR_MODEL_PROCESSCOLORMODEL_CMYK;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_PROCESSCOLORMODEL_GREYSCALE")) {
    mode = COLOR_MODEL_PROCESSCOLORMODEL_GREYSCALE;
  } else if (IsJNIEnumValue(env, jcolor_model,
                     "org/cef/misc/CefPrintSettings$ColorModel",
                     "COLOR_MODEL_PROCESSCOLORMODEL_RGB")) {
    mode = COLOR_MODEL_PROCESSCOLORMODEL_RGB;
  } else {
    mode = COLOR_MODEL_UNKNOWN;
  }
  settings->SetColorModel(mode);
}