A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/seleniumhq/selenium/commit/3170a497f8c6ecd3247fb5fb7662828723ad8f42 below:

[dotnet] add cdp v106 remove v103 · SeleniumHQ/selenium@3170a49 · GitHub

1 +

// <copyright file="V106JavaScript.cs" company="WebDriver Committers">

2 +

// Licensed to the Software Freedom Conservancy (SFC) under one

3 +

// or more contributor license agreements. See the NOTICE file

4 +

// distributed with this work for additional information

5 +

// regarding copyright ownership. The SFC licenses this file

6 +

// to you under the Apache License, Version 2.0 (the "License");

7 +

// you may not use this file except in compliance with the License.

8 +

// You may obtain a copy of the License at

9 +

//

10 +

// http://www.apache.org/licenses/LICENSE-2.0

11 +

//

12 +

// Unless required by applicable law or agreed to in writing, software

13 +

// distributed under the License is distributed on an "AS IS" BASIS,

14 +

// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

15 +

// See the License for the specific language governing permissions and

16 +

// limitations under the License.

17 + 18 +

using System;

19 +

using System.Collections.Generic;

20 +

using System.Threading.Tasks;

21 +

using OpenQA.Selenium.DevTools.V106.Page;

22 +

using OpenQA.Selenium.DevTools.V106.Runtime;

23 + 24 +

namespace OpenQA.Selenium.DevTools.V106

25 +

