void ContextMenuHandler::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser,
                                             CefRefPtr<CefFrame> frame,
                                             CefRefPtr<CefContextMenuParams> params,
                                             CefRefPtr<CefMenuModel> model) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
    return;

  jobject jparams = NewJNIObject(env, "org/cef/callback/CefContextMenuParams_N");
  if (!jparams)
    return;
  jobject jmodel = NewJNIObject(env, "org/cef/callback/CefMenuModel_N");
  if (!jmodel)
    return;

  SetCefForJNIObject(env, jparams, params.get(), "CefContextMenuParams");
  SetCefForJNIObject(env, jmodel, model.get(), "CefMenuModel");

  JNI_CALL_VOID_METHOD(env, jhandler_,
                       "onBeforeContextMenu",
                       "(Lorg/cef/browser/CefBrowser;Lorg/cef/callback/CefContextMenuParams;"
                       "Lorg/cef/callback/CefMenuModel;)V",
                       GetJNIBrowser(browser),
                       jparams,
                       jmodel);

  // Do not keep references to |params| or |model| outside of this callback.
  SetCefForJNIObject<CefContextMenuParams>(env, jparams, NULL, "CefContextMenuParams");
  SetCefForJNIObject<CefMenuModel>(env, jmodel, NULL, "CefMenuModel");
}
Пример #2
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));
}
Пример #3
0
jobject NewJNIDate(JNIEnv* env, const CefTime& time) {
  jobject jdate = NewJNIObject(env, "java/util/Date");
  if (!jdate)
    return NULL;
  double timestamp = time.GetDoubleT() * 1000;
  JNI_CALL_VOID_METHOD(env, jdate, "setTime", "(J)V",(jlong)timestamp);
  return jdate;
}
Пример #4
0
void JSDialogHandler::OnDialogClosed(CefRefPtr<CefBrowser> browser) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
    return;
  JNI_CALL_VOID_METHOD(env, jhandler_, "onDialogClosed",
                       "(Lorg/cef/browser/CefBrowser;)V",
                       GetJNIBrowser(browser));
}
void RenderHandler::OnPopupShow(CefRefPtr<CefBrowser> browser,
                                bool show) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
  	return;
  JNI_CALL_VOID_METHOD(env, jhandler_, 
                       "onPopupShow", 
                       "(Lorg/cef/browser/CefBrowser;Z)V", 
                       GetJNIBrowser(browser),
                       (jboolean)show);
}
void ContextMenuHandler::OnContextMenuDismissed(CefRefPtr<CefBrowser> browser,
                                                CefRefPtr<CefFrame> frame) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
    return;

  JNI_CALL_VOID_METHOD(env, jhandler_,
                       "onContextMenuDismissed",
                       "(Lorg/cef/browser/CefBrowser;)V",
                       GetJNIBrowser(browser));
}
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 RenderHandler::OnCursorChange(CefRefPtr<CefBrowser> browser,
                            CefCursorHandle cursor) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
  	return;
  const int cursorId = NativeGetCursorId(cursor);
  JNI_CALL_VOID_METHOD(env, jhandler_, 
                       "onCursorChange", 
                       "(Lorg/cef/browser/CefBrowser;I)V", 
                       GetJNIBrowser(browser),
                       cursorId);
}
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));
}
void LifeSpanHandler::OnBeforeClose(CefRefPtr<CefBrowser> browser) {
  REQUIRE_UI_THREAD();
  JNIEnv* env = GetJNIEnv();
  if (!env)
    return;
  JNI_CALL_VOID_METHOD(env, jhandler_,
                       "onBeforeClose",
                       "(Lorg/cef/browser/CefBrowser;)V",
                       GetJNIBrowser(browser));
  CefRefPtr<ClientHandler> client = (ClientHandler*)browser->GetHost()->GetClient().get();
  client->OnBeforeClose(browser);
}
void WindowHandler::OnMouseEvent(CefRefPtr<CefBrowser> browser, int mouseEvent,
    int absX, int absY, int modifier, int button) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
    return;
  JNI_CALL_VOID_METHOD(env, jhandler_,
                       "onMouseEvent",
                       "(Lorg/cef/browser/CefBrowser;IIIII)V",
                       GetJNIBrowser(browser),
                       (jint)mouseEvent,
                       (jint)absX,
                       (jint)absY,
                       (jint)modifier,
                       (jint)button);
}
void RenderHandler::OnPopupSize(CefRefPtr<CefBrowser> browser,
                                const CefRect& rect) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
  	return;
  jobject rect_obj = NewJNIRect(env, rect);
  if (!rect_obj)
    return;
  JNI_CALL_VOID_METHOD(env, jhandler_, 
                       "onPopupSize", 
                       "(Lorg/cef/browser/CefBrowser;Ljava/awt/Rectangle;)V", 
                       GetJNIBrowser(browser),
                       rect_obj);
  env->DeleteLocalRef(rect_obj);
}
JNIEXPORT void JNICALL Java_org_cef_misc_CefPrintSettings_1N_N_1GetPageRanges
  (JNIEnv *env, jobject obj , jobject jrangeVector) {
  CefRefPtr<CefPrintSettings> settings =
      GetCefFromJNIObject<CefPrintSettings>(env, obj, "CefPrintSettings");
  if (!settings || !jrangeVector)
    return;

  CefPrintSettings::PageRangeList rangeList;
  settings->GetPageRanges(rangeList);

  CefPrintSettings::PageRangeList::size_type i = 0;
  for (i=0; i < rangeList.size(); ++i) {
    jobject range = NewJNIPageRange(env, rangeList.at(i));
    JNI_CALL_VOID_METHOD(env, jrangeVector, "addElement",
        "(Ljava/lang/Object;)V", range);
  }
}
void LifeSpanHandler::OnAfterCreated(CefRefPtr<CefBrowser> browser) {
  JNIEnv* env = GetJNIEnv();
  if (!env || jbrowsers_.empty())
    return;

  jobject jbrowser = jbrowsers_.front();
  jbrowsers_.pop_front();

  CefRefPtr<ClientHandler> client = (ClientHandler*)browser->GetHost()->GetClient().get();
  client->OnAfterCreated();

  if (SetCefForJNIObject(env, jbrowser, browser.get(), "CefBrowser")) {
    JNI_CALL_VOID_METHOD(env, jhandler_,
                         "onAfterCreated",
                         "(Lorg/cef/browser/CefBrowser;)V",
                         jbrowser);
  }
  env->DeleteGlobalRef(jbrowser);
}
void RenderHandler::OnPaint(CefRefPtr<CefBrowser> browser,
                            PaintElementType type,
                            const RectList& dirtyRects,
                            const void* buffer,
                            int width, int height) {
  JNIEnv* env = GetJNIEnv();
  if (!env)
  	return;
  jobjectArray rect_array = NewJNIRectArray(env, dirtyRects);
  jobject direct_buffer =
      env->NewDirectByteBuffer(const_cast<void*>(buffer), width * height * 4);
  jboolean jtype = type == PET_VIEW ? JNI_FALSE : JNI_TRUE;
  JNI_CALL_VOID_METHOD(env, jhandler_, 
                       "onPaint", 
                       "(Lorg/cef/browser/CefBrowser;Z[Ljava/awt/Rectangle;Ljava/nio/ByteBuffer;II)V", 
                       GetJNIBrowser(browser),
                       jtype,
                       rect_array,
                       direct_buffer,
                       width,
                       height);
  env->DeleteLocalRef(rect_array);
  env->DeleteLocalRef(direct_buffer);
}
Пример #16
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);
}
Пример #17
0
void SetJNIStringRef(JNIEnv* env, jobject jstringRef, const CefString& stringValue) {
  JNI_CALL_VOID_METHOD(env, jstringRef, 
                       "set",
                       "(Ljava/lang/String;)V",
                       NewJNIString(env, stringValue));
}
Пример #18
0
void SetJNIIntRef(JNIEnv* env, jobject jintRef, int intValue) {
  JNI_CALL_VOID_METHOD(env, jintRef, 
                       "set",
                       "(I)V",
                       intValue);
}
Пример #19
0
void SetJNIBoolRef(JNIEnv* env, jobject jboolRef, bool boolValue) {
  JNI_CALL_VOID_METHOD(env, jboolRef, 
                       "set",
                       "(Z)V",
                       (boolValue ? JNI_TRUE : JNI_FALSE));
}
Пример #20
0
int WriteHandler::Flush() {
  BEGIN_ENV(env)
  JNI_CALL_VOID_METHOD(env, jOutputStream_, "flush", "()V");
  END_ENV(env)
  return 0;
}