// 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 "load_handler.h" #include "client_handler.h" #include "jni_util.h" #include "util.h" LoadHandler::LoadHandler(JNIEnv* env, jobject handler) : handle_(env, handler) {} void LoadHandler::OnLoadingStateChange(CefRefPtr browser, bool isLoading, bool canGoBack, bool canGoForward) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); JNI_CALL_VOID_METHOD(env, handle_, "onLoadingStateChange", "(Lorg/cef/browser/CefBrowser;ZZZ)V", jbrowser.get(), (isLoading ? JNI_TRUE : JNI_FALSE), (canGoBack ? JNI_TRUE : JNI_FALSE), (canGoForward ? JNI_TRUE : JNI_FALSE)); } // TODO(jcef): Expose the |transition_type| argument. void LoadHandler::OnLoadStart(CefRefPtr browser, CefRefPtr frame, TransitionType transition_type) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); ScopedJNIFrame jframe(env, frame); jframe.SetTemporary(); ScopedJNITransitionType jtransitionType(env, transition_type); JNI_CALL_VOID_METHOD(env, handle_, "onLoadStart", "(Lorg/cef/browser/CefBrowser;Lorg/cef/browser/" "CefFrame;Lorg/cef/network/CefRequest$TransitionType;)V", jbrowser.get(), jframe.get(), jtransitionType.get()); } void LoadHandler::OnLoadEnd(CefRefPtr browser, CefRefPtr frame, int httpStatusCode) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); ScopedJNIFrame jframe(env, frame); jframe.SetTemporary(); JNI_CALL_VOID_METHOD( env, handle_, "onLoadEnd", "(Lorg/cef/browser/CefBrowser;Lorg/cef/browser/CefFrame;I)V", jbrowser.get(), jframe.get(), httpStatusCode); } void LoadHandler::OnLoadError(CefRefPtr browser, CefRefPtr frame, ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl) { ScopedJNIEnv env; if (!env) return; ScopedJNIBrowser jbrowser(env, browser); ScopedJNIFrame jframe(env, frame); jframe.SetTemporary(); ScopedJNIObjectLocal jErrorCode(env, NewJNIErrorCode(env, errorCode)); ScopedJNIString jerrorText(env, errorText); ScopedJNIString jfailedUrl(env, failedUrl); JNI_CALL_VOID_METHOD( env, handle_, "onLoadError", "(Lorg/cef/browser/CefBrowser;Lorg/cef/browser/CefFrame;Lorg/cef/handler/" "CefLoadHandler$ErrorCode;Ljava/lang/String;Ljava/lang/String;)V", jbrowser.get(), jframe.get(), jErrorCode.get(), jerrorText.get(), jfailedUrl.get()); }