{

26 +

/// <summary>

27 +

/// Class containing the JavaScript implementation for version 106 of the DevTools Protocol.

28 +

/// </summary>

29 +

public class V106JavaScript : JavaScript

30 +

{

31 +

private RuntimeAdapter runtime;

32 +

private PageAdapter page;

33 + 34 +

/// <summary>

35 +

/// Initializes a new instance of the <see cref="V106JavaScript"/> class.

36 +

/// </summary>

37 +

/// <param name="runtime">The DevTools Protocol adapter for the Runtime domain.</param>

38 +

/// <param name="page">The DevTools Protocol adapter for the Page domain.</param>

39 +

public V106JavaScript(RuntimeAdapter runtime, PageAdapter page)

40 +

{

41 +

this.runtime = runtime;

42 +

this.page = page;

43 +

this.runtime.BindingCalled += OnRuntimeBindingCalled;

44 +

this.runtime.ConsoleAPICalled += OnRuntimeConsoleApiCalled;

45 +

this.runtime.ExceptionThrown += OnRuntimeExceptionThrown;

46 +

}

47 + 48 +

/// <summary>

49 +

/// Asynchronously enables the Runtime domain in the DevTools Protocol.

50 +

/// </summary>

51 +

/// <returns>A task that represents the asynchronous operation.</returns>

52 +

public override async Task EnableRuntime()

53 +

{

54 +

await runtime.Enable();

55 +

}

56 + 57 +

/// <summary>

58 +

/// Asynchronously disables the Runtime domain in the DevTools Protocol.

59 +

/// </summary>

60 +

/// <returns>A task that represents the asynchronous operation.</returns>

61 +

public override async Task DisableRuntime()

62 +

{

63 +

await runtime.Disable();

64 +

}

65 + 66 +

/// <summary>

67 +

/// Asynchronously enables the Page domain in the DevTools Protocol.

68 +

/// </summary>

69 +

/// <returns>A task that represents the asynchronous operation.</returns>

70 +

public override async Task EnablePage()

71 +

{

72 +

await page.Enable();

73 +

}

74 + 75 +

/// <summary>

76 +

/// Asynchronously disables the Page domain in the DevTools Protocol.

77 +

/// </summary>

78 +

/// <returns>A task that represents the asynchronous operation.</returns>

79 +

public override async Task DisablePage()

80 +

{

81 +

await page.Disable();

82 +

}

83 + 84 +

/// <summary>

85 +

/// Adds a binding to a specific JavaScript name.

86 +

/// </summary>

87 +

/// <param name="name">The name to which to bind to.</param>

88 +

/// <returns>A task that represents the asynchronous operation.</returns>

89 +

public override async Task AddBinding(string name)

90 +

{

91 +

await runtime.AddBinding(new AddBindingCommandSettings() { Name = name });

92 +

}

93 + 94 +

/// <summary>

95 +

/// Removes a binding from a specific JavaScript name.

96 +

/// </summary>

97 +

/// <param name="name">The name to which to remove the bind from.</param>

98 +

/// <returns>A task that represents the asynchronous operation.</returns>

99 +

public override async Task RemoveBinding(string name)

100 +

{

101 +

await runtime.RemoveBinding(new RemoveBindingCommandSettings() { Name = name });

102 +

}

103 + 104 +

/// <summary>

105 +

/// Adds a JavaScript snippet to evaluate when a new document is opened.

106 +

/// </summary>

107 +

/// <param name="script">The script to add to be evaluated when a new document is opened.</param>

108 +

/// <returns>A task that represents the asynchronous operation. The task result contains the internal ID of the script.</returns>

109 +

public override async Task<string> AddScriptToEvaluateOnNewDocument(string script)

110 +

{

111 +

var result = await page.AddScriptToEvaluateOnNewDocument(new AddScriptToEvaluateOnNewDocumentCommandSettings() { Source = script });

112 +

return result.Identifier;

113 +

}

114 + 115 +

/// <summary>

116 +

/// Removes a JavaScript snippet from evaluate when a new document is opened.

117 +

/// </summary>

118 +

/// <param name="scriptId">The ID of the script to be removed.</param>

119 +

/// <returns>A task that represents the asynchronous operation.</returns>

120 +

public override async Task RemoveScriptToEvaluateOnNewDocument(string scriptId)

121 +

{

122 +

await page.RemoveScriptToEvaluateOnNewDocument(new RemoveScriptToEvaluateOnNewDocumentCommandSettings() { Identifier = scriptId });

123 +

}

124 + 125 +

/// <summary>

126 +

/// Evaluates a JavaScript snippet. It does not return a value.

127 +

/// </summary>

128 +

/// <param name="script">The script to evaluate</param>

129 +

/// <returns>A task that represents the asynchronous operation.</returns>

130 +

/// <remarks>

131 +

/// This method is internal to the operation of pinned scripts in Selenium, and

132 +

/// is therefore internal by design.

133 +

/// </remarks>

134 +

internal override async Task Evaluate(string script)

135 +

{

136 +

await runtime.Evaluate(new EvaluateCommandSettings { Expression = script });

137 +

}

138 + 139 +

private void OnRuntimeBindingCalled(object sender, Runtime.BindingCalledEventArgs e)

140 +

{

141 +

BindingCalledEventArgs wrapped = new BindingCalledEventArgs()

142 +

{

143 +

ExecutionContextId = e.ExecutionContextId,

144 +

Name = e.Name,

145 +

Payload = e.Payload

146 +

};

147 + 148 +

this.OnBindingCalled(wrapped);

149 +

}

150 + 151 +

private void OnRuntimeExceptionThrown(object sender, Runtime.ExceptionThrownEventArgs e)

152 +

{

153 +

// TODO: Collect stack trace elements

154 +

var wrapped = new ExceptionThrownEventArgs()

155 +

{

156 +

Timestamp = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(e.Timestamp),

157 +

Message = e.ExceptionDetails.Text

158 +

};

159 + 160 +

this.OnExceptionThrown(wrapped);

161 +

}

162 + 163 +

private void OnRuntimeConsoleApiCalled(object sender, ConsoleAPICalledEventArgs e)

164 +

{

165 +

List<ConsoleApiArgument> args = new List<ConsoleApiArgument>();

166 +

foreach (var arg in e.Args)

167 +

{

168 +

string argValue = null;

169 +

if (arg.Value != null)

170 +

{

171 +

argValue = arg.Value.ToString();

172 +

}

173 +

args.Add(new ConsoleApiArgument() { Type = arg.Type.ToString(), Value = argValue });

174 +

}

175 + 176 +

var wrapped = new ConsoleApiCalledEventArgs()

177 +

{

178 +

Timestamp = new DateTime(1979, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(e.Timestamp),

179 +

Type = e.Type,

180 +

Arguments = args.AsReadOnly()

181 +

};

182 + 183 +

this.OnConsoleApiCalled(wrapped);

184 +

}

185 +

}

186 +

}


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4