/// <summary> /// Register a scheme handler factory for the specified |scheme_name| and /// optional |domain_name|. An empty |domain_name| value for a standard scheme /// will cause the factory to match all domain names. The |domain_name| value /// will be ignored for non-standard schemes. If |scheme_name| is a built-in /// scheme and no handler is returned by |factory| then the built-in scheme /// handler factory will be called. If |scheme_name| is a custom scheme then /// also implement the CefApp::OnRegisterCustomSchemes() method in all processes. /// This function may be called multiple times to change or remove the factory /// that matches the specified |scheme_name| and optional |domain_name|. /// Returns false if an error occurs. This function may be called on any thread /// in the browser process. /// </summary> public static bool RegisterSchemeHandlerFactory(string schemeName, string domainName, CefSchemeHandlerFactory factory) { if (string.IsNullOrEmpty(schemeName)) throw new ArgumentNullException("schemeName"); if (factory == null) throw new ArgumentNullException("factory"); fixed (char* schemeName_str = schemeName) fixed (char* domainName_str = domainName) { var n_schemeName = new cef_string_t(schemeName_str, schemeName.Length); var n_domainName = new cef_string_t(domainName_str, domainName != null ? domainName.Length : 0); return libcef.register_scheme_handler_factory(&n_schemeName, &n_domainName, factory.ToNative()) != 0; } }
/// <summary> /// Register a scheme handler factory for the specified |scheme_name| and /// optional |domain_name|. An empty |domain_name| value for a standard scheme /// will cause the factory to match all domain names. The |domain_name| value /// will be ignored for non-standard schemes. If |scheme_name| is a built-in /// scheme and no handler is returned by |factory| then the built-in scheme /// handler factory will be called. If |scheme_name| is a custom scheme then /// also implement the CefApp::OnRegisterCustomSchemes() method in all processes. /// This function may be called multiple times to change or remove the factory /// that matches the specified |scheme_name| and optional |domain_name|. /// Returns false if an error occurs. This function may be called on any thread /// in the browser process. /// </summary> public static bool RegisterSchemeHandlerFactory(string schemeName, string domainName, CefSchemeHandlerFactory factory) { if (string.IsNullOrEmpty(schemeName)) { throw new ArgumentNullException("schemeName"); } if (factory == null) { throw new ArgumentNullException("factory"); fixed(char *schemeName_str = schemeName) fixed(char *domainName_str = domainName) { var n_schemeName = new cef_string_t(schemeName_str, schemeName.Length); var n_domainName = new cef_string_t(domainName_str, domainName != null ? domainName.Length : 0); return(libcef.register_scheme_handler_factory(&n_schemeName, &n_domainName, factory.ToNative()) != 0); } }