native/scheme_handler_factory.cpp (30 lines of code) (raw):

// 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 "scheme_handler_factory.h" #include "jni_util.h" #include "resource_handler.h" SchemeHandlerFactory::SchemeHandlerFactory(JNIEnv* env, jobject jfactory) : handle_(env, jfactory) {} CefRefPtr<CefResourceHandler> SchemeHandlerFactory::Create( CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, const CefString& scheme_name, CefRefPtr<CefRequest> request) { ScopedJNIEnv env; if (!env) return nullptr; ScopedJNIBrowser jbrowser(env, browser); ScopedJNIFrame jframe(env, frame); jframe.SetTemporary(); ScopedJNIString jschemeName(env, scheme_name); ScopedJNIRequest jrequest(env, request); jrequest.SetTemporary(); ScopedJNIObjectResult jresult(env); JNI_CALL_METHOD(env, handle_, "create", "(Lorg/cef/browser/CefBrowser;Lorg/cef/browser/" "CefFrame;Ljava/lang/String;Lorg/cef/" "network/CefRequest;)Lorg/cef/handler/CefResourceHandler;", Object, jresult, jbrowser.get(), jframe.get(), jschemeName.get(), jrequest.get()); if (jresult) return new ResourceHandler(env, jresult); return nullptr; }