diff --git a/src/browser/tests/selection.html b/src/browser/tests/selection.html index 9fd614f0..be7ba464 100644 --- a/src/browser/tests/selection.html +++ b/src/browser/tests/selection.html @@ -143,7 +143,7 @@ testing.expectEqual(range2, sel.getRangeAt(0)); // Removing non-existent range does nothing - sel.removeRange(range1); + testing.expectError('NotFoundError', () => { sel.removeRange(range1); }); testing.expectEqual(1, sel.rangeCount); } diff --git a/src/browser/webapi/Selection.zig b/src/browser/webapi/Selection.zig index 36d25eb8..6bc0981b 100644 --- a/src/browser/webapi/Selection.zig +++ b/src/browser/webapi/Selection.zig @@ -99,13 +99,15 @@ pub fn addRange(self: *Selection, range: *Range, page: *Page) !void { return try self._ranges.append(page.arena, range); } -pub fn removeRange(self: *Selection, range: *Range) void { +pub fn removeRange(self: *Selection, range: *Range) !void { for (self._ranges.items, 0..) |r, i| { if (r == range) { _ = self._ranges.orderedRemove(i); return; } } + + return error.NotFound; } fn removeAllRangesInner(self: *Selection, reset_direction: bool) void { @@ -392,7 +394,7 @@ pub const JsApi = struct { pub const getRangeAt = bridge.function(Selection.getRangeAt, .{ .dom_exception = true }); pub const modify = bridge.function(Selection.modify, .{}); pub const removeAllRanges = bridge.function(Selection.removeAllRanges, .{}); - pub const removeRange = bridge.function(Selection.removeRange, .{}); + pub const removeRange = bridge.function(Selection.removeRange, .{ .dom_exception = true }); pub const selectAllChildren = bridge.function(Selection.selectAllChildren, .{}); pub const setBaseAndExtent = bridge.function(Selection.setBaseAndExtent, .{ .dom_exception = true }); pub const setPosition = bridge.function(Selection.setPosition, .{});