aboutsummaryrefslogtreecommitdiffstats
path: root/content_scripts/mode_passkeys.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'content_scripts/mode_passkeys.coffee')
-rw-r--r--content_scripts/mode_passkeys.coffee25
1 files changed, 18 insertions, 7 deletions
diff --git a/content_scripts/mode_passkeys.coffee b/content_scripts/mode_passkeys.coffee
index ce9f25d2..82f7596b 100644
--- a/content_scripts/mode_passkeys.coffee
+++ b/content_scripts/mode_passkeys.coffee
@@ -13,20 +13,31 @@ class PassKeysMode extends Mode
for keyChar in [KeyboardUtils.getKeyChar(event), String.fromCharCode(event.charCode)]
# A key is passed through to the underlying page by returning handlerStack.passDirectlyToPage.
return handlerStack.passDirectlyToPage if keyChar and @isPassKey keyChar
- true
+ Mode.propagate
- setState: (response) ->
- if response.isEnabledForUrl?
- @passKeys = (response.isEnabledForUrl and response.passKeys) or ""
- if response.keyQueue?
- @keyQueue = response.keyQueue
+ # This is called to set the pass-keys state with various types of request from various sources, so we handle
+ # all of these.
+ # TODO(smblott) Rationalize this.
+ setState: (request) ->
+ if request.isEnabledForUrl?
+ @passKeys = (request.isEnabledForUrl and request.passKeys) or ""
+ if request.enabled?
+ @passKeys = (request.enabled and request.passKeys) or ""
+ if request.keyQueue?
+ @keyQueue = request.keyQueue
+ Mode.updateBadge()
constructor: ->
super
name: "passkeys"
keydown: (event) => @handlePassKeyEvent event
keypress: (event) => @handlePassKeyEvent event
- keyup: -> true # Allow event to propagate.
+ keyup: -> Mode.propagate
+
+ # Overriding and re-using updateBadgeForMode() from Mode.updateBadgeForMode().
+ updateBadgeForMode: (badge) ->
+ @badge = if @passKeys and not @keyQueue then "P" else ""
+ super badge
root = exports ? window
root.PassKeysMode = PassKeysMode