mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:27:44 +00:00
LibWeb: Change Resource's m_encoding to Optional<String>
This modifies the Resource class to use Optional<String> for the encoding. If the encoding is unknown, the Optional will not have a value (instead of using the null state of the String class). It also implements a has_encoding() instance method and modifies the callers of Resource::encoding() to use the new API.
This commit is contained in:
parent
ce6d6706a6
commit
a7681dbeea
3 changed files with 11 additions and 7 deletions
|
@ -248,11 +248,15 @@ void FrameLoader::resource_did_load()
|
|||
}
|
||||
m_redirects_count = 0;
|
||||
|
||||
dbgln("I believe this content has MIME type '{}', encoding '{}'", resource()->mime_type(), resource()->encoding());
|
||||
if (resource()->has_encoding()) {
|
||||
dbgln("This content has MIME type '{}', encoding '{}'", resource()->mime_type(), resource()->encoding().value());
|
||||
} else {
|
||||
dbgln("This content has MIME type '{}', encoding unknown (defaulting to 'utf-8')", resource()->mime_type());
|
||||
}
|
||||
|
||||
auto document = DOM::Document::create();
|
||||
document->set_url(url);
|
||||
document->set_encoding(resource()->encoding());
|
||||
document->set_encoding(resource()->encoding().value_or("utf-8"));
|
||||
document->set_content_type(resource()->mime_type());
|
||||
|
||||
frame().set_document(document);
|
||||
|
|
|
@ -85,14 +85,12 @@ void Resource::did_load(Badge<ResourceLoader>, ReadonlyBytes data, const HashMap
|
|||
m_mime_type = Core::guess_mime_type_based_on_filename(url().path());
|
||||
}
|
||||
|
||||
m_encoding = {};
|
||||
if (content_type.has_value()) {
|
||||
auto encoding = encoding_from_content_type(content_type.value());
|
||||
if (encoding.has_value()) {
|
||||
dbgln_if(RESOURCE_DEBUG, "Set encoding '{}' from Content-Type", encoding.has_value());
|
||||
m_encoding = encoding.value();
|
||||
} else {
|
||||
// FIXME: This doesn't seem nice.
|
||||
m_encoding = "utf-8";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,8 @@ public:
|
|||
void register_client(Badge<ResourceClient>, ResourceClient&);
|
||||
void unregister_client(Badge<ResourceClient>, ResourceClient&);
|
||||
|
||||
const String& encoding() const { return m_encoding; }
|
||||
bool has_encoding() const { return m_encoding.has_value(); }
|
||||
const Optional<String>& encoding() const { return m_encoding; }
|
||||
const String& mime_type() const { return m_mime_type; }
|
||||
|
||||
void for_each_client(Function<void(ResourceClient&)>);
|
||||
|
@ -70,7 +71,8 @@ private:
|
|||
bool m_loaded { false };
|
||||
bool m_failed { false };
|
||||
String m_error;
|
||||
String m_encoding;
|
||||
Optional<String> m_encoding;
|
||||
|
||||
String m_mime_type;
|
||||
HashMap<String, String, CaseInsensitiveStringTraits> m_response_headers;
|
||||
Optional<u32> m_status_code;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue