diff --git a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextScriptModule.cs b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextScriptModule.cs index df91a3e893a2f..abebc16113d31 100644 --- a/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/BrowsingContext/BrowsingContextScriptModule.cs @@ -17,14 +17,16 @@ // under the License. // -using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Script; +using OpenQA.Selenium.Internal; +using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; namespace OpenQA.Selenium.BiDi.BrowsingContext; public sealed class BrowsingContextScriptModule(BrowsingContext context, ScriptModule scriptModule) { - public async Task AddPreloadScriptAsync(string functionDeclaration, BrowsingContextAddPreloadScriptOptions? options = null) + public async Task AddPreloadScriptAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, BrowsingContextAddPreloadScriptOptions? options = null) { AddPreloadScriptOptions addPreloadScriptOptions = new(options) { @@ -43,7 +45,7 @@ public async Task GetRealmsAsync(GetRealmsOptions? options = nu return await scriptModule.GetRealmsAsync(options).ConfigureAwait(false); } - public Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) + public Task EvaluateAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) { var contextTarget = new ContextTarget(context); @@ -55,14 +57,14 @@ public Task EvaluateAsync(string expression, bool awaitPromise, return scriptModule.EvaluateAsync(expression, awaitPromise, contextTarget, options); } - public async Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) + public async Task EvaluateAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) { var result = await EvaluateAsync(expression, awaitPromise, options, targetOptions).ConfigureAwait(false); return result.AsSuccessResult().ConvertTo(); } - public Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) + public Task CallFunctionAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) { var contextTarget = new ContextTarget(context); @@ -74,7 +76,7 @@ public Task CallFunctionAsync(string functionDeclaration, bool a return scriptModule.CallFunctionAsync(functionDeclaration, awaitPromise, contextTarget, options); } - public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) + public async Task CallFunctionAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) { var result = await CallFunctionAsync(functionDeclaration, awaitPromise, options, targetOptions).ConfigureAwait(false); diff --git a/dotnet/src/webdriver/BiDi/Script/AddPreloadScriptCommand.cs b/dotnet/src/webdriver/BiDi/Script/AddPreloadScriptCommand.cs index c676ea7b5600a..4cb6e75b0e7f5 100644 --- a/dotnet/src/webdriver/BiDi/Script/AddPreloadScriptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Script/AddPreloadScriptCommand.cs @@ -17,14 +17,16 @@ // under the License. // +using OpenQA.Selenium.Internal; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace OpenQA.Selenium.BiDi.Script; internal sealed class AddPreloadScriptCommand(AddPreloadScriptParameters @params) : Command(@params, "script.addPreloadScript"); -internal sealed record AddPreloadScriptParameters(string FunctionDeclaration, IEnumerable? Arguments, IEnumerable? Contexts, string? Sandbox) : Parameters; +internal sealed record AddPreloadScriptParameters([StringSyntax(StringSyntaxConstants.JavaScript)] string FunctionDeclaration, IEnumerable? Arguments, IEnumerable? Contexts, string? Sandbox) : Parameters; public sealed class AddPreloadScriptOptions : CommandOptions { diff --git a/dotnet/src/webdriver/BiDi/Script/CallFunctionCommand.cs b/dotnet/src/webdriver/BiDi/Script/CallFunctionCommand.cs index 2b2ea525466fa..41d8bcce8f2cd 100644 --- a/dotnet/src/webdriver/BiDi/Script/CallFunctionCommand.cs +++ b/dotnet/src/webdriver/BiDi/Script/CallFunctionCommand.cs @@ -17,14 +17,16 @@ // under the License. // +using OpenQA.Selenium.Internal; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace OpenQA.Selenium.BiDi.Script; internal sealed class CallFunctionCommand(CallFunctionParameters @params) : Command(@params, "script.callFunction"); -internal sealed record CallFunctionParameters(string FunctionDeclaration, bool AwaitPromise, Target Target, IEnumerable? Arguments, ResultOwnership? ResultOwnership, SerializationOptions? SerializationOptions, LocalValue? This, bool? UserActivation) : Parameters; +internal sealed record CallFunctionParameters([StringSyntax(StringSyntaxConstants.JavaScript)] string FunctionDeclaration, bool AwaitPromise, Target Target, IEnumerable? Arguments, ResultOwnership? ResultOwnership, SerializationOptions? SerializationOptions, LocalValue? This, bool? UserActivation) : Parameters; public sealed class CallFunctionOptions : CommandOptions { diff --git a/dotnet/src/webdriver/BiDi/Script/EvaluateCommand.cs b/dotnet/src/webdriver/BiDi/Script/EvaluateCommand.cs index 65d5ed6d8ca24..2b142ef59cdfd 100644 --- a/dotnet/src/webdriver/BiDi/Script/EvaluateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Script/EvaluateCommand.cs @@ -18,7 +18,9 @@ // using OpenQA.Selenium.BiDi.Json.Converters.Polymorphic; +using OpenQA.Selenium.Internal; using System; +using System.Diagnostics.CodeAnalysis; using System.Text.Json.Serialization; namespace OpenQA.Selenium.BiDi.Script; @@ -26,7 +28,7 @@ namespace OpenQA.Selenium.BiDi.Script; internal sealed class EvaluateCommand(EvaluateParameters @params) : Command(@params, "script.evaluate"); -internal sealed record EvaluateParameters(string Expression, Target Target, bool AwaitPromise, ResultOwnership? ResultOwnership, SerializationOptions? SerializationOptions, bool? UserActivation) : Parameters; +internal sealed record EvaluateParameters([StringSyntax(StringSyntaxConstants.JavaScript)] string Expression, Target Target, bool AwaitPromise, ResultOwnership? ResultOwnership, SerializationOptions? SerializationOptions, bool? UserActivation) : Parameters; public sealed class EvaluateOptions : CommandOptions { diff --git a/dotnet/src/webdriver/BiDi/Script/ScriptModule.cs b/dotnet/src/webdriver/BiDi/Script/ScriptModule.cs index e13d907e47ec3..bd1354decc6e8 100644 --- a/dotnet/src/webdriver/BiDi/Script/ScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/Script/ScriptModule.cs @@ -19,6 +19,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; @@ -29,28 +30,28 @@ public sealed class ScriptModule : Module { private ScriptJsonSerializerContext _jsonContext = null!; - public async Task EvaluateAsync(string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) + public async Task EvaluateAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) { var @params = new EvaluateParameters(expression, target, awaitPromise, options?.ResultOwnership, options?.SerializationOptions, options?.UserActivation); return await Broker.ExecuteCommandAsync(new EvaluateCommand(@params), options, _jsonContext.EvaluateCommand, _jsonContext.EvaluateResult).ConfigureAwait(false); } - public async Task EvaluateAsync(string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) + public async Task EvaluateAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) { var result = await EvaluateAsync(expression, awaitPromise, target, options).ConfigureAwait(false); return result.AsSuccessResult().ConvertTo(); } - public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) + public async Task CallFunctionAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) { var @params = new CallFunctionParameters(functionDeclaration, awaitPromise, target, options?.Arguments, options?.ResultOwnership, options?.SerializationOptions, options?.This, options?.UserActivation); return await Broker.ExecuteCommandAsync(new CallFunctionCommand(@params), options, _jsonContext.CallFunctionCommand, _jsonContext.EvaluateResult).ConfigureAwait(false); } - public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) + public async Task CallFunctionAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) { var result = await CallFunctionAsync(functionDeclaration, awaitPromise, target, options).ConfigureAwait(false); @@ -71,7 +72,7 @@ public async Task GetRealmsAsync(GetRealmsOptions? options = nu return await Broker.ExecuteCommandAsync(new GetRealmsCommand(@params), options, _jsonContext.GetRealmsCommand, _jsonContext.GetRealmsResult).ConfigureAwait(false); } - public async Task AddPreloadScriptAsync(string functionDeclaration, AddPreloadScriptOptions? options = null) + public async Task AddPreloadScriptAsync([StringSyntax(StringSyntaxConstants.JavaScript)] string functionDeclaration, AddPreloadScriptOptions? options = null) { var @params = new AddPreloadScriptParameters(functionDeclaration, options?.Arguments, options?.Contexts, options?.Sandbox);