Просмотр исходного кода

applets/web: Implement the default web browser applet frontend

Morph 5 лет назад
Родитель
Сommit
d6d1a8e02c

+ 8 - 0
src/core/frontend/applets/web_browser.cpp

@@ -11,4 +11,12 @@ WebBrowserApplet::~WebBrowserApplet() = default;
 
 DefaultWebBrowserApplet::~DefaultWebBrowserApplet() = default;
 
+void DefaultWebBrowserApplet::OpenLocalWebPage(
+    std::string_view local_url, std::function<void(WebExitReason, std::string)> callback) const {
+    LOG_WARNING(Service_AM, "(STUBBED) called, backend requested to open local web page at {}",
+                local_url);
+
+    callback(WebExitReason::WindowClosed, "http://localhost/");
+}
+
 } // namespace Core::Frontend

+ 12 - 0
src/core/frontend/applets/web_browser.h

@@ -5,17 +5,29 @@
 #pragma once
 
 #include <functional>
+#include <string_view>
+
+#include "core/hle/service/am/applets/web_types.h"
+
+using namespace Service::AM::Applets;
 
 namespace Core::Frontend {
 
 class WebBrowserApplet {
 public:
     virtual ~WebBrowserApplet();
+
+    virtual void OpenLocalWebPage(
+        std::string_view local_url,
+        std::function<void(WebExitReason, std::string)> callback) const = 0;
 };
 
 class DefaultWebBrowserApplet final : public WebBrowserApplet {
 public:
     ~DefaultWebBrowserApplet() override;
+
+    void OpenLocalWebPage(std::string_view local_url,
+                          std::function<void(WebExitReason, std::string)> callback) const override;
 };
 
 } // namespace Core::Frontend

+ 4 - 1
src/core/hle/service/am/applets/web_browser.cpp

@@ -356,7 +356,10 @@ void WebBrowser::ExecuteLogin() {
 
 void WebBrowser::ExecuteOffline() {
     LOG_INFO(Service_AM, "Opening offline document at {}", offline_document);
-    WebBrowserExit(WebExitReason::WindowClosed);
+    frontend.OpenLocalWebPage(offline_document,
+                              [this](WebExitReason exit_reason, std::string last_url) {
+                                  WebBrowserExit(exit_reason, last_url);
+                              });
 }
 
 void WebBrowser::ExecuteShare() {