コード例 #1
0
        /// <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);
        }