Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
SeleniumHQ
GitHub Repository: SeleniumHQ/Selenium
Path: blob/trunk/rb/lib/selenium/webdriver/bidi/browser.rb
4102 views
1
# frozen_string_literal: true
2
3
# Licensed to the Software Freedom Conservancy (SFC) under one
4
# or more contributor license agreements. See the NOTICE file
5
# distributed with this work for additional information
6
# regarding copyright ownership. The SFC licenses this file
7
# to you under the Apache License, Version 2.0 (the
8
# "License"); you may not use this file except in compliance
9
# with the License. You may obtain a copy of the License at
10
#
11
# http://www.apache.org/licenses/LICENSE-2.0
12
#
13
# Unless required by applicable law or agreed to in writing,
14
# software distributed under the License is distributed on an
15
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
# KIND, either express or implied. See the License for the
17
# specific language governing permissions and limitations
18
# under the License.
19
20
module Selenium
21
module WebDriver
22
class BiDi
23
#
24
# BiDi Implementation of the Browser Module
25
# Continue to use functionality from existing `driver.manager.window` method
26
#
27
# @api private
28
#
29
30
class Browser
31
Window = Struct.new(:handle, :active, :height, :width, :x, :y, :state) do
32
def active?
33
active
34
end
35
end
36
def initialize(bidi)
37
@bidi = bidi
38
end
39
40
def create_user_context
41
@bidi.send_cmd('browser.createUserContext')
42
end
43
44
def user_contexts
45
@bidi.send_cmd('browser.getUserContexts')
46
end
47
48
def remove_user_context(user_context)
49
@bidi.send_cmd('browser.removeUserContext', userContext: user_context)
50
end
51
52
def windows
53
response = @bidi.send_cmd('browser.getClientWindows')
54
55
response['clientWindows'].map do |win_data|
56
attributes = {
57
handle: win_data['clientWindow'],
58
active: win_data['active'],
59
height: win_data['height'],
60
width: win_data['width'],
61
x: win_data['x'],
62
y: win_data['y'],
63
state: win_data['state']
64
}
65
Window.new(**attributes)
66
end
67
end
68
end # Browser
69
end # BiDi
70
end # WebDriver
71
end # Selenium
72
73