lib/puppeteer/target.rb in puppeteer-ruby-0.40.7 vs lib/puppeteer/target.rb in puppeteer-ruby-0.41.0
- old
+ new
@@ -16,37 +16,42 @@
# @param {!Protocol.Target.TargetInfo} targetInfo
# @param {!Puppeteer.BrowserContext} browserContext
# @param {!function():!Promise<!Puppeteer.CDPSession>} sessionFactory
# @param {boolean} ignoreHTTPSErrors
# @param {?Puppeteer.Viewport} defaultViewport
- def initialize(target_info:, browser_context:, session_factory:, ignore_https_errors:, default_viewport:)
+ def initialize(target_info:,
+ browser_context:,
+ session_factory:,
+ ignore_https_errors:,
+ default_viewport:,
+ is_page_target_callback:)
@target_info = target_info
@browser_context = browser_context
@target_id = target_info.target_id
@session_factory = session_factory
@ignore_https_errors = ignore_https_errors
@default_viewport = default_viewport
+ @is_page_target_callback = is_page_target_callback
-
# /** @type {?Promise<!Puppeteer.Page>} */
# this._pagePromise = null;
# /** @type {?Promise<!Worker>} */
# this._workerPromise = null;
@initialize_callback_promise = resolvable_future
@initialized_promise = @initialize_callback_promise.then do |success|
handle_initialized(success)
end
@is_closed_promise = resolvable_future
- @is_initialized = @target_info.type != 'page' || !@target_info.url.empty?
+ @is_initialized = !@is_page_target_callback.call(@target_info) || !@target_info.url.empty?
if @is_initialized
@initialize_callback_promise.fulfill(true)
end
end
- attr_reader :target_id, :initialized_promise, :is_closed_promise
+ attr_reader :target_id, :target_info, :initialized_promise, :is_closed_promise
def closed_callback
@is_closed_promise.fulfill(true)
end
@@ -81,11 +86,11 @@
def create_cdp_session
@session_factory.call
end
def page
- if ['page', 'background_page', 'webview'].include?(@target_info.type) && @page.nil?
+ if @is_page_target_callback.call(@target_info) && @page.nil?
client = @session_factory.call
@page = Puppeteer::Page.create(client, self, @ignore_https_errors, @default_viewport)
end
@page
end
@@ -143,10 +148,10 @@
# @param {!Protocol.Target.TargetInfo} targetInfo
def handle_target_info_changed(target_info)
@target_info = target_info
- if !@is_initialized && (@target_info.type != 'page' || !@target_info.url.empty?)
+ if !@is_initialized && (!@is_page_target_callback.call(@target_info) || !@target_info.url.empty?)
@is_initialized = true
@initialize_callback_promise.fulfill(true)
end
end
end