lib/puppeteer/browser_context.rb in puppeteer-ruby-0.0.22 vs lib/puppeteer/browser_context.rb in puppeteer-ruby-0.0.23

- old
+ new

@@ -9,33 +9,26 @@ @connection = connection @browser = browser @id = context_id end - EVENT_MAPPINGS = { - disconnected: 'Events.BrowserContext.Disconnected', - targetcreated: 'Events.BrowserContext.TargetCreated', - targetchanged: 'Events.BrowserContext.TargetChanged', - targetdestroyed: 'Events.BrowserContext.TargetDestroyed', - } - # @param event_name [Symbol] either of :disconnected, :targetcreated, :targetchanged, :targetdestroyed def on(event_name, &block) - unless EVENT_MAPPINGS.has_key?(event_name.to_sym) - raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{EVENT_MAPPINGS.keys.join(", ")}") + unless BrowserContextEmittedEvents.values.include?(event_name.to_s) + raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{BrowserContextEmittedEvents.values.to_a.join(", ")}") end - add_event_listener(EVENT_MAPPINGS[event_name.to_sym], &block) + super(event_name.to_s, &block) end # @param event_name [Symbol] def once(event_name, &block) - unless EVENT_MAPPINGS.has_key?(event_name.to_sym) - raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{EVENT_MAPPINGS.keys.join(", ")}") + unless BrowserContextEmittedEvents.values.include?(event_name.to_s) + raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{BrowserContextEmittedEvents.values.to_a.join(", ")}") end - observe_first(EVENT_MAPPINGS[event_name.to_sym], &block) + super(event_name.to_s, &block) end # @return {!Array<!Target>} target def targets @browser.targets.select { |target| target.browser_context == self } @@ -62,45 +55,51 @@ def incognito? !!@id end - # /** - # * @param {string} origin - # * @param {!Array<string>} permissions - # */ - # async overridePermissions(origin, permissions) { - # const webPermissionToProtocol = new Map([ - # ['geolocation', 'geolocation'], - # ['midi', 'midi'], - # ['notifications', 'notifications'], - # ['push', 'push'], - # ['camera', 'videoCapture'], - # ['microphone', 'audioCapture'], - # ['background-sync', 'backgroundSync'], - # ['ambient-light-sensor', 'sensors'], - # ['accelerometer', 'sensors'], - # ['gyroscope', 'sensors'], - # ['magnetometer', 'sensors'], - # ['accessibility-events', 'accessibilityEvents'], - # ['clipboard-read', 'clipboardRead'], - # ['clipboard-write', 'clipboardWrite'], - # ['payment-handler', 'paymentHandler'], - # // chrome-specific permissions we have. - # ['midi-sysex', 'midiSysex'], - # ]); - # permissions = permissions.map(permission => { - # const protocolPermission = webPermissionToProtocol.get(permission); - # if (!protocolPermission) - # throw new Error('Unknown permission: ' + permission); - # return protocolPermission; - # }); - # await this._connection.send('Browser.grantPermissions', {origin, browserContextId: this._id || undefined, permissions}); - # } + WEB_PERMISSION_TO_PROTOCOL = { + 'geolocation' => 'geolocation', + 'midi' => 'midi', + 'notifications' => 'notifications', + # TODO: push isn't a valid type? + # 'push' => 'push', + 'camera' => 'videoCapture', + 'microphone' => 'audioCapture', + 'background-sync' => 'backgroundSync', + 'ambient-light-sensor' => 'sensors', + 'accelerometer' => 'sensors', + 'gyroscope' => 'sensors', + 'magnetometer' => 'sensors', + 'accessibility-events' => 'accessibilityEvents', + 'clipboard-read' => 'clipboardReadWrite', + 'clipboard-write' => 'clipboardReadWrite', + 'payment-handler' => 'paymentHandler', + 'idle-detection' => 'idleDetection', + # chrome-specific permissions we have. + 'midi-sysex' => 'midiSysex', + }.freeze - # async clearPermissionOverrides() { - # await this._connection.send('Browser.resetPermissions', {browserContextId: this._id || undefined}); - # } + # @param origin [String] + # @param permissions [Array<String>] + def override_permissions(origin, permissions) + protocol_permissions = permissions.map do |permission| + WEB_PERMISSION_TO_PROTOCOL[permission] or raise ArgumentError.new("Unknown permission: #{permission}") + end + @connection.send_message('Browser.grantPermissions', { + origin: origin, + browserContextId: @id, + permissions: protocol_permissions, + }.compact) + end + + def clear_permission_overrides + if @id + @connection.send_message('Browser.resetPermissions', browserContextId: @id) + else + @connection.send_message('Browser.resetPermissions') + end + end # @return [Future<Puppeteer::Page>] def new_page @browser.create_page_in_context(@id) end