1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-22 08:34:05 +02:00

Fix runtime errors & minor tweaks after updating CefSharp

This commit is contained in:
chylex 2020-05-16 17:10:23 +02:00
parent 1e3de31fc3
commit ad28d2279f
11 changed files with 25 additions and 22 deletions

View File

@ -33,7 +33,7 @@ protected virtual bool HandleRawKey(IWebBrowser browserControl, IBrowser browser
} }
bool IKeyboardHandler.OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut){ bool IKeyboardHandler.OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut){
if (type == KeyType.RawKeyDown && !browser.FocusedFrame.Url.StartsWith("chrome-devtools://")){ if (type == KeyType.RawKeyDown && !browser.FocusedFrame.Url.StartsWith("devtools://")){
return HandleRawKey(browserControl, browser, (Keys)windowsKeyCode, modifiers); return HandleRawKey(browserControl, browser, (Keys)windowsKeyCode, modifiers);
} }

View File

@ -23,8 +23,13 @@ public void Dispose(){
} }
bool IResourceHandler.Open(IRequest request, out bool handleRequest, ICallback callback){ bool IResourceHandler.Open(IRequest request, out bool handleRequest, ICallback callback){
callback.Dispose();
handleRequest = true; handleRequest = true;
callback.Continue();
if (dataIn != null){
dataIn.Position = 0;
}
return true; return true;
} }
@ -48,11 +53,11 @@ bool IResourceHandler.Read(Stream dataOut, out int bytesRead, IResourceReadCallb
dataIn.Read(buffer, 0, length); dataIn.Read(buffer, 0, length);
dataOut.Write(buffer, 0, length); dataOut.Write(buffer, 0, length);
bytesRead = length; bytesRead = length;
return true;
}catch{ // catch IOException, possibly NullReferenceException if dataIn is null }catch{ // catch IOException, possibly NullReferenceException if dataIn is null
bytesRead = 0; bytesRead = 0;
return false;
} }
return bytesRead > 0;
} }
bool IResourceHandler.Skip(long bytesToSkip, out long bytesSkipped, IResourceSkipCallback callback){ bool IResourceHandler.Skip(long bytesToSkip, out long bytesSkipped, IResourceSkipCallback callback){

View File

@ -1,5 +1,4 @@
using System.Collections.Specialized; using CefSharp;
using CefSharp;
using TweetDuck.Browser.Handling.Filters; using TweetDuck.Browser.Handling.Filters;
using TweetDuck.Utils; using TweetDuck.Utils;
using TweetLib.Core.Features.Twitter; using TweetLib.Core.Features.Twitter;
@ -28,9 +27,7 @@ protected override CefReturnValue OnBeforeResourceLoad(IWebBrowser browserContro
return CefReturnValue.Cancel; return CefReturnValue.Cancel;
} }
else if (url.Contains(UrlVendorResource)){ else if (url.Contains(UrlVendorResource)){
NameValueCollection headers = request.Headers; request.SetHeaderByName("Accept-Encoding", "identity", overwrite: true);
headers["Accept-Encoding"] = "identity";
request.Headers = headers;
} }
} }

View File

