@@ -11,24 +11,20 @@ class Browser < Ferrum::Browser
1111 find_modal accept_confirm dismiss_confirm accept_prompt
1212 dismiss_prompt reset_modals ] => :page
1313
14- attr_reader :url_blacklist , :url_whitelist , :window_size
15- alias url_blocklist url_blacklist
16- alias url_allowlist url_whitelist
17-
1814 def initialize ( options = nil )
19- options ||= { }
20- @client = nil
21- self . url_blacklist = options [ :url_blacklist ]
22- self . url_whitelist = options [ :url_whitelist ]
23-
2415 super
25- @window_size = @options . window_size
16+
17+ @options . url_blacklist = prepare_wildcards ( options &.dig ( :url_blacklist ) )
18+ @options . url_whitelist = prepare_wildcards ( options &.dig ( :url_whitelist ) )
19+
2620 @page = false
2721 end
2822
29- def timeout = ( value )
23+ def command ( ... )
3024 super
31- @page . timeout = value unless @page . nil?
25+ rescue Ferrum ::DeadBrowserError
26+ restart
27+ raise
3228 end
3329
3430 def page
@@ -39,7 +35,7 @@ def page
3935
4036 def reset
4137 super
42- @window_size = options . window_size
38+ @options . reset_window_size
4339 @page = attach_page
4440 end
4541
@@ -49,19 +45,29 @@ def quit
4945 end
5046
5147 def resize ( **options )
52- @window_size = [ options [ :width ] , options [ :height ] ]
48+ @options . window_size = [ options [ :width ] , options [ :height ] ]
5349 super
5450 end
5551
52+ def url_whitelist
53+ @options . url_whitelist
54+ end
55+ alias url_allowlist url_whitelist
56+
5657 def url_whitelist = ( patterns )
57- @url_whitelist = prepare_wildcards ( patterns )
58- page . network . whitelist = @url_whitelist if @client && @url_whitelist . any?
58+ @options . url_whitelist = prepare_wildcards ( patterns )
59+ page . network . whitelist = @options . url_whitelist if @client && @options . url_whitelist . any?
5960 end
6061 alias url_allowlist = url_whitelist =
6162
63+ def url_blacklist
64+ @options . url_blacklist
65+ end
66+ alias url_blocklist url_blacklist
67+
6268 def url_blacklist = ( patterns )
63- @url_blacklist = prepare_wildcards ( patterns )
64- page . network . blacklist = @url_blacklist if @client && @url_blacklist . any?
69+ @options . url_blacklist = prepare_wildcards ( patterns )
70+ page . network . blacklist = @options . url_blacklist if @client && @options . url_blacklist . any?
6571 end
6672 alias url_blocklist = url_blacklist =
6773
@@ -118,6 +124,7 @@ def close_window(target_id)
118124
119125 @page = nil if @page . target_id == target . id
120126 target . page . close
127+ targets . delete ( target_id ) # page.close is async, delete target asap
121128 end
122129
123130 def browser_error
@@ -231,10 +238,10 @@ def prepare_wildcards(patterns)
231238 def attach_page ( target_id = nil )
232239 target = targets [ target_id ] if target_id
233240 target ||= default_context . default_target
234- return target . page if target . attached ?
241+ return target . page if target . connected ?
235242
236243 target . maybe_sleep_if_new_window
237- target . page = Page . new ( target . id , self )
244+ target . page = Page . new ( target . client , context_id : target . context_id , target_id : target . id )
238245 target . page
239246 end
240247 end
0 commit comments