1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 23:37:36 +00:00

LibWeb: Change Document's m_encoding to Optional<String>

This modifies the Document class to use Optional<String> for the
encoding. If the encoding is unknown, the Optional will not have a
value. It also implements the has_encoding() and encoding_or_default()
instance methods, the latter of which will return "UTF-8" as a fallback
if no encoding is present.

The usage of Optional<String> instead of the null string is part of an
effort to explicitly indicate that a string could not have a value.

This also modifies the former callers of encoding() to use
encoding_or_default(). Furthermore, the encoding will now only be set if
it is actually known, rather than just guessed by earlier code.
This commit is contained in:
Max Wipfli 2021-05-12 10:32:41 +02:00 committed by Andreas Kling
parent a7681dbeea
commit 67a9ebc817
2 changed files with 11 additions and 9 deletions

View file

@ -237,13 +237,15 @@ public:
const String& content_type() const { return m_content_type; }
void set_content_type(const String& content_type) { m_content_type = content_type; }
const String& encoding() const { return m_encoding; }
void set_encoding(const String& encoding) { m_encoding = encoding; }
bool has_encoding() const { return m_encoding.has_value(); }
const Optional<String>& encoding() const { return m_encoding; }
String encoding_or_default() const { return m_encoding.value_or("UTF-8"); }
void set_encoding(const Optional<String>& encoding) { m_encoding = encoding; }
// NOTE: These are intended for the JS bindings
const String& character_set() const { return encoding(); }
const String& charset() const { return encoding(); }
const String& input_encoding() const { return encoding(); }
String character_set() const { return encoding_or_default(); }
String charset() const { return encoding_or_default(); }
String input_encoding() const { return encoding_or_default(); }
bool ready_for_post_load_tasks() const { return m_ready_for_post_load_tasks; }
void set_ready_for_post_load_tasks(bool ready) { m_ready_for_post_load_tasks = ready; }
@ -327,7 +329,7 @@ private:
String m_ready_state { "loading" };
String m_content_type { "application/xml" };
String m_encoding { "UTF-8" };
Optional<String> m_encoding;
bool m_ready_for_post_load_tasks { false };