AK: Make String::number() infallible

This API will always succeed in creating a String representing the
provided number in base-10.
This commit is contained in:
Andreas Kling 2024-10-14 10:05:01 +02:00 committed by Andreas Kling
commit dd419b5a8d
Notes: github-actions[bot] 2024-10-14 18:49:07 +00:00
46 changed files with 77 additions and 81 deletions

View file

@ -57,7 +57,7 @@ void AudioTrack::initialize(JS::Realm& realm)
WEB_SET_PROTOTYPE_FOR_INTERFACE(AudioTrack);
auto id = s_audio_track_id_allocator.allocate();
m_id = MUST(String::number(id));
m_id = String::number(id);
}
void AudioTrack::play(Badge<HTMLAudioElement>)

View file

@ -121,10 +121,10 @@ WebIDL::ExceptionOr<Optional<Vector<XHR::FormDataEntry>>> construct_entry_list(J
auto [x, y] = input_element->selected_coordinate();
// 6. Create an entry with namex and x, and append it to entry list.
entry_list.append(XHR::FormDataEntry { .name = move(name_x), .value = MUST(String::number(x)) });
entry_list.append(XHR::FormDataEntry { .name = move(name_x), .value = String::number(x) });
// 7. Create an entry with namey and y, and append it to entry list.
entry_list.append(XHR::FormDataEntry { .name = move(name_y), .value = MUST(String::number(y)) });
entry_list.append(XHR::FormDataEntry { .name = move(name_y), .value = String::number(y) });
// 8. Continue.
continue;

View file

@ -114,7 +114,7 @@ void HTMLCanvasElement::reset_context_to_default_state()
WebIDL::ExceptionOr<void> HTMLCanvasElement::set_width(unsigned value)
{
TRY(set_attribute(HTML::AttributeNames::width, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::width, String::number(value)));
m_bitmap = nullptr;
reset_context_to_default_state();
return {};
@ -122,7 +122,7 @@ WebIDL::ExceptionOr<void> HTMLCanvasElement::set_width(unsigned value)
WebIDL::ExceptionOr<void> HTMLCanvasElement::set_height(unsigned value)
{
TRY(set_attribute(HTML::AttributeNames::height, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::height, String::number(value)));
m_bitmap = nullptr;
reset_context_to_default_state();
return {};

View file

@ -244,7 +244,7 @@ String HTMLHyperlinkElementUtils::port() const
return String {};
// 4. Return url's port, serialized.
return MUST(String::number(url->port().value()));
return String::number(url->port().value());
}
// https://html.spec.whatwg.org/multipage/links.html#dom-hyperlink-port

View file

@ -191,7 +191,7 @@ unsigned HTMLImageElement::width() const
WebIDL::ExceptionOr<void> HTMLImageElement::set_width(unsigned width)
{
return set_attribute(HTML::AttributeNames::width, MUST(String::number(width)));
return set_attribute(HTML::AttributeNames::width, String::number(width));
}
// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-height
@ -220,7 +220,7 @@ unsigned HTMLImageElement::height() const
WebIDL::ExceptionOr<void> HTMLImageElement::set_height(unsigned height)
{
return set_attribute(HTML::AttributeNames::height, MUST(String::number(height)));
return set_attribute(HTML::AttributeNames::height, String::number(height));
}
// https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-naturalwidth

View file

@ -1866,7 +1866,7 @@ unsigned HTMLInputElement::size() const
WebIDL::ExceptionOr<void> HTMLInputElement::set_size(unsigned value)
{
return set_attribute(HTML::AttributeNames::size, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::size, String::number(value));
}
// https://html.spec.whatwg.org/multipage/input.html#concept-input-value-string-number
@ -1889,11 +1889,11 @@ String HTMLInputElement::convert_number_to_string(double input) const
{
// https://html.spec.whatwg.org/multipage/input.html#number-state-(type=number):concept-input-value-number-string
if (type_state() == TypeAttributeState::Number)
return MUST(String::number(input));
return String::number(input);
// https://html.spec.whatwg.org/multipage/input.html#range-state-(type=range):concept-input-value-number-string
if (type_state() == TypeAttributeState::Range)
return MUST(String::number(input));
return String::number(input);
dbgln("HTMLInputElement::convert_number_to_string() not implemented for input type {}", type());
return {};

View file

@ -24,7 +24,7 @@ public:
i32 value() { return get_attribute(AttributeNames::value).value_or("0"_string).to_number<i32>().value_or(0); }
void set_value(i32 value)
{
set_attribute(AttributeNames::value, MUST(String::number(value))).release_value_but_fixme_should_propagate_errors();
set_attribute(AttributeNames::value, String::number(value)).release_value_but_fixme_should_propagate_errors();
}
private:

View file

@ -76,7 +76,7 @@ WebIDL::UnsignedLong HTMLMarqueeElement::scroll_amount()
// https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrollamount
WebIDL::ExceptionOr<void> HTMLMarqueeElement::set_scroll_amount(WebIDL::UnsignedLong value)
{
return set_attribute(HTML::AttributeNames::scrollamount, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::scrollamount, String::number(value));
}
// https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay
@ -93,7 +93,7 @@ WebIDL::UnsignedLong HTMLMarqueeElement::scroll_delay()
// https://html.spec.whatwg.org/multipage/obsolete.html#dom-marquee-scrolldelay
WebIDL::ExceptionOr<void> HTMLMarqueeElement::set_scroll_delay(WebIDL::UnsignedLong value)
{
return set_attribute(HTML::AttributeNames::scrolldelay, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::scrolldelay, String::number(value));
}
}

View file

@ -54,7 +54,7 @@ double HTMLMeterElement::value() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_value(double value)
{
TRY(set_attribute(HTML::AttributeNames::value, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::value, String::number(value)));
update_meter_value_element();
return {};
}
@ -72,7 +72,7 @@ double HTMLMeterElement::min() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_min(double value)
{
TRY(set_attribute(HTML::AttributeNames::min, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::min, String::number(value)));
update_meter_value_element();
return {};
}
@ -93,7 +93,7 @@ double HTMLMeterElement::max() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_max(double value)
{
TRY(set_attribute(HTML::AttributeNames::max, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::max, String::number(value)));
update_meter_value_element();
return {};
}
@ -116,7 +116,7 @@ double HTMLMeterElement::low() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_low(double value)
{
TRY(set_attribute(HTML::AttributeNames::low, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::low, String::number(value)));
update_meter_value_element();
return {};
}
@ -139,7 +139,7 @@ double HTMLMeterElement::high() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_high(double value)
{
TRY(set_attribute(HTML::AttributeNames::high, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::high, String::number(value)));
update_meter_value_element();
return {};
}
@ -162,7 +162,7 @@ double HTMLMeterElement::optimum() const
WebIDL::ExceptionOr<void> HTMLMeterElement::set_optimum(double value)
{
TRY(set_attribute(HTML::AttributeNames::optimum, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::optimum, String::number(value)));
update_meter_value_element();
return {};
}

View file

@ -24,7 +24,7 @@ public:
i32 start() { return get_attribute(AttributeNames::start).value_or("1"_string).to_number<i32>().value_or(1); }
void set_start(i32 start)
{
set_attribute(AttributeNames::start, MUST(String::number(start))).release_value_but_fixme_should_propagate_errors();
set_attribute(AttributeNames::start, String::number(start)).release_value_but_fixme_should_propagate_errors();
}
private:

View file

@ -54,7 +54,7 @@ WebIDL::ExceptionOr<void> HTMLProgressElement::set_value(double value)
if (value < 0)
value = 0;
TRY(set_attribute(HTML::AttributeNames::value, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::value, String::number(value)));
update_progress_value_element();
return {};
}
@ -75,7 +75,7 @@ WebIDL::ExceptionOr<void> HTMLProgressElement::set_max(double value)
if (value <= 0)
value = 1;
TRY(set_attribute(HTML::AttributeNames::max, MUST(String::number(value))));
TRY(set_attribute(HTML::AttributeNames::max, String::number(value)));
update_progress_value_element();
return {};
}

