1. 27 Apr, 2020 1 commit
  2. 25 Mar, 2020 1 commit
  3. 03 Feb, 2020 1 commit
    • Sigurd Schneider's avatar
      [debugger] Allow termination-on-resume when paused at a breakpoint · 9e52d5c5
      Sigurd Schneider authored
      This CL implements functionality to allow an embedder to mark a
      debug scope as terminate-on-resume. This results in a termination
      exception when that debug scope is left and execution is resumed.
      Execution of JavaScript remains possible after a debug scope is
      marked as terminate-on-resume (but before execution of the paused
      code resumes).
      This is used by blink to correctly prevent resuming JavaScript
      execution upon reload while being paused at a breakpoint.
      
      This is important for handling reloads while paused at a breakpoint
      in blink. The resume command terminates blink's nested message loop
      that is used while to keep the frame responsive while the debugger
      is paused. But if a reload is triggered while execution is paused
      on a breakpoint, but before execution is actually resumed from the
       breakpoint (that means before returning into the V8 JavaScript
      frames that are paused on the stack below the C++ frames that belong
      to the nested message loop), we re-enter V8 to do tear-down actions
      of the old frame. In this case Runtime.terminateExecution() cannot be
      used before Debugger.resume(), because the tear-down actions that
      re-enter V8 would trigger the termination exception and crash the
      browser (because the browser expected the tear-down to succeed).
      
      Hence we introduce this flag on V8 that says: It is OK if someone
      re-enters V8 (to execute JS), but upon resuming from the breakpoint
      (i.e. returning to the paused frames that are on the stack below),
      generate a termination exception.
      
      We deliberated adding a corresponding logic on the blink side (instead
      of V8) but we think this is the simplest solution.
      
      More details in the design doc:
      
      https://docs.google.com/document/d/1aO9v0YhoKNqKleqfACGUpwrBUayLFGqktz9ltdgKHMk
      
      Bug: chromium:1004038, chromium:1014415
      
      Change-Id: I896692d4c21cb0acae89c1d783d37ce45b73c113
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924366
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#66084}
      9e52d5c5
  4. 20 Jan, 2020 1 commit
    • Sigurd Schneider's avatar
      [coverage] Add event for coverage reporting · ee8602d3
      Sigurd Schneider authored
      This CL adds a new event that enables the back-end to send coverage
      updates on its own initiative. This event can be triggered via the C++
      method `triggerPreciseCoverageDeltaUpdate` on the agent in a way that
      causes coverage data to be immediatelly collected.
      
      This is useful in the back-end to collect coverage at a certain point
      in time, i.e. when a lifecycle event such as first contentful paint
      occurs.
      
      The previous interface could not support this, because it could not
      reasonably be triggered from C++, and if triggered through the protocol,
      dispatching messages added delay that invalidated the data (i.e. data
      might have been taken too late to be accurate).
      
      TBR=yangguo@chromium.org
      
      Change-Id: I0f7201412a8d64866e6e314e5bc850354c13a9da
      Bug: chromium:1022031
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1992437
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65864}
      ee8602d3
  5. 05 Nov, 2019 1 commit
  6. 20 Sep, 2019 1 commit
  7. 16 Sep, 2019 1 commit
  8. 12 Sep, 2019 1 commit
  9. 26 Jun, 2019 1 commit
  10. 11 Jun, 2019 1 commit
  11. 15 May, 2019 1 commit
  12. 13 May, 2019 1 commit
  13. 03 May, 2019 1 commit
    • Johannes Henkel's avatar
      [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR). · 9d7c1947
      Johannes Henkel authored
      Keep the existing method for compatibility, by converting
      to json from CBOR using the inspector_protocol_encoding library,
      via a v8 specific interface library that directs routines for
      converting between strings and doubles to v8's implementations.
      
      This change also brings in the encoding.h / encoding.cc files from the
      upstream inspector_protocol project. The only modification here
      are the header guards, and the namespace. I will fix roll.py to
      make it so that we pick up future changes.
      
      third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      third_party/inspector_protocol/.clang-format is a copy of the upstream
      file. If we don't put this, we'll find ourselves auto-formatting the roll,
      which is annoying.
      
      This is a reland of
      https://chromium-review.googlesource.com/c/v8/v8/+/1590627 with the
      only modification in the DEPS file; this time I'm including
      third_party/inspector_protocol/encoding/encoding{.h,cc} in addition to
      the relative include there. Not sure why this is needed but I'm hoping
      it gets me past the presubmit which may resolve the include path
      relative to the V8 base (the ../../third_party is needed for when V8 is
      embedded into Chromium).
      
      Change-Id: Ic76b2b5faa7e1cbdceb15aff3f369e9a303e3e85
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593646Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61214}
      9d7c1947
  14. 02 May, 2019 2 commits
    • Johannes Henkel's avatar
      Revert "[DevTools] Add V8InspectorSession::state(), which returns binary (CBOR)." · c27c369a
      Johannes Henkel authored
      This reverts commit b7134d3a.
      
      Reason for revert: breaks presubmit
      
      Original change's description:
      > [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR).
      > 
      > Keep the existing method for compatibility, by converting
      > to json from CBOR using the inspector_protocol_encoding library,
      > via a v8 specific interface library that directs routines for
      > converting between strings and doubles to v8's implementations.
      > 
      > This change also brings in the encoding.h / encoding.cc files from the
      > upstream inspector_protocol project. The only modification here
      > are the header guards, and the namespace. I will fix roll.py to
      > make it so that we pick up future changes.
      > 
      > third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      > third_party/inspector_protocol/.clang-format is a copy of the upstream
      > file. If we don't put this, we'll find ourselves auto-formatting the roll,
      > which is annoying.
      > 
      > Change-Id: I20fa8759164e7a39f8a7c30e0d2a3f8a7e4be227
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1590627
      > Reviewed-by: Alexei Filippov <alph@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Commit-Queue: Johannes Henkel <johannes@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#61187}
      
      TBR=dgozman@chromium.org,alph@chromium.org,caseq@chromium.org,johannes@chromium.org
      
      Change-Id: I67f297ef8454499036c94bf88e0d23657a579140
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1592130Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61189}
      c27c369a
    • Johannes Henkel's avatar
      [DevTools] Add V8InspectorSession::state(), which returns binary (CBOR). · b7134d3a
      Johannes Henkel authored
      Keep the existing method for compatibility, by converting
      to json from CBOR using the inspector_protocol_encoding library,
      via a v8 specific interface library that directs routines for
      converting between strings and doubles to v8's implementations.
      
      This change also brings in the encoding.h / encoding.cc files from the
      upstream inspector_protocol project. The only modification here
      are the header guards, and the namespace. I will fix roll.py to
      make it so that we pick up future changes.
      
      third_party/inspector_protocol/BUILD.gn is specific to v8, by necessity.
      third_party/inspector_protocol/.clang-format is a copy of the upstream
      file. If we don't put this, we'll find ourselves auto-formatting the roll,
      which is annoying.
      
      Change-Id: I20fa8759164e7a39f8a7c30e0d2a3f8a7e4be227
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1590627Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Johannes Henkel <johannes@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61187}
      b7134d3a
  15. 18 Jan, 2019 1 commit
    • Andrey Lushnikov's avatar
      Revert "inspector: teach v8Inspector to return default context" · 8665bac1
      Andrey Lushnikov authored
      This reverts commit 22cb8d45.
      
      Reason for revert: it is fundamentally wrong to fetch default
      frame context using contextGroupId: contextGroupId is per page rather
      then per frame.
      
      Original change's description:
      > inspector: teach v8Inspector to return default context
      >
      > This is a follow-up to https://chromium-review.googlesource.com/c/v8/v8/+/1173718
      >
      > R=​kozy, pfeldman
      > TBR=pfeldman
      >
      > Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      > Change-Id: I48b4ca5589505d03773477623654fa54703f0714
      > Reviewed-on: https://chromium-review.googlesource.com/1175061
      > Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#55133}
      
      TBR=lushnikov@chromium.org,pfeldman@chromium.org,kozyatinskiy@chromium.org
      NOTRY=true
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Change-Id: Ide4246bfe75ccc8a4fb1f0c5dbc44ae4236cac5c
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/1419082
      Commit-Queue: Andrey Lushnikov <lushnikov@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58906}
      8665bac1
  16. 18 Sep, 2018 1 commit
  17. 14 Aug, 2018 2 commits
  18. 09 Aug, 2018 1 commit
    • Alexey Kozyatinskiy's avatar
      [inspector] added V8InspectorClient::resourceNameToUrl · dbfcc487
      Alexey Kozyatinskiy authored
      Some clients (see Node.js) use platform path as ScriptOrigin.
      Reporting platform path in protocol makes using protocol much harder.
      This CL introduced V8InspectorClient::resourceNameToUrl method that
      is called for any reported using protocol url.
      V8Inspector uses url internally as well so protocol client may generate
      pattern for blackboxing with file urls only and does not need to build
      complicated regexp that covers files urls and platform paths on
      different platforms.
      
      R=lushnikov@chromium.org
      TBR=yangguo@chromium.org
      
      Bug: none
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Change-Id: Iff302e7441df922fa5d689fe510f5a9bfd470b9b
      Reviewed-on: https://chromium-review.googlesource.com/1164624
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#55029}
      dbfcc487
  19. 07 May, 2018 1 commit
  20. 20 Dec, 2017 1 commit
  21. 12 Dec, 2017 1 commit
  22. 22 Nov, 2017 3 commits
    • Alexey Kozyatinskiy's avatar
      Reland [inspector] introduced stackTraceId and externalAsyncTask API · 885a5669
      Alexey Kozyatinskiy authored
      Sometimes we need to capture stack trace on one debugger and use it
      later as a parent stack on another debugger (e.g. worker.postMessage).
      
      This CL includes following addition to our protocol and v8-inspector.h:
        - added Runtime.StackTraceId, this id represents stack trace captured
          on debugger with given id,
        - protocol client can fetch Runtime.StackTrace by
          Runtime.StacKTraceId using Debugger.getStackTrace method,
        - externalParent field is added to Debugger.paused event, it may
          contain external parent stack trace,
        - V8Inspector::storeCurrentStackTrace captures current stack trace
          and returns V8StackTraceId for embedder this id can be used as
          argument for V8Inspector::externalAsyncTaskStarted and
          V8Inspector::externalAsyncTaskFinished method. Any async stack
          trace captured between these calls will get passed external stack
          trace as external parent. These methods are designed to be called
          on different debuggers. If async task is scheduled and started on
          one debugger user should continue to use asyncTask* API,
        - Debugger.enable methods returns unique debuggerId.
      
      TBR=dgozman@chromium.org,jgruber@chromium.org
      
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I2c1a2b2e30ed69ccb61d10f08686f4edb09f50e4
      Reviewed-on: https://chromium-review.googlesource.com/786274
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49591}
      885a5669
    • Clemens Hammacher's avatar
      Revert "[inspector] introduced stackTraceId and externalAsyncTask API" · 4379533c
      Clemens Hammacher authored
      This reverts commit 3a41b697.
      
      Reason for revert: Break msvc: https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/250
      
      Original change's description:
      > [inspector] introduced stackTraceId and externalAsyncTask API
      > 
      > Sometimes we need to capture stack trace on one debugger and use it
      > later as a parent stack on another debugger (e.g. worker.postMessage).
      > 
      > This CL includes following addition to our protocol and v8-inspector.h:
      >   - added Runtime.StackTraceId, this id represents stack trace captured
      >     on debugger with given id,
      >   - protocol client can fetch Runtime.StackTrace by
      >     Runtime.StacKTraceId using Debugger.getStackTrace method,
      >   - externalParent field is added to Debugger.paused event, it may
      >     contain external parent stack trace,
      >   - V8Inspector::storeCurrentStackTrace captures current stack trace
      >     and returns V8StackTraceId for embedder this id can be used as
      >     argument for V8Inspector::externalAsyncTaskStarted and
      >     V8Inspector::externalAsyncTaskFinished method. Any async stack
      >     trace captured between these calls will get passed external stack
      >     trace as external parent. These methods are designed to be called
      >     on different debuggers. If async task is scheduled and started on
      >     one debugger user should continue to use asyncTask* API,
      >   - Debugger.enable methods returns unique debuggerId.
      > 
      > Bug: chromium:778796
      > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      > Change-Id: I16aba0d04bfcea90f3e187e635a0588c92354539
      > Reviewed-on: https://chromium-review.googlesource.com/754183
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#49582}
      
      TBR=dgozman@chromium.org,pfeldman@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,jgruber@chromium.org
      
      Change-Id: I9b52354fa0841e5148596cf594317f2e5fe508ea
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/786152Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49584}
      4379533c
    • Alexey Kozyatinskiy's avatar
      [inspector] introduced stackTraceId and externalAsyncTask API · 3a41b697
      Alexey Kozyatinskiy authored
      Sometimes we need to capture stack trace on one debugger and use it
      later as a parent stack on another debugger (e.g. worker.postMessage).
      
      This CL includes following addition to our protocol and v8-inspector.h:
        - added Runtime.StackTraceId, this id represents stack trace captured
          on debugger with given id,
        - protocol client can fetch Runtime.StackTrace by
          Runtime.StacKTraceId using Debugger.getStackTrace method,
        - externalParent field is added to Debugger.paused event, it may
          contain external parent stack trace,
        - V8Inspector::storeCurrentStackTrace captures current stack trace
          and returns V8StackTraceId for embedder this id can be used as
          argument for V8Inspector::externalAsyncTaskStarted and
          V8Inspector::externalAsyncTaskFinished method. Any async stack
          trace captured between these calls will get passed external stack
          trace as external parent. These methods are designed to be called
          on different debuggers. If async task is scheduled and started on
          one debugger user should continue to use asyncTask* API,
        - Debugger.enable methods returns unique debuggerId.
      
      Bug: chromium:778796
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I16aba0d04bfcea90f3e187e635a0588c92354539
      Reviewed-on: https://chromium-review.googlesource.com/754183Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarDmitry Gozman <dgozman@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49582}
      3a41b697
  23. 18 Oct, 2017 1 commit
  24. 27 Mar, 2017 1 commit
  25. 11 Feb, 2017 1 commit
  26. 27 Jan, 2017 1 commit
  27. 25 Jan, 2017 1 commit
  28. 29 Nov, 2016 1 commit
  29. 23 Nov, 2016 1 commit
  30. 22 Sep, 2016 1 commit
  31. 15 Sep, 2016 1 commit
  32. 14 Sep, 2016 1 commit
  33. 06 Sep, 2016 1 commit