diff --git a/lib/debug/server.rb b/lib/debug/server.rb index 5f3fa966c..e7493a6a2 100644 --- a/lib/debug/server.rb +++ b/lib/debug/server.rb @@ -115,7 +115,7 @@ def greeting self.extend(UI_DAP) @repl = false dap_setup @sock.read($1.to_i) - when /^GET \/ HTTP\/1.1/ + when /^GET \/.* HTTP\/1.1/ require_relative 'server_cdp' self.extend(UI_CDP) @@ -349,8 +349,8 @@ def chrome_setup unless @chrome_pid = UI_CDP.setup_chrome(@addr) DEBUGGER__.warn <<~EOS if CONFIG[:open_frontend] == 'chrome' With Chrome browser, type the following URL in the address-bar: - - devtools://devtools/bundled/inspector.html?ws=#{@addr} + + devtools://devtools/bundled/inspector.html?v8only=true&panel=sources&ws=#{@addr}/#{SecureRandom.uuid} EOS end diff --git a/lib/debug/server_cdp.rb b/lib/debug/server_cdp.rb index d8dd4ae10..df997d005 100644 --- a/lib/debug/server_cdp.rb +++ b/lib/debug/server_cdp.rb @@ -51,7 +51,7 @@ def setup_chrome addr ws_client.send sessionId: s_id, id: 5, method: 'Page.navigate', params: { - url: "devtools://devtools/bundled/inspector.html?ws=#{addr}", + url: "devtools://devtools/bundled/inspector.html?v8only=true&panel=sources&ws=#{addr}/#{SecureRandom.uuid}", frameId: f_id } when res['method'] == 'Page.loadEventFired' @@ -281,21 +281,17 @@ def process case req['method'] ## boot/configuration - when 'Page.getResourceTree' + when 'Debugger.getScriptSource' + s_id = req.dig('params', 'scriptId') + src = get_source_code s_id + send_response req, scriptSource: src + @q_msg << req + when 'Debugger.enable' + send_response req + @q_msg << req path = File.absolute_path($0) src = File.read(path) @src_map[path] = src - send_response req, - frameTree: { - frame: { - id: SecureRandom.hex(16), - loaderId: SecureRandom.hex(16), - url: 'http://debuggee/', - securityOrigin: 'http://debuggee', - mimeType: 'text/plain' }, - resources: [ - ] - } send_event 'Debugger.scriptParsed', scriptId: path, url: "http://debuggee#{path}", @@ -305,17 +301,17 @@ def process endColumn: 0, executionContextId: 1, hash: src.hash + when 'Runtime.enable' + send_response req send_event 'Runtime.executionContextCreated', context: { id: SecureRandom.hex(16), origin: "http://#{@addr}", name: '' } - when 'Debugger.getScriptSource' - s_id = req.dig('params', 'scriptId') - src = get_source_code s_id - send_response req, scriptSource: src - @q_msg << req + when 'Runtime.getIsolateId' + send_response req, + id: SecureRandom.hex when 'Page.startScreencast', 'Emulation.setTouchEmulationEnabled', 'Emulation.setEmitTouchEventsForMouse', 'Runtime.compileScript', 'Page.getResourceContent', 'Overlay.setPausedInDebuggerMessage', 'Runtime.releaseObjectGroup', 'Runtime.discardConsoleEntries', 'Log.clear' @@ -531,7 +527,7 @@ def fail_response req, **result def process_protocol_request req case req['method'] - when 'Debugger.stepOver', 'Debugger.stepInto', 'Debugger.stepOut', 'Debugger.resume', 'Debugger.getScriptSource' + when 'Debugger.stepOver', 'Debugger.stepInto', 'Debugger.stepOut', 'Debugger.resume', 'Debugger.getScriptSource', 'Debugger.enable' @tc << [:cdp, :backtrace, req] when 'Debugger.evaluateOnCallFrame' frame_id = req.dig('params', 'callFrameId')