View file

@ -92,7 +92,7 @@ WebIDL::UnsignedLong HTMLSelectElement::size() const
WebIDL::ExceptionOr<void> HTMLSelectElement::set_size(WebIDL::UnsignedLong size)
{
return set_attribute(HTML::AttributeNames::size, MUST(String::number(size)));
return set_attribute(HTML::AttributeNames::size, String::number(size));
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-select-options

View file

@ -129,7 +129,7 @@ unsigned int HTMLTableCellElement::col_span() const
WebIDL::ExceptionOr<void> HTMLTableCellElement::set_col_span(unsigned int value)
{
return set_attribute(HTML::AttributeNames::colspan, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::colspan, String::number(value));
}
// This implements step 9 in the spec here:
@ -149,7 +149,7 @@ unsigned int HTMLTableCellElement::row_span() const
WebIDL::ExceptionOr<void> HTMLTableCellElement::set_row_span(unsigned int value)
{
return set_attribute(HTML::AttributeNames::rowspan, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::rowspan, String::number(value));
}
// https://html.spec.whatwg.org/multipage/tables.html#dom-tdth-cellindex

View file

@ -41,7 +41,7 @@ unsigned int HTMLTableColElement::span() const
WebIDL::ExceptionOr<void> HTMLTableColElement::set_span(unsigned int value)
{
return set_attribute(HTML::AttributeNames::span, MUST(String::number(value)));
return set_attribute(HTML::AttributeNames::span, String::number(value));
}
void HTMLTableColElement::apply_presentational_hints(CSS::StyleProperties& style) const

View file

@ -299,7 +299,7 @@ unsigned HTMLTextAreaElement::cols() const
WebIDL::ExceptionOr<void> HTMLTextAreaElement::set_cols(unsigned cols)
{
return set_attribute(HTML::AttributeNames::cols, MUST(String::number(cols)));
return set_attribute(HTML::AttributeNames::cols, String::number(cols));
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-textarea-rows
@ -315,7 +315,7 @@ unsigned HTMLTextAreaElement::rows() const
WebIDL::ExceptionOr<void> HTMLTextAreaElement::set_rows(unsigned rows)
{
return set_attribute(HTML::AttributeNames::rows, MUST(String::number(rows)));
return set_attribute(HTML::AttributeNames::rows, String::number(rows));
}
WebIDL::UnsignedLong HTMLTextAreaElement::selection_start_binding() const

View file

@ -251,8 +251,6 @@ WebIDL::ExceptionOr<void> Location::set_hostname(String const&)
// https://html.spec.whatwg.org/multipage/history.html#dom-location-port
WebIDL::ExceptionOr<String> Location::port() const
{
auto& vm = this->vm();
// 1. If this's relevant Document is non-null and its origin is not same origin-domain with the entry settings object's origin, then throw a "SecurityError" DOMException.
auto const relevant_document = this->relevant_document();
if (relevant_document && !relevant_document->origin().is_same_origin_domain(entry_settings_object().origin()))
@ -265,7 +263,7 @@ WebIDL::ExceptionOr<String> Location::port() const
return String {};
// 3. Return this's url's port, serialized.
return TRY_OR_THROW_OOM(vm, String::number(*url.port()));
return String::number(*url.port());
}
WebIDL::ExceptionOr<void> Location::set_port(String const&)

View file

@ -167,7 +167,7 @@ JS::GCPtr<Navigable> Navigable::navigable_with_active_document(JS::NonnullGCPtr<
ErrorOr<void> Navigable::initialize_navigable(JS::NonnullGCPtr<DocumentState> document_state, JS::GCPtr<Navigable> parent)
{
static int next_id = 0;
m_id = TRY(String::number(next_id++));
m_id = String::number(next_id++);
// 1. Assert: documentState's document is non-null.
VERIFY(document_state->document());

View file

@ -129,7 +129,7 @@ WebIDL::ExceptionOr<String> convert_non_negative_integer_to_string(JS::Realm& re
{
if (value < 0)
return WebIDL::IndexSizeError::create(realm, "The attribute is limited to only non-negative numbers"_string);
return MUST(String::number(value));
return String::number(value);
}
}

View file

@ -60,7 +60,7 @@ void WindowEnvironmentSettingsObject::setup(Page& page, URL::URL const& creation
// settings object's target browsing context to null,
// and settings object's active service worker to null.
static i64 next_id = 1;
settings_object->id = MUST(String::number(next_id++));
settings_object->id = String::number(next_id++);
settings_object->target_browsing_context = nullptr;
}

View file

@ -78,7 +78,7 @@ void VideoTrack::initialize(JS::Realm& realm)
WEB_SET_PROTOTYPE_FOR_INTERFACE(VideoTrack);
auto id = s_video_track_id_allocator.allocate();
m_id = MUST(String::number(id));
m_id = String::number(id);
}
void VideoTrack::visit_edges(Cell::Visitor& visitor)

View file

@ -78,8 +78,6 @@ WebIDL::ExceptionOr<String> WorkerLocation::hostname() const
// https://html.spec.whatwg.org/multipage/workers.html#dom-workerlocation-port
WebIDL::ExceptionOr<String> WorkerLocation::port() const
{
auto& vm = realm().vm();
// The port getter steps are:
// 1. Let port be this's WorkerGlobalScope object's url's port.
auto const& port = m_global_scope->url().port();
@ -88,7 +86,7 @@ WebIDL::ExceptionOr<String> WorkerLocation::port() const
if (!port.has_value())
return String {};
// 3. Return port, serialized.
return TRY_OR_THROW_OOM(vm, String::number(port.value()));
return String::number(port.value());
}
// https://html.spec.whatwg.org/multipage/workers.html#dom-workerlocation-pathname