lib/puppeteer/target.rb in puppeteer-ruby-0.0.8 vs lib/puppeteer/target.rb in puppeteer-ruby-0.0.9
- old
+ new
@@ -31,42 +31,45 @@
# /** @type {?Promise<!Puppeteer.Page>} */
# this._pagePromise = null;
# /** @type {?Promise<!Worker>} */
# this._workerPromise = null;
- @initialized_promise = resolvable_future
+ @initialize_callback_promise = resolvable_future
+ @initialized_promise = @initialize_callback_promise.then do |success|
+ handle_initialized(success)
+ end
# this._isClosedPromise = new Promise(fulfill => this._closedCallback = fulfill);
@is_initialized = @target_info.type != 'page' || !@target_info.url.empty?
if @is_initialized
- handle_initialized(true)
+ @initialize_callback_promise.fulfill(true)
end
end
attr_reader :target_id, :initialized_promise
class InitializeFailure < StandardError; end
- def handle_initialized(success)
+ def ignore_initialize_callback_promise
+ @initialize_callback_promise.fulfill(false)
+ end
+
+ private def handle_initialized(success)
unless success
- @initialized_promise.reject(InitializeFailure.new('Failed to create target for page'))
+ raise InitializeFailure.new('Failed to create target for page')
end
- @on_initialize_succeeded&.call
- @initialized_promise.fulfill(true)
opener_page = opener&.page
if opener_page.nil? || type != 'page'
- return
+ return true
end
# if (!openerPage.listenerCount(Events.Page.Popup))
# return true;
popup_page = page
opener_page.emit_event('Events.Page.Popup', popup_page)
- end
- def on_initialize_succeeded(&block)
- @on_initialize_succeeded = block
+ true
end
def handle_closed
@closed = true
@on_close&.call
@@ -83,11 +86,11 @@
def create_cdp_session
@session_factory.call
end
def page
- if ['page', 'background_page'].include?(@target_info.type) && @page.nil?
+ if ['page', 'background_page', 'webview'].include?(@target_info.type) && @page.nil?
client = @session_factory.call
@page = Puppeteer::Page.create(client, self, @ignore_https_errors, @default_viewport, @screenshot_task_queue)
end
@page
end
@@ -140,11 +143,11 @@
# @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 && (@target_info.type != 'page' || !@target_info.url.empty?)
@is_initialized = true
- handle_initialized(true)
+ @initialize_callback_promise.fulfill(true)
end
end
end