eden/src/common/android/applets/web_browser.cpp
lizzie 395613b01f
[common/logging] Simplify logging logic and fix issues when logging before system is created (#3688)
- our logging code was bigger than spdlog itself, why???? just keep it simple
- fix issues when logging before logging system is even started
- removes the "initialized logging twice" issue
- removes uneeded indirection in file logging
- uses direct formatting instead of jumping hoopla-around the fmt::format() ressult
- code duplication and dead code removal as usual

I did explore dup2() but I think it's not worth the hassle
I did try `fwopen()` but it's better if things are just kept as-is.

there is a lot of noise because I removed a bunch of redundant files on logging and just put everything in one file

now normally this wouldn't be a good idea, however consider: the complexity of logging; it's less than 500 lines... does it really need a whole subsystem?!?!?! ITS JUST LOGGING

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3688
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: DraVee <chimera@dravee.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2026-03-12 18:29:15 +01:00

51 lines
2 KiB
C++

// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "common/android/android_common.h"
#include "common/android/id_cache.h"
#include "common/android/applets/web_browser.h"
#include "common/logging.h"
static jclass s_native_library_class = nullptr;
static jmethodID s_open_external_url = nullptr;
namespace Common::Android::WebBrowser {
void InitJNI(JNIEnv* env) {
const jclass local = env->FindClass("org/yuzu/yuzu_emu/NativeLibrary");
s_native_library_class = static_cast<jclass>(env->NewGlobalRef(local));
env->DeleteLocalRef(local);
s_open_external_url = env->GetStaticMethodID(s_native_library_class, "openExternalUrl", "(Ljava/lang/String;)V");
}
void CleanupJNI(JNIEnv* env) {
if (s_native_library_class != nullptr) {
env->DeleteGlobalRef(s_native_library_class);
s_native_library_class = nullptr;
}
s_open_external_url = nullptr;
}
void AndroidWebBrowser::OpenLocalWebPage(const std::string& local_url, ExtractROMFSCallback extract_romfs_callback, OpenWebPageCallback callback) const {
LOG_WARNING(Frontend, "(STUBBED)");
callback(Service::AM::Frontend::WebExitReason::WindowClosed, "");
}
void AndroidWebBrowser::OpenExternalWebPage(const std::string& external_url, OpenWebPageCallback callback) const {
// do a dedicated thread, calling from the this thread crashed CPU fiber.
Common::Android::RunJNIOnFiber<void>([&](JNIEnv* env) {
if (env != nullptr && s_native_library_class != nullptr && s_open_external_url != nullptr) {
const jstring j_url = Common::Android::ToJString(env, external_url);
env->CallStaticVoidMethod(s_native_library_class, s_open_external_url, j_url);
env->DeleteLocalRef(j_url);
} else {
LOG_ERROR(Frontend, "JNI not initialized, cannot open {}", external_url);
}
return;
});
callback(Service::AM::Frontend::WebExitReason::WindowClosed, external_url);
}
} // namespace Common::Android::WebBrowser