/// <summary> /// Enables requests to certain schemes (http, https and scchrom) to be exchanged and manipulated. /// Also adds the scchrom scheme to provide scchrom internal stuff like the editors help content. /// </summary> private void setupSchemes() { var whitelist = new List <RequestIdentifier>(); string whitelistString = Arguments.GetArgument("request-whitelist", "").Trim(); if (!string.IsNullOrWhiteSpace(whitelistString)) { string[] whitelistEntries = whitelistString.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string entry in whitelistEntries) { whitelist.Add(new RequestIdentifier(entry)); } } List <Tuple <RequestIdentifier, string> > response_exchanges_utf8 = null; var exchangeResponseHandler = Tools.Arguments.GetStackedArguments("exchange-response-utf8"); if (exchangeResponseHandler != null) { response_exchanges_utf8 = new List <Tuple <RequestIdentifier, string> >(); foreach (var rrh in exchangeResponseHandler) { var filter = new RequestIdentifier(rrh.Key); response_exchanges_utf8.Add(new Tuple <RequestIdentifier, string>(filter, rrh.Value)); } } List <Tuple <RequestIdentifier, string> > js_Rewrites = null; var js_rewriteHandler = Tools.Arguments.GetStackedArguments("exchange-response-utf8_script"); if (js_rewriteHandler != null) { js_Rewrites = new List <Tuple <RequestIdentifier, string> >(); foreach (var rrh in js_rewriteHandler) { var filter = new RequestIdentifier(rrh.Key); js_Rewrites.Add(new Tuple <RequestIdentifier, string>(filter, rrh.Value)); } } var resourceSchemehandler = new Handler.SchemeHandlerFactory(whitelist, response_exchanges_utf8, js_Rewrites); // remove old schemes and ... Cef.ClearSchemeHandlerFactories(); // ... register all new schemes var globalRequestContext = Cef.GetGlobalRequestContext(); globalRequestContext.RegisterSchemeHandlerFactory("http", "", resourceSchemehandler); globalRequestContext.RegisterSchemeHandlerFactory("https", "", resourceSchemehandler); globalRequestContext.RegisterSchemeHandlerFactory("scchrom", "", resourceSchemehandler); }