Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 'master' into 'jsdbg_gdb_support' #46

Merged
merged 138 commits into from
Apr 25, 2019

Conversation

cbiesinger
Copy link
Collaborator

The only thing I did not do was add JsDbg.Gdb to jsdg.sln; the Visual Studio UI does not let me do it
("Expected references are missing") and I did not want to risk manually editing the file. This should
be fine as you can just use "dotnet build" to build this project.

sanketj and others added 30 commits October 4, 2018 17:59
… WTF Strings

Add whitespace formatting functionality for WTF Strings. This was inadvertently removed from one of the last commits of the DOMTree extension.
…ta data type description

Moving whitespace formatting behavior out of the lowest level WTFStringImpl Text type description and into the CharacterData data type description. Because the whitespace formatting functionality wraps the text in a span, adding this call at the lowest level creates problems for higher-level type descriptions that do not expect the span to be present.
Fix dbgobject documentation link
Extended fields being added:
    - Range startContainer
    - Range endContainer
    - Document DOMSelection
    - ShadowRoot DOMSelection
    - DOMSelection FrameSelection
    - Document body

Type descriptions being added:
    - Range startOffset
    - Range endOffset
This change adds error messages for debugger errors to AXTree and DOMTree. To share the message structure and strings detailing common problems, a "error-messages" extension is being created. This extension is not only consumed by Chromium's AXTree and DOMTree extensions, but also by Edgehtml's BoxTree extension.

As an additional refactoring change, the blink extension is being moved under the chromium extension, so that all chromium-related extensions are under one umbrella.
In non-component builds of Chromium, the same type is occasionally declared in multiple modules. To handle this, the concept of a synthetic module name is being introduced. A synthetic module name is a "fake" name that represents one or more real module names. If a type is created using a synthetic module name, when that type is queried, every real module with that synthetic name will be tried until the type is successfully found. Symmetrically, when a real module name is returned from the server, it will be converted to its synthetic name (if it has one) before being consumed by higher-level extensions. This allows extended fields/array fields/type descriptions to be written once and work across multiple modules.

To prevent excessive wrong module lookups, the collection of real module names for every synthetic name will be sorted such that the last successfully looked-up module will be the first one accessed during the next lookup. This heuristic works because it is highly likely that next lookup will be for a type in the same module.
…TMLCollections and NodeLists

Extended fields being added:
 - Node childNodes
 - ContainerNode children
 - Document all
 - Document images
 - Document applets
 - Document embeds
 - Document links
 - Document forms
 - Document anchors
 - HTMLDataListElement options
 - HTMLFormElement elements
 - HTMLMapElement areas
 - HTMLSelectElement options
 - HTMLSelectElement selectedOptions
 - HTMLTableElement rows
 - HTMLTableElement tBodies
 - HTMLTableRowElement cells
 - HTMLTableSectionElement rows
 - Node rare_data_
 - NodeRareData element_rare_data_
 - ContainerNode child_nodes_ (renamed from "Child Nodes")

Type descriptions being added:
 - WTF::KeyValuePair Pair

Array fields being added:
 - WTF::HashTable Pairs
While adding support for target-specific extensions, the "debugger is not broken in" indicator was broken. This happened because the serving of extensions now needs to talk to the debugger to check if a given module is loaded or not. However, if the debugger is busy, JsDbg will wait infinitely for the debugger to break in before continuing to serve extensions.

To fix this, a new API called "IsDebuggerBusy" is being added to server. This API will query WinDbg or the VS debugger to check if it is broken in or not, and is now called while serving extensions. If the debugger isn't broken in, the module loaded check will be skipped and the target-specific extension will be served unconditionally. (This is okay because the user will not be able to use the extension while the debugger is running anyways.)
Annotate added fields in BlinkHelpers and WTFHelpers with UserEditableFunctions.Create so that users can see/edit the implementations.
Enable Chromium extensions to work with content_shell
… developers contribute to JsDbg

Adding a template for tree-inspector based extensions. Also adding an extension that includes example videos for creating a new JsDbg extension and adding fields.
cbiesinger and others added 18 commits April 18, 2019 13:44
…tree_global_fix_rebase

Fixing AXTree code to refer to new AXTreeManager instance
Otherwise, templates won't display correctly
This change implements a visualizer for compositorframe. Break into CompositorFrameSinkImpl::SubmitCompositorFrameInternal
and then pass the address of &frame in the extension to see the contents of the frame.

on retail builds break into CompositorFrameSinkStubDispatch::Accept and pass
&p_frame as the address to the extension.

Also included are some visualizers for gfx::Rect,gfx::Size and gfx::Transform
To more easily go to the pointed object instead of requiring
two steps. Modeled after the std::unique_ptr extended field.
This effectively manually cherry-picks commit a0bfeb6
from the jsdbg_gdb_support branch for easier merging.
This is basically a manual cherry-pick of commit 7799d05
from the jsdbg_gdb_support branch.
Manual cherry-pick of commit bd3d966
from the jsdbg_gdb_support branch.
This cherry-picks the logging-related parts of commits
7799d05 and
160a705 from the
jsdbg_gdb_support branch.

Writing to Error helps with gdb because Out is used for
communication between the server and gdb.
@sanketj sanketj merged commit 706df45 into MicrosoftEdge:jsdbg_gdb_support Apr 25, 2019
@cbiesinger cbiesinger deleted the gdb-merge branch April 25, 2019 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants