소스 검색

LibWeb+Browser: Support about: URL protocol so "about:blank" works :^)

For now, we simply load an empty resource from any about: URL.
Andreas Kling 5 년 전
부모
커밋
fe0de26277
3개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 1
      Applications/Browser/Tab.cpp
  2. 1 1
      Libraries/LibWeb/HtmlView.cpp
  3. 8 0
      Libraries/LibWeb/ResourceLoader.cpp

+ 1 - 1
Applications/Browser/Tab.cpp

@@ -100,7 +100,7 @@ Tab::Tab()
 
     m_location_box->on_return_pressed = [this] {
         String location = m_location_box->text();
-        if (!location.starts_with("file://") && !location.starts_with("http://") && !location.starts_with("https://")) {
+        if (!URL(location).is_valid()) {
             StringBuilder builder;
             builder.append("http://");
             builder.append(location);

+ 1 - 1
Libraries/LibWeb/HtmlView.cpp

@@ -413,7 +413,7 @@ void HtmlView::load(const URL& url)
             load_error_page(url, error);
         });
 
-    if (url.protocol() != "file") {
+    if (url.protocol() != "file" && url.protocol() != "about") {
         URL favicon_url;
         favicon_url.set_protocol(url.protocol());
         favicon_url.set_host(url.host());

+ 8 - 0
Libraries/LibWeb/ResourceLoader.cpp

@@ -73,6 +73,14 @@ void ResourceLoader::load(const URL& url, Function<void(const ByteBuffer&, const
         return;
     }
 
+    if (url.protocol() == "about") {
+        dbg() << "Loading about: URL " << url;
+        deferred_invoke([success_callback = move(success_callback)](auto&) {
+            success_callback(ByteBuffer::wrap(String::empty().characters(), 1), {});
+        });
+        return;
+    }
+
     if (url.protocol() == "data") {
         dbg() << "ResourceLoader loading a data URL with mime-type: '" << url.data_mime_type() << "', base64=" << url.data_payload_is_base64() << ", payload='" << url.data_payload() << "'";