Class: Dommy::Permissions
- Inherits:
-
Object
- Object
- Dommy::Permissions
- Includes:
- Bridge::Methods
- Defined in:
- lib/dommy/navigator.rb
Overview
‘navigator.permissions` — query returns a PermissionStatus whose `state` defaults to “granted” for every recognized name. Tests can override via `permissions.set(“name”, “denied”)` before exercising user code.
Constant Summary collapse
- KNOWN_NAMES =
%w[ geolocation notifications push midi camera microphone clipboard-read clipboard-write background-fetch background-sync persistent-storage accelerometer gyroscope magnetometer screen-wake-lock storage-access window-management ] .freeze
Instance Method Summary collapse
- #__js_call__(method, args) ⇒ Object
- #__js_get__(_key) ⇒ Object
- #__js_set__(_key, _value) ⇒ Object
-
#initialize(window) ⇒ Permissions
constructor
A new instance of Permissions.
- #query(descriptor) ⇒ Object
-
#set(name, state) ⇒ Object
Test helper: override the resolved state for a permission name.
Methods included from Bridge::Methods
Constructor Details
#initialize(window) ⇒ Permissions
Returns a new instance of Permissions.
231 232 233 234 |
# File 'lib/dommy/navigator.rb', line 231 def initialize(window) @window = window @overrides = {} end |
Instance Method Details
#__js_call__(method, args) ⇒ Object
271 272 273 274 275 276 |
# File 'lib/dommy/navigator.rb', line 271 def __js_call__(method, args) case method when "query" query(args[0]) end end |
#__js_get__(_key) ⇒ Object
261 262 263 |
# File 'lib/dommy/navigator.rb', line 261 def __js_get__(_key) nil end |
#__js_set__(_key, _value) ⇒ Object
265 266 267 |
# File 'lib/dommy/navigator.rb', line 265 def __js_set__(_key, _value) Bridge::UNHANDLED end |
#query(descriptor) ⇒ Object
248 249 250 251 252 253 254 255 256 257 258 259 |
# File 'lib/dommy/navigator.rb', line 248 def query(descriptor) name = if descriptor.is_a?(Hash) (descriptor["name"] || descriptor[:name]).to_s else descriptor.to_s end state = @overrides[name] || "granted" @statuses ||= {} status = @statuses[name] ||= PermissionStatus.new(@window, name, state) PromiseValue.resolve(@window, status) end |
#set(name, state) ⇒ Object
Test helper: override the resolved state for a permission name. Subsequent ‘query()` calls will see the new value, and existing PermissionStatus objects fire `change` events.
239 240 241 242 243 244 245 246 |
# File 'lib/dommy/navigator.rb', line 239 def set(name, state) key = name.to_s @overrides[key] = state.to_s @statuses ||= {} status = @statuses[key] status&.__internal_set_state__(state.to_s) nil end |