private FormGuide(string url, FormBrowser owner)
        {
            InitializeComponent();

            Text            = Program.BrandName + " Guide";
            Size            = new Size(owner.Size.Width * 3 / 4, owner.Size.Height * 3 / 4);
            VisibleChanged += (sender, args) => this.MoveToCenter(owner);

            var resourceRequestHandler = new ResourceRequestHandlerBase();

            resourceRequestHandler.ResourceHandlers.Register(DummyPage);

            this.browser = new ChromiumWebBrowser(url)
            {
                MenuHandler     = new ContextMenuGuide(owner),
                JsDialogHandler = new JavaScriptDialogHandler(),
                KeyboardHandler = new KeyboardHandlerBase(),
                LifeSpanHandler = new LifeSpanHandler(),
                RequestHandler  = new RequestHandlerBase(true),
                ResourceRequestHandlerFactory = resourceRequestHandler.SelfFactory
            };

            browser.LoadingStateChanged += browser_LoadingStateChanged;
            browser.FrameLoadEnd        += browser_FrameLoadEnd;

            browser.BrowserSettings.BackgroundColor = (uint)BackColor.ToArgb();
            browser.Dock     = DockStyle.None;
            browser.Location = ControlExtensions.InvisibleLocation;
            browser.SetupZoomEvents();

            Controls.Add(browser);
            Disposed += (sender, args) => browser.Dispose();
        }
Example #2
0
        private static void Main()
        {
            SetupWinForms();
            Cef.EnableHighDPISupport();

            WindowRestoreMessage = NativeMethods.RegisterWindowMessage("TweetDuckRestore");

            if (!FileUtils.CheckFolderWritePermission(StoragePath))
            {
                FormMessage.Warning("Permission Error", "TweetDuck does not have write permissions to the storage folder: " + StoragePath, FormMessage.OK);
                return;
            }

            if (!LockManager.Lock(Arguments.HasFlag(Arguments.ArgRestart)))
            {
                return;
            }

            Config.LoadAll();

            if (Arguments.HasFlag(Arguments.ArgImportCookies))
            {
                ProfileManager.ImportCookies();
            }
            else if (Arguments.HasFlag(Arguments.ArgDeleteCookies))
            {
                ProfileManager.DeleteCookies();
            }

            if (Arguments.HasFlag(Arguments.ArgUpdated))
            {
                WindowsUtils.TryDeleteFolderWhenAble(InstallerPath, 8000);
                WindowsUtils.TryDeleteFolderWhenAble(Path.Combine(StoragePath, "Service Worker"), 4000);
                BrowserCache.TryClearNow();
            }

            try{
                ResourceRequestHandlerBase.LoadResourceRewriteRules(Arguments.GetValue(Arguments.ArgFreeze));
            }catch (Exception e) {
                FormMessage.Error("Resource Freeze", "Error parsing resource rewrite rules: " + e.Message, FormMessage.OK);
                return;
            }

            BrowserCache.RefreshTimer();

            CefSharpSettings.WcfEnabled = false;
            CefSharpSettings.LegacyJavascriptBindingEnabled = true;

            CefSettings settings = new CefSettings {
                UserAgent             = BrowserUtils.UserAgentChrome,
                BrowserSubprocessPath = Path.Combine(ProgramPath, BrandName + ".Browser.exe"),
                CachePath             = StoragePath,
                UserDataPath          = CefDataPath,
                LogFile = ConsoleLogFilePath,
                #if !DEBUG
                LogSeverity = Arguments.HasFlag(Arguments.ArgLogging) ? LogSeverity.Info : LogSeverity.Disable
                #endif
            };

            var pluginScheme = new PluginSchemeFactory();

            settings.RegisterScheme(new CefCustomScheme {
                SchemeName           = PluginSchemeFactory.Name,
                IsStandard           = false,
                IsSecure             = true,
                IsCorsEnabled        = true,
                IsCSPBypassing       = true,
                SchemeHandlerFactory = pluginScheme
            });

            CommandLineArgs.ReadCefArguments(Config.User.CustomCefArgs).ToDictionary(settings.CefCommandLineArgs);
            BrowserUtils.SetupCefArgs(settings.CefCommandLineArgs);

            Cef.Initialize(settings, false, new BrowserProcessHandler());

            Win.Application.ApplicationExit += (sender, args) => ExitCleanup();

            FormBrowser mainForm = new FormBrowser(pluginScheme);

            Resources.Initialize(mainForm);
            Win.Application.Run(mainForm);

            if (mainForm.UpdateInstaller != null)
            {
                ExitCleanup();

                if (mainForm.UpdateInstaller.Launch())
                {
                    Win.Application.Exit();
                }
                else
                {
                    RestartWithArgsInternal(Arguments.GetCurrentClean());
                }
            }
        }