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