From 5beb4694cf112bb0261d0915cf54201109f7ea2d Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Thu, 4 Feb 2021 00:16:36 +0100 Subject: Make DevTools Protocol call ID auto-incrementing Remove the hard-coded call IDs and replace them with a class that keeps track of the current call ID and allows for easy incrementing to get the next ID. This should allow us to give multiple extension IDs on the command line and send messages with properly incrementing call IDs. Didn't touch the `runtime-evaluate-msg` message call ID because that one is local to the target it's attached to, so we can keep it at ID "1". --- l/src/main.lisp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'l/src/main.lisp') diff --git a/l/src/main.lisp b/l/src/main.lisp index 9a0ea79..fbe3357 100644 --- a/l/src/main.lisp +++ b/l/src/main.lisp @@ -1,6 +1,7 @@ (in-package :extreload) (defvar *wg* (wait-group:make-wait-group)) +(defvar *devtools-root-call-id* (make-instance 'call-id)) (opts:define-opts (:name :socket-url @@ -30,7 +31,8 @@ ; (wsd:on :message *client* #'(lambda (message) (ws-on-message message))) ;; TODO: Maybe defvar *config* and store client in the config - (websocket-send *client* (target-get-targets-msg 1)) + (websocket-send *client* (target-get-targets-msg + (next-call-id *devtools-root-call-id*))) (wait-group:wait *wg*)))) @@ -73,9 +75,12 @@ (defun attach-to-target (extension) (let ((target-id (json-obj-get extension "targetId"))) (websocket-send *client* - (target-attach-to-target-msg 2 target-id)))) + (target-attach-to-target-msg + (next-call-id *devtools-root-call-id*) + target-id)))) (defun reload-extension (session-id) + ;; Use call ID "1" as this is the first message sent to the attached target. (websocket-send *client* (runtime-evaluate-msg 1 session-id "chrome.runtime.reload()"))) -- cgit v1.2.3