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(); }
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()); } } }