From 2ead42338062ec60c9bfc8564b88fb4307dc7bc3 Mon Sep 17 00:00:00 2001 From: Alex Maitland Date: Sun, 21 Aug 2022 13:44:09 +1000 Subject: [PATCH] Core - Improve JavascriptObjectRepository.TryCallMethod Object Not Found error message - Add method name and param count Resolves #4209 --- .../JavaScriptObjectRepositoryFacts.cs | 10 ++++++++++ CefSharp/Internals/JavascriptObjectRepository.cs | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CefSharp.Test/JavascriptBinding/JavaScriptObjectRepositoryFacts.cs b/CefSharp.Test/JavascriptBinding/JavaScriptObjectRepositoryFacts.cs index 6695ebb36c..03c0b9981a 100644 --- a/CefSharp.Test/JavascriptBinding/JavaScriptObjectRepositoryFacts.cs +++ b/CefSharp.Test/JavascriptBinding/JavaScriptObjectRepositoryFacts.cs @@ -49,6 +49,16 @@ public void CanRegisterJavascriptObjectBindWhenNamespaceIsNull() Assert.Equal("ok", result.ReturnValue.ToString()); } + [Fact] + public void ShouldReturnErrorMessageForObjectInvalidId() + { + IJavascriptObjectRepositoryInternal javascriptObjectRepository = new JavascriptObjectRepository(); + + var result = javascriptObjectRepository.TryCallMethod(100, "getExampleString", new object[0]); + Assert.False(result.Success); + Assert.StartsWith("Object Not Found Matching Id", result.Exception); + } + #if !NETCOREAPP [Fact] public void CanRegisterJavascriptObjectPropertyBindWhenNamespaceIsNull() diff --git a/CefSharp/Internals/JavascriptObjectRepository.cs b/CefSharp/Internals/JavascriptObjectRepository.cs index b9aa11ec9b..e8f79fdd6d 100644 --- a/CefSharp/Internals/JavascriptObjectRepository.cs +++ b/CefSharp/Internals/JavascriptObjectRepository.cs @@ -293,7 +293,9 @@ protected virtual TryCallMethodResult TryCallMethod(long objectId, string name, if (!objects.TryGetValue(objectId, out obj)) { - return new TryCallMethodResult(false, result, "Object Not Found Matching Id:" + objectId); + var paramCount = parameters == null ? 0 : parameters.Length; + + return new TryCallMethodResult(false, result, $"Object Not Found Matching Id:{objectId}, MethodName:{name}, ParamCount:{paramCount}"); } var method = obj.Methods.FirstOrDefault(p => p.JavascriptName == name);