From 47dc6604261045358e680f795adfd4ba394ad93b Mon Sep 17 00:00:00 2001 From: Paolo Iommarini Date: Thu, 7 Nov 2024 11:46:09 +0100 Subject: [PATCH] Fixed RegisterJavascriptObject --- CefGlue.Common/CommonBrowserAdapter.cs | 4 +++- CefGlue.Common/ObjectBinding/NativeObjectRegistry.cs | 9 +++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CefGlue.Common/CommonBrowserAdapter.cs b/CefGlue.Common/CommonBrowserAdapter.cs index 5f249930..df8d88d7 100644 --- a/CefGlue.Common/CommonBrowserAdapter.cs +++ b/CefGlue.Common/CommonBrowserAdapter.cs @@ -173,7 +173,7 @@ private void NavigateTo(string url) // Remove leading whitespace from the URL url = url.TrimStart(); - // to play safe, load url must be called after OnBrowserCreated(CefBrowser) which runs on CefThreadId.UI, + // to play safe, load url must be called after OnBrowserCreated(CefBrowser) which runs on CefThreadId.UI, // otherwise the navigation will be aborted ActionTask.Run(() => { @@ -599,6 +599,8 @@ void ICefBrowserHost.HandleLoadStart(CefBrowser browser, CefFrame frame, CefTran void ICefBrowserHost.HandleLoadEnd(CefBrowser browser, CefFrame frame, int httpStatusCode) { + // Register all objects + _objectRegistry.SetBrowser(browser); LoadEnd?.Invoke(_eventsEmitter, new LoadEndEventArgs(frame, httpStatusCode)); } diff --git a/CefGlue.Common/ObjectBinding/NativeObjectRegistry.cs b/CefGlue.Common/ObjectBinding/NativeObjectRegistry.cs index f0450bcb..b3861731 100644 --- a/CefGlue.Common/ObjectBinding/NativeObjectRegistry.cs +++ b/CefGlue.Common/ObjectBinding/NativeObjectRegistry.cs @@ -13,7 +13,7 @@ internal class NativeObjectRegistry : IDisposable private readonly object _registrationSyncRoot = new object(); /// - /// + /// /// /// /// @@ -24,7 +24,7 @@ public bool Register(object obj, string name, MethodCallHandler methodHandler = { return false; } - + var nativeObj = new NativeObject(name, obj, methodHandler); lock (_registrationSyncRoot) @@ -36,8 +36,9 @@ public bool Register(object obj, string name, MethodCallHandler methodHandler = } _registeredObjects.Add(name, nativeObj); - - if (_browser != null) + + // If the browser is loading the object will be registered by CommonBrowserAdapter.HandleLoadEnd + if (_browser != null && !_browser.IsLoading) { SendRegistrationMessage(nativeObj); }