diff options
| -rw-r--r-- | src/extension.lisp | 4 | ||||
| -rw-r--r-- | src/main.lisp | 31 | 
2 files changed, 35 insertions, 0 deletions
| diff --git a/src/extension.lisp b/src/extension.lisp index bc75fb9..9fe258c 100644 --- a/src/extension.lisp +++ b/src/extension.lisp @@ -5,6 +5,10 @@       :initarg :id       :reader id       :documentation "The extension's ID.") +   (url +     :initarg :url +     :reader url +     :documentation "The DevTools Protocol target URL.")     (session-id       :initarg :session-id       :reader session-id diff --git a/src/main.lisp b/src/main.lisp index 3bc79c8..8ea05ab 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -72,6 +72,16 @@          (attach-extensions targets extension-ids)))      (when (target-attached-to-target-msg-p response) +      (when (and (reload-current-tab config) +                 (target-attached-to-target-msg-manifest-v3-extension-p response)) +        ;; response is an extension in *extensions* + +        (reload-tab (json-obj-get +                      (json-obj-get response "result") +                      "sessionId")) + +        (return-from ws-on-message)) +        (track-service-worker-target response)        (reload-extension (json-obj-get @@ -198,9 +208,30 @@ the target to reload the current tab."                               ;; Extension IDs are 32 characters long.                               (+ 19 32)) +                       :url (json-obj-get target-info "url")                         :session-id (json-obj-get params "sessionId"))          *extensions*)))) +(defun target-attached-to-target-msg-manifest-v3-extension-p (msg) +  "Return true if the Target.attachedToTarget message `msg` corresonds to a +tracked Manifest V3 extension." +  (filter +    #'(lambda (extension) +        (string= (json-obj-get +                   (json-obj-get +                     (json-obj-get msg "params") +                     "targetInfo") +                   "url") +                 (url extension))) +    *extensions*)) + +(defun manifest-v3-extension-p (extension) +  "Return true if `extension` is in our list of tracked Manifest V3 extensions." +  (filter +    #'(lambda (ext) +        ()) +    *extensions*)) +  (defun websocket-send (client data)    "Send `data` to WebSocket `client` and increment `*wg*`."    (when (debug-output *config*) | 
