mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-28 22:53:28 +00:00
Merge pull request #1118 from lightpanda-io/inspector_linking
Some checks failed
e2e-test / zig build release (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Some checks failed
e2e-test / zig build release (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Make sure inspector implementation is always exported
This commit is contained in:
@@ -111,35 +111,7 @@ const NoopInspector = struct {
|
|||||||
pub fn onInspectorEvent(_: *anyopaque, _: []const u8) void {}
|
pub fn onInspectorEvent(_: *anyopaque, _: []const u8) void {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// This is called from V8. Whenever the v8 inspector has to describe a value
|
pub fn getTaggedAnyOpaque(value: v8.Value) ?*js.TaggedAnyOpaque {
|
||||||
// it'll call this function to gets its [optional] subtype - which, from V8's
|
|
||||||
// point of view, is an arbitrary string.
|
|
||||||
pub export fn v8_inspector__Client__IMPL__valueSubtype(
|
|
||||||
_: *v8.c.InspectorClientImpl,
|
|
||||||
c_value: *const v8.C_Value,
|
|
||||||
) callconv(.c) [*c]const u8 {
|
|
||||||
const external_entry = getTaggedAnyOpaque(.{ .handle = c_value }) orelse return null;
|
|
||||||
return if (external_entry.subtype) |st| @tagName(st) else null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Same as valueSubType above, but for the optional description field.
|
|
||||||
// From what I can tell, some drivers _need_ the description field to be
|
|
||||||
// present, even if it's empty. So if we have a subType for the value, we'll
|
|
||||||
// put an empty description.
|
|
||||||
pub export fn v8_inspector__Client__IMPL__descriptionForValueSubtype(
|
|
||||||
_: *v8.c.InspectorClientImpl,
|
|
||||||
v8_context: *const v8.C_Context,
|
|
||||||
c_value: *const v8.C_Value,
|
|
||||||
) callconv(.c) [*c]const u8 {
|
|
||||||
_ = v8_context;
|
|
||||||
|
|
||||||
// We _must_ include a non-null description in order for the subtype value
|
|
||||||
// to be included. Besides that, I don't know if the value has any meaning
|
|
||||||
const external_entry = getTaggedAnyOpaque(.{ .handle = c_value }) orelse return null;
|
|
||||||
return if (external_entry.subtype == null) null else "";
|
|
||||||
}
|
|
||||||
|
|
||||||
fn getTaggedAnyOpaque(value: v8.Value) ?*js.TaggedAnyOpaque {
|
|
||||||
if (value.isObject() == false) {
|
if (value.isObject() == false) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -562,3 +562,34 @@ fn debugValueToString(arena: Allocator, js_obj: v8.Object, isolate: v8.Isolate,
|
|||||||
}
|
}
|
||||||
return arr.items;
|
return arr.items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// These are here, and not in Inspector.zig, because Inspector.zig isn't always
|
||||||
|
// included (e.g. in the wpt build).
|
||||||
|
|
||||||
|
// This is called from V8. Whenever the v8 inspector has to describe a value
|
||||||
|
// it'll call this function to gets its [optional] subtype - which, from V8's
|
||||||
|
// point of view, is an arbitrary string.
|
||||||
|
pub export fn v8_inspector__Client__IMPL__valueSubtype(
|
||||||
|
_: *v8.c.InspectorClientImpl,
|
||||||
|
c_value: *const v8.C_Value,
|
||||||
|
) callconv(.c) [*c]const u8 {
|
||||||
|
const external_entry = Inspector.getTaggedAnyOpaque(.{ .handle = c_value }) orelse return null;
|
||||||
|
return if (external_entry.subtype) |st| @tagName(st) else null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Same as valueSubType above, but for the optional description field.
|
||||||
|
// From what I can tell, some drivers _need_ the description field to be
|
||||||
|
// present, even if it's empty. So if we have a subType for the value, we'll
|
||||||
|
// put an empty description.
|
||||||
|
pub export fn v8_inspector__Client__IMPL__descriptionForValueSubtype(
|
||||||
|
_: *v8.c.InspectorClientImpl,
|
||||||
|
v8_context: *const v8.C_Context,
|
||||||
|
c_value: *const v8.C_Value,
|
||||||
|
) callconv(.c) [*c]const u8 {
|
||||||
|
_ = v8_context;
|
||||||
|
|
||||||
|
// We _must_ include a non-null description in order for the subtype value
|
||||||
|
// to be included. Besides that, I don't know if the value has any meaning
|
||||||
|
const external_entry = Inspector.getTaggedAnyOpaque(.{ .handle = c_value }) orelse return null;
|
||||||
|
return if (external_entry.subtype == null) null else "";
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user