瀏覽代碼

LibWeb+Base: Use AK::SourceGenerator for error pages

Instead of storing a format string in a file, let's be reasonable
and use SourceGenerator's template functionality. :^)
Andreas Kling 4 年之前
父節點
當前提交
3857148
共有 2 個文件被更改,包括 9 次插入9 次删除
  1. 2 2
      Base/res/html/error.html
  2. 7 7
      Userland/Libraries/LibWeb/Loader/FrameLoader.cpp

+ 2 - 2
Base/res/html/error.html

@@ -14,8 +14,8 @@
     <body>
         <header>
             <img src="file:///res/icons/32x32/msgbox-warning.png" alt="Warning" width="24" height="24">
-            <h1>Failed to load {}</h1>
+            <h1>Failed to load @failed_url@</h1>
         </header>
-        <p>Error: {}</p>
+        <p>Error: @error@</p>
     </body>
 </html>

+ 7 - 7
Userland/Libraries/LibWeb/Loader/FrameLoader.cpp

@@ -26,6 +26,7 @@
 
 #include <AK/Debug.h>
 #include <AK/LexicalPath.h>
+#include <AK/SourceGenerator.h>
 #include <LibGemini/Document.h>
 #include <LibGfx/ImageDecoder.h>
 #include <LibMarkdown/Document.h>
@@ -226,13 +227,12 @@ void FrameLoader::load_error_page(const URL& failed_url, const String& error)
         error_page_url,
         [this, failed_url, error](auto data, auto&, auto) {
             VERIFY(!data.is_null());
-#pragma GCC diagnostic ignored "-Wformat-nonliteral"
-            auto html = String::formatted(
-                data,
-                escape_html_entities(failed_url.to_string()),
-                escape_html_entities(error));
-#pragma GCC diagnostic pop
-            auto document = HTML::parse_html_document(html, failed_url, "utf-8");
+            StringBuilder builder;
+            SourceGenerator generator { builder };
+            generator.set("failed_url", failed_url.to_string());
+            generator.set("error", error);
+            generator.append(data);
+            auto document = HTML::parse_html_document(generator.as_string_view(), failed_url, "utf-8");
             VERIFY(document);
             frame().set_document(document);
         },