// Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #include "focus_handler.h" #include "include/base/cef_callback.h" #include "include/wrapper/cef_closure_task.h" #include "client_handler.h" #include "jni_util.h" FocusHandler::FocusHandler(JNIEnv* env, jobject handler) : handle_(env, handler) {} void FocusHandler::OnTakeFocus(CefRefPtr browser, bool next) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); JNI_CALL_VOID_METHOD(env, handle_, "onTakeFocus", "(Lorg/cef/browser/CefBrowser;Z)V", jbrowser.get(), (jboolean)next); } bool FocusHandler::OnSetFocus(CefRefPtr browser, FocusSource source) { ScopedJNIEnv env; if (!env) return false; jboolean jreturn = JNI_FALSE; ScopedJNIObjectResult jsource(env); switch (source) { JNI_CASE(env, "org/cef/handler/CefFocusHandler$FocusSource", FOCUS_SOURCE_NAVIGATION, jsource); default: JNI_CASE(env, "org/cef/handler/CefFocusHandler$FocusSource", FOCUS_SOURCE_SYSTEM, jsource); } ScopedJNIBrowser jbrowser(env, browser); JNI_CALL_METHOD(env, handle_, "onSetFocus", "(Lorg/cef/browser/CefBrowser;Lorg/cef/handler/" "CefFocusHandler$FocusSource;)Z", Boolean, jreturn, jbrowser.get(), jsource.get()); return (jreturn != JNI_FALSE); } void FocusHandler::OnGotFocus(CefRefPtr browser) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); JNI_CALL_VOID_METHOD(env, handle_, "onGotFocus", "(Lorg/cef/browser/CefBrowser;)V", jbrowser.get()); }