@ -73,7 +73,7 @@ protected FormNotificationMain(FormBrowser owner, PluginManager pluginManager, b
this.timerBarHeight = BrowserUtils.Scale(4, DpiScale); this.timerBarHeight = BrowserUtils.Scale(4, DpiScale);
browser.KeyboardHandler = new KeyboardHandlerNotification(this); browser.KeyboardHandler = new KeyboardHandlerNotification(this);
browser.RegisterAsyncJsObject("$TD", new TweetDeckBridge.Notification(owner, this)); browser.RegisterJsBridge("$TD", new TweetDeckBridge.Notification(owner, this));
browser.LoadingStateChanged += Browser_LoadingStateChanged; browser.LoadingStateChanged += Browser_LoadingStateChanged;
browser.FrameLoadEnd += Browser_FrameLoadEnd; browser.FrameLoadEnd += Browser_FrameLoadEnd;

View File

@ -23,7 +23,7 @@ public FormNotificationScreenshotable(Action callback, FormBrowser owner, Plugin
int realWidth = BrowserUtils.Scale(width, DpiScale); int realWidth = BrowserUtils.Scale(width, DpiScale);
browser.RegisterAsyncJsObject("$TD_NotificationScreenshot", new ScreenshotBridge(this, SetScreenshotHeight, callback)); browser.RegisterJsBridge("$TD_NotificationScreenshot", new ScreenshotBridge(this, SetScreenshotHeight, callback));
browser.LoadingStateChanged += (sender, args) => { browser.LoadingStateChanged += (sender, args) => {
if (args.IsLoading){ if (args.IsLoading){

View File

@ -74,8 +74,8 @@ public TweetDeckBrowser(FormBrowser owner, PluginManager plugins, TweetDeckBridg
this.browser.FrameLoadEnd += browser_FrameLoadEnd; this.browser.FrameLoadEnd += browser_FrameLoadEnd;
this.browser.LoadError += browser_LoadError; this.browser.LoadError += browser_LoadError;
this.browser.RegisterAsyncJsObject("$TD", tdBridge); this.browser.RegisterJsBridge("$TD", tdBridge);
this.browser.RegisterAsyncJsObject("$TDU", updateBridge); this.browser.RegisterJsBridge("$TDU", updateBridge);
this.browser.BrowserSettings.BackgroundColor = (uint)TwitterUtils.BackgroundColor.ToArgb(); this.browser.BrowserSettings.BackgroundColor = (uint)TwitterUtils.BackgroundColor.ToArgb();
this.browser.Dock = DockStyle.None; this.browser.Dock = DockStyle.None;

View File

@ -23,7 +23,6 @@ public TabSettingsNotifications(FormNotificationExample notification){
}); });
}; };
this.notification.Activated += notification_Activated;
this.notification.Show(); this.notification.Show();
Disposed += (sender, args) => this.notification.Dispose(); Disposed += (sender, args) => this.notification.Dispose();
@ -139,11 +138,6 @@ private void TabSettingsNotifications_ParentChanged(object sender, EventArgs e){
} }
} }
private void notification_Activated(object sender, EventArgs e){
notification.Hide();
notification.Activated -= notification_Activated;
}
private void notification_Move(object sender, EventArgs e){ private void notification_Move(object sender, EventArgs e){
if (radioLocCustom.Checked && notification.Location != ControlExtensions.InvisibleLocation){ if (radioLocCustom.Checked && notification.Location != ControlExtensions.InvisibleLocation){
Config.CustomNotificationPosition = notification.Location; Config.CustomNotificationPosition = notification.Location;

View File

@ -1,6 +1,7 @@
using System; using System;
using CefSharp; using CefSharp;
using TweetDuck.Browser.Adapters; using TweetDuck.Browser.Adapters;
using TweetDuck.Utils;
using TweetLib.Core.Browser; using TweetLib.Core.Browser;
using TweetLib.Core.Features.Plugins; using TweetLib.Core.Features.Plugins;
using TweetLib.Core.Features.Plugins.Events; using TweetLib.Core.Features.Plugins.Events;
@ -22,7 +23,7 @@ public PluginDispatcher(IWebBrowser browser, Func<string, bool> executeOnUrl){
} }
void IPluginDispatcher.AttachBridge(string name, object bridge){ void IPluginDispatcher.AttachBridge(string name, object bridge){
browser.RegisterAsyncJsObject(name, bridge); browser.RegisterJsBridge(name, bridge);
} }
private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){ private void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){

View File

@ -27,7 +27,7 @@ public IResourceHandler File(byte[] bytes, string extension){
return Status(HttpStatusCode.NoContent, "File is empty."); // FromByteArray crashes CEF internals with no contents return Status(HttpStatusCode.NoContent, "File is empty."); // FromByteArray crashes CEF internals with no contents
} }
else{ else{
return ResourceHandler.FromByteArray(bytes, ResourceHandler.GetMimeType(extension)); return ResourceHandler.FromByteArray(bytes, Cef.GetMimeType(extension));
} }
} }
} }

View File

@ -144,6 +144,7 @@ private static void Main(){
if (Arguments.HasFlag(Arguments.ArgUpdated)){ if (Arguments.HasFlag(Arguments.ArgUpdated)){
WindowsUtils.TryDeleteFolderWhenAble(InstallerPath, 8000); WindowsUtils.TryDeleteFolderWhenAble(InstallerPath, 8000);
WindowsUtils.TryDeleteFolderWhenAble(Path.Combine(StoragePath, "Service Worker"), 4000);
BrowserCache.TryClearNow(); BrowserCache.TryClearNow();
} }
@ -161,7 +162,7 @@ private static void Main(){
CefSettings settings = new CefSettings{ CefSettings settings = new CefSettings{
UserAgent = BrowserUtils.UserAgentChrome, UserAgent = BrowserUtils.UserAgentChrome,
BrowserSubprocessPath = BrandName + ".Browser.exe", BrowserSubprocessPath = Path.Combine(ProgramPath, BrandName + ".Browser.exe"),
CachePath = StoragePath, CachePath = StoragePath,
UserDataPath = CefDataPath, UserDataPath = CefDataPath,
LogFile = ConsoleLogFilePath, LogFile = ConsoleLogFilePath,

View File

@ -81,6 +81,11 @@ void UpdateZoomLevel(object sender, EventArgs args){
}; };
} }
public static void RegisterJsBridge(this IWebBrowser browserControl, string name, object bridge){
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
browserControl.JavascriptObjectRepository.Register(name, bridge, isAsync: true, BindingOptions.DefaultBinder);
}
public static void OpenDevToolsCustom(this IWebBrowser browser){ public static void OpenDevToolsCustom(this IWebBrowser browser){
var info = new WindowInfo(); var info = new WindowInfo();
info.SetAsPopup(IntPtr.Zero, "Dev Tools"); info.SetAsPopup(IntPtr.Zero, "Dev Tools");