class Capybara::Apparition::FrameManager

Public Class Methods

new(id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 7
def initialize(id)
  @frames = {}
  @frames_mutex = Mutex.new
  add(id).loading(-1)
  @main_id = @current_id = id
end

Public Instance Methods

[](id)
Alias for: get
add(id, frame_params = {}) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 35
def add(id, frame_params = {})
  @frames_mutex.synchronize do
    @frames[id] = Frame.new(nil, frame_params.merge(frameId: id))
  end
end
current() click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 18
def current
  get(@current_id)
end
delete(id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 48
def delete(id)
  @frames_mutex.synchronize do
    if @current_id == id
      @frames[id].obsolete!
    else
      @frames.delete(id)
    end
  end
end
destroy_context(ctx_id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 64
def destroy_context(ctx_id)
  @frames_mutex.synchronize do
    @frames.each_value do |f|
      f.context_id = nil if f.context_id == ctx_id
    end
  end
end
exists?(id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 58
def exists?(id)
  @frames_mutex.synchronize do
    @frames.key?(id)
  end
end
get(id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 41
def get(id)
  @frames_mutex.synchronize do
    @frames[id]
  end
end
Also aliased as: []
main() click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 14
def main
  get(@main_id)
end
pop_frame(top:) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 22
def pop_frame(top:)
  @current_id = if top
    @main_id
  else
    get(@current_id).parent_id
  end
  cleanup_unused_obsolete
end
push_frame(id) click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 31
def push_frame(id)
  @current_id = id
end

Private Instance Methods

cleanup_unused_obsolete() click to toggle source
# File lib/capybara/apparition/page/frame_manager.rb, line 74
def cleanup_unused_obsolete
  @frames_mutex.synchronize do
    @frames.delete_if do |_id, f|
      f.obsolete? && (f.id != @current_id)
    end
  end
end