From bbec49754384aba09387f3e4902626e303f6d9d0 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 00:34:59 +0200 Subject: [PATCH 01/13] EOD --- .../Native/.idea/cmake.xml | 2 +- .../Native/CMakeLists.txt | 9 +- .../Native/Public/Exports/Exports.h | 30 +-- .../Exports/{ => Testing}/Exports.Tests.cpp | 45 +---- .../Exports/Utilities/ExportErrorState.h | 70 +++++++ .../Exports/Utilities/ExportExecution.h | 75 +++++++ .../Exports/Utilities/ExportStringHelpers.h | 85 ++++++++ .../Exports/Utilities/ExportValidation.h | 52 +++++ .../Public/Exports/Utilities/Utilities.h | 23 +++ .../Native/Utils/ExportGuards.h | 189 ------------------ .../Native/Utils/InteropStatus.h | 16 ++ 11 files changed, 342 insertions(+), 254 deletions(-) rename src/InfiniFrame.NativeBridge/Native/Public/Exports/{ => Testing}/Exports.Tests.cpp (80%) create mode 100644 src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h create mode 100644 src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h create mode 100644 src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h create mode 100644 src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h create mode 100644 src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h delete mode 100644 src/InfiniFrame.NativeBridge/Native/Utils/ExportGuards.h create mode 100644 src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h diff --git a/src/InfiniFrame.NativeBridge/Native/.idea/cmake.xml b/src/InfiniFrame.NativeBridge/Native/.idea/cmake.xml index 5231c7877..d4f39e3ac 100644 --- a/src/InfiniFrame.NativeBridge/Native/.idea/cmake.xml +++ b/src/InfiniFrame.NativeBridge/Native/.idea/cmake.xml @@ -7,7 +7,7 @@ - + \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index 9c92fcbfb..e51246c8b 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -46,7 +46,7 @@ set(COMMON_SOURCES ) set(TEST_SOURCES - Public/Exports/Exports.Tests.cpp + Public/Exports/Testing/Exports.Tests.cpp ) set(WINDOWS_SOURCES @@ -130,7 +130,12 @@ set(HEADER_FILES Utils/WindowsHandles.h Utils/Event.h Public/Exports/Exports.h - Utils/ExportGuards.h + Public/Exports/Utilities/ExportErrorState.h + Public/Exports/Utilities/ExportExecution.h + Public/Exports/Utilities/ExportStringHelpers.h + Public/Exports/Utilities/ExportValidation.h + Public/Exports/Utilities/Utilities.h + Utils/InteropStatus.h Platform/Shared/CustomSchemeResponse.h Platform/Windows/ToastHandler.h Platform/Windows/Window.Win32.Internal.h diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h index bde8e0269..588ba3098 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h @@ -12,8 +12,10 @@ #define EXPORTED #endif -#include "Public/InfiniFrame.h" -#include "Utils/ExportGuards.h" +#include "Types/Basic.h" +#include "Utils/InteropStatus.h" +#include "Public/Exports/Utilities/Utilities.h" + // --------------------------------------------------------------------------------------------------------------------- // String Ownership Contract // --------------------------------------------------------------------------------------------------------------------- @@ -38,27 +40,3 @@ // NULL semantics: // Returning nullptr from an owned-string function means "no value" (e.g. no // file selected). The caller must still check before calling FreeString. -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -using infiniframe::exports::EnsureNotNull; -using infiniframe::exports::GetLastErrorMessageCopy; -using infiniframe::exports::ResetOut; -using infiniframe::exports::ResetOut2; -using infiniframe::exports::RunExportStatus; -using infiniframe::exports::RunReturnExport; -using infiniframe::exports::RunWindowExportStatus; -using infiniframe::exports::RunWindowReturnExport; - -template bool EnsureOutNotNull(T* value, const char* argumentName) noexcept { - return infiniframe::exports::EnsureNotNull(value, argumentName, InteropStatus::OutParameterSetToInvalidNull); -} - -inline AutoString NullToEmpty(const AutoString value) noexcept { -#ifdef _WIN32 - static const wchar_t empty[] = L""; -#else - static const char empty[] = ""; -#endif - return value != nullptr ? value : const_cast(empty); -} diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Tests.cpp b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp similarity index 80% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Tests.cpp rename to src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp index afcfb1938..e8e2a5d9e 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Tests.cpp +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp @@ -2,7 +2,7 @@ // Imports // --------------------------------------------------------------------------------------------------------------------- #include "Public/InfiniFrame.h" -#include "Utils/ExportGuards.h" +#include "Public/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- @@ -14,33 +14,6 @@ #if defined(INFINIFRAME_BUILD_TEST_EXPORTS) -using infiniframe::exports::EnsureNotNull; -using infiniframe::exports::RunExportStatus; - -#ifdef _WIN32 -inline AutoString duplicateString(const AutoStringConst str) { - if (str == nullptr) { - return nullptr; - } - - const size_t len = wcslen(str); - auto* copy = new wchar_t[len + 1]; - wcscpy_s(copy, len + 1, str); - return copy; -} -#else -inline AutoString duplicateString(const AutoStringConst str) { - if (str == nullptr) { - return nullptr; - } - - const size_t len = strlen(str); - auto* copy = new char[len + 1]; - strcpy(copy, str); - return copy; -} -#endif - extern "C" { EXPORTED InteropStatus InfiniFrameNativeTests_NativeParametersReturnAsIs( const InfiniFrameInitParams* params, InfiniFrameInitParams** new_params @@ -57,14 +30,14 @@ EXPORTED InteropStatus InfiniFrameNativeTests_NativeParametersReturnAsIs( *new_params = new InfiniFrameInitParams(); - (*new_params)->StartString = duplicateString(params->StartString); - (*new_params)->StartUrl = duplicateString(params->StartUrl); - (*new_params)->Title = duplicateString(params->Title); - (*new_params)->WindowIconFile = duplicateString(params->WindowIconFile); - (*new_params)->TemporaryFilesPath = duplicateString(params->TemporaryFilesPath); - (*new_params)->UserAgent = duplicateString(params->UserAgent); - (*new_params)->BrowserControlInitParameters = duplicateString(params->BrowserControlInitParameters); - (*new_params)->NotificationRegistrationId = duplicateString(params->NotificationRegistrationId); + (*new_params)->StartString = DuplicateString(params->StartString); + (*new_params)->StartUrl = DuplicateString(params->StartUrl); + (*new_params)->Title = DuplicateString(params->Title); + (*new_params)->WindowIconFile = DuplicateString(params->WindowIconFile); + (*new_params)->TemporaryFilesPath = DuplicateString(params->TemporaryFilesPath); + (*new_params)->UserAgent = DuplicateString(params->UserAgent); + (*new_params)->BrowserControlInitParameters = DuplicateString(params->BrowserControlInitParameters); + (*new_params)->NotificationRegistrationId = DuplicateString(params->NotificationRegistrationId); (*new_params)->ParentInstance = params->ParentInstance; (*new_params)->ClosingHandler = params->ClosingHandler; diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h new file mode 100644 index 000000000..3c5dc003a --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h @@ -0,0 +1,70 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#ifdef __linux__ +#include +#endif + +#ifdef _WIN32 +#include +#endif + +#include +#include +#include +#include +#include + +#include "Public/InfiniFrame.h" +#include "Utils/InteropStatus.h" +#include "Public/Exports/Utilities/ExportStringHelpers.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +namespace infiniframe::exports { + inline thread_local std::string g_lastErrorMessage; + inline thread_local auto g_lastStatus = InteropStatus::Success; + + inline void SetLastErrorCode(const InteropStatus status) noexcept { +#ifdef _WIN32 + SetLastError(static_cast(status)); +#else + errno = static_cast(status); +#endif + } + + inline void ClearLastErrorCode() noexcept { +#ifdef _WIN32 + SetLastError(0); +#else + errno = 0; +#endif + } + + inline void SetFailure(const InteropStatus status, std::string message) noexcept { + g_lastErrorMessage = std::move(message); + g_lastStatus = status; + SetLastErrorCode(status); + } + + inline void SetSuccess() noexcept { + g_lastErrorMessage.clear(); + g_lastStatus = InteropStatus::Success; + ClearLastErrorCode(); + } + + inline InteropStatus TranslateException(const std::exception& ex) noexcept { + if (dynamic_cast(&ex) != nullptr) { + SetFailure(InteropStatus::InvalidArgument, ex.what()); + return InteropStatus::InvalidArgument; + } + + SetFailure(InteropStatus::OperationFailed, ex.what()); + return InteropStatus::OperationFailed; + } + + inline AutoString GetLastErrorMessageCopy() { + return AllocateErrorMessageString(g_lastErrorMessage); + } +} \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h new file mode 100644 index 000000000..610a713c9 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h @@ -0,0 +1,75 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include +#include + +#include "Public/InfiniFrame.h" +#include "Utils/InteropStatus.h" +#include "ExportErrorState.h" +#include "ExportValidation.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +namespace infiniframe::exports { + template InteropStatus RunExportStatus(Fn&& fn) noexcept { + try { + SetSuccess(); + std::forward(fn)(); + if (g_lastStatus != InteropStatus::Success) { + return g_lastStatus; + } + SetSuccess(); + return InteropStatus::Success; + } catch (const std::exception& ex) { + return TranslateException(ex); + } catch (...) { + SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); + return InteropStatus::OperationFailed; + } + } + + template InteropStatus RunWindowExportStatus(InfiniFrameWindow* instance, Fn&& fn) noexcept { + return RunExportStatus([&] { + if (!EnsureNotNull(instance, "instance")) { + return; + } + + std::forward(fn)(instance); + }); + } + + template + T RunWindowReturnExport(InfiniFrameWindow* instance, T fallback, Fn&& fn) noexcept { + try { + if (!EnsureNotNull(instance, "instance")) { + return fallback; + } + + T value = std::forward(fn)(instance); + SetSuccess(); + return value; + } catch (const std::exception& ex) { + TranslateException(ex); + return fallback; + } catch (...) { + SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); + return fallback; + } + } + + template T RunReturnExport(T fallback, Fn&& fn) noexcept { + try { + T value = std::forward(fn)(); + SetSuccess(); + return value; + } catch (const std::exception& ex) { + TranslateException(ex); + return fallback; + } catch (...) { + SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); + return fallback; + } + } +} \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h new file mode 100644 index 000000000..e1b740518 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h @@ -0,0 +1,85 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#ifdef __linux__ +#include +#endif + +#ifdef _WIN32 +#include +#endif + +#include + +#include "Public/InfiniFrame.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +namespace infiniframe::exports { +#ifdef _WIN32 + inline AutoString AllocateErrorMessageString(const std::string& value) { + if (value.empty()) { + return nullptr; + } + + const int wideCount = + MultiByteToWideChar(CP_UTF8, 0, value.c_str(), static_cast(value.size()), nullptr, 0); + if (wideCount <= 0) { + return nullptr; + } + + auto* buffer = new wchar_t[wideCount + 1]; + const int converted = + MultiByteToWideChar(CP_UTF8, 0, value.c_str(), static_cast(value.size()), buffer, wideCount); + if (converted <= 0) { + delete[] buffer; + return nullptr; + } + + buffer[converted] = L'\0'; + return buffer; + } +#else + inline AutoString AllocateErrorMessageString(const std::string& value) { + if (value.empty()) { + return nullptr; + } + + return AllocateStringCopy(value); + } +#endif + + inline AutoString NullToEmpty(const AutoString value) noexcept { +#ifdef _WIN32 + static const wchar_t empty[] = L""; +#else + static const char empty[] = ""; +#endif + return value != nullptr ? value : const_cast(empty); + } + +#ifdef _WIN32 + inline AutoString DuplicateString(const AutoStringConst str) { + if (str == nullptr) { + return nullptr; + } + + const size_t len = wcslen(str); + auto* copy = new wchar_t[len + 1]; + wcscpy_s(copy, len + 1, str); + return copy; + } +#else + inline AutoString DuplicateString(const AutoStringConst str) { + if (str == nullptr) { + return nullptr; + } + + const size_t len = strlen(str); + auto* copy = new char[len + 1]; + strcpy(copy, str); + return copy; + } +#endif +} \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h new file mode 100644 index 000000000..3054a3c25 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h @@ -0,0 +1,52 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#ifdef __linux__ +#include +#endif + +#ifdef _WIN32 +#include +#endif + +#include +#include +#include +#include +#include + +#include "Public/InfiniFrame.h" +#include "Utils/InteropStatus.h" +#include "ExportErrorState.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +namespace infiniframe::exports { + + template void ResetOut(T* outValue, const T fallback = {}) noexcept { + if (outValue != nullptr) { + *outValue = fallback; + } + } + + template void ResetOut2(T* first, T* second, const T fallback = {}) noexcept { + ResetOut(first, fallback); + ResetOut(second, fallback); + } + + template bool EnsureNotNull( + T* value, const char* argumentName, const InteropStatus status = InteropStatus::InvalidArgument + ) noexcept { + if (value != nullptr) { + return true; + } + + SetFailure(status, std::string("Argument '") + argumentName + "' is null."); + return false; + } + + template bool EnsureOutNotNull(T* value, const char* argumentName) noexcept { + return exports::EnsureNotNull(value, argumentName, InteropStatus::OutParameterSetToInvalidNull); + } +} // namespace infiniframe::exports \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h new file mode 100644 index 000000000..5e5c92069 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h @@ -0,0 +1,23 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "ExportErrorState.h" +#include "ExportExecution.h" +#include "ExportStringHelpers.h" +#include "ExportValidation.h" + +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +using infiniframe::exports::EnsureNotNull; +using infiniframe::exports::EnsureOutNotNull; +using infiniframe::exports::GetLastErrorMessageCopy; +using infiniframe::exports::ResetOut; +using infiniframe::exports::ResetOut2; +using infiniframe::exports::RunExportStatus; +using infiniframe::exports::RunReturnExport; +using infiniframe::exports::RunWindowExportStatus; +using infiniframe::exports::RunWindowReturnExport; +using infiniframe::exports::NullToEmpty; +using infiniframe::exports::DuplicateString; \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/ExportGuards.h b/src/InfiniFrame.NativeBridge/Native/Utils/ExportGuards.h deleted file mode 100644 index 537f25b7a..000000000 --- a/src/InfiniFrame.NativeBridge/Native/Utils/ExportGuards.h +++ /dev/null @@ -1,189 +0,0 @@ -#pragma once -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#include -#endif - -#include "Public/InfiniFrame.h" -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -enum class InteropStatus : int { - Success = 0, - InvalidArgument = 22, - OutParameterSetToInvalidNull = 2001, - OperationFailed = 14 -}; - -namespace infiniframe::exports { - namespace detail { - inline thread_local std::string g_lastErrorMessage; - inline thread_local auto g_lastStatus = InteropStatus::Success; - - inline void SetLastErrorCode(const InteropStatus status) noexcept { -#ifdef _WIN32 - SetLastError(static_cast(status)); -#else - errno = static_cast(status); -#endif - } - - inline void ClearLastErrorCode() noexcept { -#ifdef _WIN32 - SetLastError(0); -#else - errno = 0; -#endif - } - - inline void SetFailure(const InteropStatus status, std::string message) noexcept { - g_lastErrorMessage = std::move(message); - g_lastStatus = status; - SetLastErrorCode(status); - } - - inline void SetSuccess() noexcept { - g_lastErrorMessage.clear(); - g_lastStatus = InteropStatus::Success; - ClearLastErrorCode(); - } - - inline InteropStatus TranslateException(const std::exception& ex) noexcept { - if (dynamic_cast(&ex) != nullptr) { - SetFailure(InteropStatus::InvalidArgument, ex.what()); - return InteropStatus::InvalidArgument; - } - - SetFailure(InteropStatus::OperationFailed, ex.what()); - return InteropStatus::OperationFailed; - } - -#ifdef _WIN32 - inline AutoString AllocateErrorMessageString(const std::string& value) { - if (value.empty()) { - return nullptr; - } - - const int wideCount = - MultiByteToWideChar(CP_UTF8, 0, value.c_str(), static_cast(value.size()), nullptr, 0); - if (wideCount <= 0) { - return nullptr; - } - - auto* buffer = new wchar_t[wideCount + 1]; - const int converted = - MultiByteToWideChar(CP_UTF8, 0, value.c_str(), static_cast(value.size()), buffer, wideCount); - if (converted <= 0) { - delete[] buffer; - return nullptr; - } - - buffer[converted] = L'\0'; - return buffer; - } -#else - inline AutoString AllocateErrorMessageString(const std::string& value) { - if (value.empty()) { - return nullptr; - } - - return AllocateStringCopy(value); - } -#endif - } // namespace detail - - inline AutoString GetLastErrorMessageCopy() { - return detail::AllocateErrorMessageString(detail::g_lastErrorMessage); - } - - template void ResetOut(T* outValue, const T fallback = {}) noexcept { - if (outValue != nullptr) { - *outValue = fallback; - } - } - - template void ResetOut2(T* first, T* second, const T fallback = {}) noexcept { - ResetOut(first, fallback); - ResetOut(second, fallback); - } - - template - bool EnsureNotNull( - T* value, const char* argumentName, const InteropStatus status = InteropStatus::InvalidArgument - ) noexcept { - if (value != nullptr) { - return true; - } - - detail::SetFailure(status, std::string("Argument '") + argumentName + "' is null."); - return false; - } - - template InteropStatus RunExportStatus(Fn&& fn) noexcept { - try { - detail::SetSuccess(); - std::forward(fn)(); - if (detail::g_lastStatus != InteropStatus::Success) { - return detail::g_lastStatus; - } - detail::SetSuccess(); - return InteropStatus::Success; - } catch (const std::exception& ex) { - return detail::TranslateException(ex); - } catch (...) { - detail::SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); - return InteropStatus::OperationFailed; - } - } - - template InteropStatus RunWindowExportStatus(InfiniFrameWindow* instance, Fn&& fn) noexcept { - return RunExportStatus([&] { - if (!EnsureNotNull(instance, "instance")) { - return; - } - - std::forward(fn)(instance); - }); - } - - template - T RunWindowReturnExport(InfiniFrameWindow* instance, T fallback, Fn&& fn) noexcept { - try { - if (!EnsureNotNull(instance, "instance")) { - return fallback; - } - - T value = std::forward(fn)(instance); - detail::SetSuccess(); - return value; - } catch (const std::exception& ex) { - detail::TranslateException(ex); - return fallback; - } catch (...) { - detail::SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); - return fallback; - } - } - - template T RunReturnExport(T fallback, Fn&& fn) noexcept { - try { - T value = std::forward(fn)(); - detail::SetSuccess(); - return value; - } catch (const std::exception& ex) { - detail::TranslateException(ex); - return fallback; - } catch (...) { - detail::SetFailure(InteropStatus::OperationFailed, "Unknown native exception."); - return fallback; - } - } -} diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h b/src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h new file mode 100644 index 000000000..db498a2af --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h @@ -0,0 +1,16 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- + +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +enum class InteropStatus : int { + Success = 0, + InvalidArgument = 22, + OutParameterSetToInvalidNull = 2001, + OperationFailed = 14 +}; + + From 66152792f5b95858baafd5f84fd41de0b974d2e6 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 13:56:47 +0200 Subject: [PATCH 02/13] Remove `Event` and Windows-specific handle utilities. Clean up unused headers and files across the project. Adjust `CMakeLists.txt` to reflect source and header updates. --- .../Native/CMakeLists.txt | 131 ++++++++-------- .../Native/Public/InfiniFrame.h | 1 - .../Native/Utils/Event.h | 140 ------------------ .../Native/Utils/StringArrayCopy.h | 1 - .../Native/Utils/WindowsHandles.h | 38 ----- 5 files changed, 66 insertions(+), 245 deletions(-) delete mode 100644 src/InfiniFrame.NativeBridge/Native/Utils/Event.h delete mode 100644 src/InfiniFrame.NativeBridge/Native/Utils/WindowsHandles.h diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index e51246c8b..6e6048ce7 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -34,15 +34,15 @@ infiniframe_setup_dependencies() # Source Files # ---------------------------------------------------------------------------------------------------------------------- set(COMMON_SOURCES - Public/Exports/Exports.Platform.cpp - Public/Exports/Exports.Lifecycle.cpp - Public/Exports/Exports.WindowState.cpp - Public/Exports/Exports.WindowCommands.cpp + Platform/Shared/WindowEvents.cpp + Platform/Shared/WindowState.cpp Public/Exports/Exports.Dialog.cpp Public/Exports/Exports.Events.cpp + Public/Exports/Exports.Lifecycle.cpp Public/Exports/Exports.Memory.cpp - Platform/Shared/WindowEvents.cpp - Platform/Shared/WindowState.cpp + Public/Exports/Exports.Platform.cpp + Public/Exports/Exports.WindowCommands.cpp + Public/Exports/Exports.WindowState.cpp ) set(TEST_SOURCES @@ -50,106 +50,107 @@ set(TEST_SOURCES ) set(WINDOWS_SOURCES + Platform/Windows/DarkMode.h + Platform/Windows/ToastHandler.h + Platform/Windows/Window.Win32.Context.h + Platform/Windows/Window.Win32.Internal.h + + Platform/Windows/Core/UiDispatcher.Win32.cpp Platform/Windows/Core/WindowCore.Win32.cpp - Platform/Windows/Core/WindowTracing.Win32.cpp Platform/Windows/Core/WindowEncoding.Win32.cpp - Platform/Windows/Core/WindowStorage.Win32.cpp - Platform/Windows/Core/WindowOwnership.Win32.cpp Platform/Windows/Core/WindowLifecycle.Win32.cpp + Platform/Windows/Core/WindowOwnership.Win32.cpp Platform/Windows/Core/WindowProc.Win32.cpp Platform/Windows/Core/WindowState.Win32.cpp - Platform/Windows/Core/UiDispatcher.Win32.cpp - Platform/Windows/WebView/WebView2Host.Win32.cpp - Platform/Windows/WebView/WebView2Runtime.Win32.cpp - Platform/Windows/WebView/WebView2Controller.Win32.cpp + Platform/Windows/Core/WindowStorage.Win32.cpp + Platform/Windows/Core/WindowTracing.Win32.cpp + Platform/Windows/DarkMode.cpp + Platform/Windows/Dialog.cpp + Platform/Windows/Dpi.Win32.cpp + Platform/Windows/Monitors.Win32.cpp + Platform/Windows/Notifications.WinToast.cpp Platform/Windows/WebView/WebView2Attach.Win32.cpp + Platform/Windows/WebView/WebView2Controller.Win32.cpp Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp + Platform/Windows/WebView/WebView2Host.Win32.cpp + Platform/Windows/WebView/WebView2Runtime.Win32.cpp Platform/Windows/WebView/WebView2Settings.Win32.cpp - Platform/Windows/Monitors.Win32.cpp - Platform/Windows/Notifications.WinToast.cpp - Platform/Windows/Dpi.Win32.cpp - Platform/Windows/DarkMode.cpp - Platform/Windows/Dialog.cpp ) set(LINUX_SOURCES + Platform/Linux/WebKit/WebKit.Gtk.Internal.h + Platform/Linux/Window.Gtk.Internal.h + + Platform/Linux/Core/UiDispatcher.Gtk.cpp Platform/Linux/Core/WindowCore.Gtk.cpp + Platform/Linux/Core/WindowEvents.Gtk.cpp Platform/Linux/Core/WindowInitialization.Gtk.cpp Platform/Linux/Core/WindowLifecycle.Gtk.cpp - Platform/Linux/Core/WindowState.Gtk.cpp - Platform/Linux/Core/WindowEvents.Gtk.cpp - Platform/Linux/Core/UiDispatcher.Gtk.cpp Platform/Linux/Core/WindowSignals.Gtk.cpp + Platform/Linux/Core/WindowState.Gtk.cpp + Platform/Linux/Dialog.cpp + Platform/Linux/Monitors.Gtk.cpp + Platform/Linux/Notifications.LibNotify.cpp + Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp Platform/Linux/WebKit/WebKitHost.Gtk.cpp - Platform/Linux/WebKit/WebKitSettings.Gtk.cpp Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp - Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp - Platform/Linux/Notifications.LibNotify.cpp - Platform/Linux/Monitors.Gtk.cpp - Platform/Linux/Dialog.cpp + Platform/Linux/WebKit/WebKitSettings.Gtk.cpp ) set(MAC_SOURCES + Platform/Mac/Delegates/AppDelegate.h + Platform/Mac/Delegates/NavigationDelegate.h + Platform/Mac/Delegates/UiDelegate.h + Platform/Mac/Delegates/UrlSchemeHandler.h + Platform/Mac/Delegates/WindowDelegate.h + Platform/Mac/NSWindowBorderless.h + Platform/Mac/Window.Cocoa.Internal.h + + Platform/Mac/Core/UiDispatcher.Cocoa.mm + Platform/Mac/Core/WindowCore.Cocoa.mm + Platform/Mac/Core/WindowEvents.Cocoa.mm + Platform/Mac/Core/WindowLifecycle.Cocoa.mm + Platform/Mac/Core/WindowState.Cocoa.mm Platform/Mac/Delegates/AppDelegate.mm - Platform/Mac/Delegates/UiDelegate.mm - Platform/Mac/Delegates/WindowDelegate.mm Platform/Mac/Delegates/NavigationDelegate.mm + Platform/Mac/Delegates/UiDelegate.mm Platform/Mac/Delegates/UrlSchemeHandler.mm - Platform/Mac/NSWindowBorderless.mm + Platform/Mac/Delegates/WindowDelegate.mm Platform/Mac/Dialog.mm - Platform/Mac/Notifications.UserNotifications.mm Platform/Mac/Monitors.Cocoa.mm - Platform/Mac/Core/WindowCore.Cocoa.mm - Platform/Mac/Core/WindowLifecycle.Cocoa.mm - Platform/Mac/Core/WindowState.Cocoa.mm - Platform/Mac/Core/WindowEvents.Cocoa.mm - Platform/Mac/Core/UiDispatcher.Cocoa.mm + Platform/Mac/NSWindowBorderless.mm + Platform/Mac/Notifications.UserNotifications.mm Platform/Mac/WebKit/WebKitBridge.Cocoa.mm Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm Platform/Mac/WebKit/WebKitHost.Cocoa.mm ) set(HEADER_FILES - Public/InfiniFrame.h - Public/InfiniFrameWindow.h - Public/InfiniFrameDialog.h Embedded/Embedded.h Embedded/InfiniFrameJs/InfiniFrameJs.h + Platform/Shared/CustomSchemeResponse.h + Public/Exports/Exports.h + Public/Exports/Utilities/ExportErrorState.h + Public/Exports/Utilities/ExportExecution.h + Public/Exports/Utilities/ExportStringHelpers.h + Public/Exports/Utilities/ExportValidation.h + Public/Exports/Utilities/Utilities.h + Public/InfiniFrame.h + Public/InfiniFrameDialog.h + Public/InfiniFrameInitParams.h + Public/InfiniFrameWindow.h Types/Basic.h - Types/DialogResult.h + Types/Callbacks.h Types/DialogButtons.h Types/DialogIcon.h + Types/DialogResult.h Types/Monitor.h - Public/InfiniFrameInitParams.h - Types/Callbacks.h Utils/Dimensions.h Utils/ErrorCode.h + Utils/InteropStatus.h Utils/Result.h - Utils/StringCopy.h Utils/StringArrayCopy.h - Utils/WindowsHandles.h - Utils/Event.h - Public/Exports/Exports.h - Public/Exports/Utilities/ExportErrorState.h - Public/Exports/Utilities/ExportExecution.h - Public/Exports/Utilities/ExportStringHelpers.h - Public/Exports/Utilities/ExportValidation.h - Public/Exports/Utilities/Utilities.h - Utils/InteropStatus.h - Platform/Shared/CustomSchemeResponse.h - Platform/Windows/ToastHandler.h - Platform/Windows/Window.Win32.Internal.h - Platform/Windows/Window.Win32.Context.h - Platform/Windows/DarkMode.h - Platform/Mac/Delegates/AppDelegate.h - Platform/Mac/Delegates/NavigationDelegate.h - Platform/Mac/NSWindowBorderless.h - Platform/Mac/Delegates/UiDelegate.h - Platform/Mac/Delegates/WindowDelegate.h - Platform/Mac/Delegates/UrlSchemeHandler.h - Platform/Linux/Window.Gtk.Internal.h - Platform/Linux/WebKit/WebKit.Gtk.Internal.h - Platform/Mac/Window.Cocoa.Internal.h + Utils/StringCopy.h ) if (WIN32) diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h b/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h index 5ded59cf3..57244e105 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h +++ b/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h @@ -11,4 +11,3 @@ #include "Utils/Dimensions.h" #include "Utils/StringCopy.h" -#include "Utils/Event.h" diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/Event.h b/src/InfiniFrame.NativeBridge/Native/Utils/Event.h deleted file mode 100644 index 54f9db76c..000000000 --- a/src/InfiniFrame.NativeBridge/Native/Utils/Event.h +++ /dev/null @@ -1,140 +0,0 @@ -#pragma once -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#include -#include -#include -#include -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -template class Event { - public: - using Handler = std::function; - using Token = size_t; - - Event() = default; - ~Event() = default; - - Event(const Event&) = delete; - Event& operator=(const Event&) = delete; - Event(Event&&) noexcept = default; - Event& operator=(Event&&) noexcept = default; - - /** - * @brief Subscribe to event - * @param handler Callback function to invoke when event is raised - * @return Token for unsubscribing - */ - [[nodiscard]] Token Subscribe(Handler handler) { - std::unique_lock lock(m_mutex); - const auto token = m_nextToken++; - m_handlers.emplace(token, std::move(handler)); - return token; - } - - /** - * @brief Unsubscribe from event - * @param token Token returned from Subscribe - */ - void Unsubscribe(Token token) { - std::unique_lock lock(m_mutex); - m_handlers.erase(token); - } - - /** - * @brief Raise event (invoke all handlers) - * @param args Arguments to pass to handlers - */ - void Raise(Args... args) { - std::shared_lock lock(m_mutex); - for (const auto& [_, handler] : m_handlers) { - if (handler) { - handler(args...); - } - } - } - - /** - * @brief Check if event has subscribers - * @return true if at least one handler is subscribed - */ - [[nodiscard]] bool HasSubscribers() const { - std::shared_lock lock(m_mutex); - return !m_handlers.empty(); - } - - /** - * @brief Clear all subscribers - */ - void Clear() { - std::unique_lock lock(m_mutex); - m_handlers.clear(); - } - - private: - mutable std::shared_mutex m_mutex; - std::map m_handlers; - Token m_nextToken = 1; -}; - -template class EventSubscription { - public: - using EventType = Event; - using Token = EventType::Token; - - EventSubscription() = default; - - EventSubscription(EventType& event, EventType::Handler handler) - : m_event(&event) - , m_token(event.Subscribe(std::move(handler))) {} - - ~EventSubscription() { - Unsubscribe(); - } - - EventSubscription(const EventSubscription&) = delete; - EventSubscription& operator=(const EventSubscription&) = delete; - - EventSubscription(EventSubscription&& other) noexcept - : m_event(other.m_event) - , m_token(other.m_token) { - other.m_event = nullptr; - other.m_token = 0; - } - - EventSubscription& operator=(EventSubscription&& other) noexcept { - if (this != &other) { - Unsubscribe(); - m_event = other.m_event; - m_token = other.m_token; - other.m_event = nullptr; - other.m_token = 0; - } - return *this; - } - - /** - * @brief Manually unsubscribe from event - */ - void Unsubscribe() { - if (m_event && m_token != 0) { - m_event->Unsubscribe(m_token); - m_event = nullptr; - m_token = 0; - } - } - - /** - * @brief Check if subscription is active - * @return true if still subscribed - */ - [[nodiscard]] bool IsActive() const noexcept { - return m_event != nullptr && m_token != 0; - } - - private: - EventType* m_event = nullptr; - Token m_token = 0; -}; diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h b/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h index 4e147e96c..5016e543b 100644 --- a/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h +++ b/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h @@ -2,7 +2,6 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include #include #include diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/WindowsHandles.h b/src/InfiniFrame.NativeBridge/Native/Utils/WindowsHandles.h deleted file mode 100644 index 9ed5445dd..000000000 --- a/src/InfiniFrame.NativeBridge/Native/Utils/WindowsHandles.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#ifdef _WIN32 -#include -#include -#endif -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -#ifdef _WIN32 -struct HBRUSHDeleter { - void operator()(void* h) const noexcept { - if (h) - DeleteObject(h); - } -}; - -struct HICONDeleter { - void operator()(void* h) const noexcept { - if (h) - DestroyIcon(static_cast(h)); - } -}; - -struct HDCDeleter { - void operator()(void* h) const noexcept { - if (h) - DeleteDC(static_cast(h)); - } -}; - -using UniqueHBRUSH = std::unique_ptr; -using UniqueHICON = std::unique_ptr; -using UniqueHDC = std::unique_ptr; - -#endif \ No newline at end of file From 759a2d80afbcc0b0bf7d708316239c4998842f4b Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:01:58 +0200 Subject: [PATCH 03/13] Remove `Utils/Result.h` and update `CMakeLists.txt` to reflect unused header cleanup. --- src/InfiniFrame.NativeBridge/Native/CMakeLists.txt | 1 - src/InfiniFrame.NativeBridge/Native/Utils/Result.h | 11 ----------- 2 files changed, 12 deletions(-) delete mode 100644 src/InfiniFrame.NativeBridge/Native/Utils/Result.h diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index 6e6048ce7..bc96b66a3 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -148,7 +148,6 @@ set(HEADER_FILES Utils/Dimensions.h Utils/ErrorCode.h Utils/InteropStatus.h - Utils/Result.h Utils/StringArrayCopy.h Utils/StringCopy.h ) diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/Result.h b/src/InfiniFrame.NativeBridge/Native/Utils/Result.h deleted file mode 100644 index 7ed7361b9..000000000 --- a/src/InfiniFrame.NativeBridge/Native/Utils/Result.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#include - -#include "Utils/ErrorCode.h" -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -template using Result = std::expected; From 8f65911093c986468666f5ba08ffcf1b08c18da4 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:19:13 +0200 Subject: [PATCH 04/13] Project Restructure --- .gitignore | 4 +- native-vendor-deps.json | 22 +- .../.cmake/Embed.InfiniFrameJs.Impl.cmake | 2 +- .../Native/.cmake/Embed.InfiniFrameJs.cmake | 4 +- .../Native/.cmake/NativeDependencies.cmake | 6 +- .../Native/.cmake/Platform.Linux.cmake | 1 + .../Native/.cmake/Platform.MacOS.cmake | 5 +- .../Native/.cmake/Platform.Windows.cmake | 3 +- .../Native/CMakeLists.txt | 196 +++++++++--------- .../Native/Public/InfiniFrame.h | 13 -- .../Api}/Exports/Exports.Dialog.cpp | 2 +- .../Api}/Exports/Exports.Events.cpp | 2 +- .../Api}/Exports/Exports.Lifecycle.cpp | 2 +- .../Api}/Exports/Exports.Memory.cpp | 2 +- .../Api}/Exports/Exports.Platform.cpp | 2 +- .../Api}/Exports/Exports.WindowCommands.cpp | 2 +- .../Api}/Exports/Exports.WindowState.cpp | 2 +- .../{Public => src/Api}/Exports/Exports.h | 6 +- .../Api}/Testing/Exports.Tests.cpp | 4 +- .../Api}/Utilities/ExportErrorState.h | 8 +- .../Api}/Utilities/ExportExecution.h | 6 +- .../Api}/Utilities/ExportStringHelpers.h | 4 +- .../Api}/Utilities/ExportValidation.h | 6 +- .../Exports => src/Api}/Utilities/Utilities.h | 0 .../{ => src}/Dependencies/VENDORING.md | 0 .../{ => src}/Dependencies/simdjson/LICENSE | 0 .../Dependencies/simdjson/simdjson.cpp | 0 .../Dependencies/simdjson/simdjson.h | 0 .../Dependencies/simdutf/LICENSE-APACHE | 0 .../Dependencies/simdutf/LICENSE-MIT | 0 .../Dependencies/simdutf/simdutf.cpp | 0 .../{ => src}/Dependencies/simdutf/simdutf.h | 0 .../Dependencies/simdutf/simdutf_c.h | 0 .../Dependencies/wintoastlib/LICENSE.txt | 0 .../Dependencies/wintoastlib/wintoastlib.cpp | 0 .../Dependencies/wintoastlib/wintoastlib.h | 0 .../Native/{ => src}/Embedded/Embedded.h | 0 .../Platform/Linux/Core/UiDispatcher.Gtk.cpp | 2 +- .../Platform/Linux/Core/WindowCore.Gtk.cpp | 2 +- .../Platform/Linux/Core/WindowEvents.Gtk.cpp | 2 +- .../Linux/Core/WindowInitialization.Gtk.cpp | 4 +- .../Linux/Core/WindowLifecycle.Gtk.cpp | 2 +- .../Platform/Linux/Core/WindowSignals.Gtk.cpp | 2 +- .../Platform/Linux/Core/WindowState.Gtk.cpp | 4 +- .../Runtime}/Platform/Linux/Dialog.cpp | 4 +- .../Runtime}/Platform/Linux/Monitors.Gtk.cpp | 2 +- .../Linux/Notifications.LibNotify.cpp | 2 +- .../Linux/WebKit/WebKit.Gtk.Internal.h | 0 .../Linux/WebKit/WebKitCustomSchemes.Gtk.cpp | 4 +- .../Platform/Linux/WebKit/WebKitHost.Gtk.cpp | 4 +- .../Linux/WebKit/WebKitMessaging.Gtk.cpp | 6 +- .../Linux/WebKit/WebKitSettings.Gtk.cpp | 2 +- .../Platform/Linux/Window.Gtk.Internal.h | 4 +- .../Platform/Mac/Core/UiDispatcher.Cocoa.mm | 0 .../Platform/Mac/Core/WindowCore.Cocoa.mm | 4 +- .../Platform/Mac/Core/WindowEvents.Cocoa.mm | 0 .../Mac/Core/WindowLifecycle.Cocoa.mm | 0 .../Platform/Mac/Core/WindowState.Cocoa.mm | 2 +- .../Platform/Mac/Delegates/AppDelegate.h | 0 .../Platform/Mac/Delegates/AppDelegate.mm | 0 .../Mac/Delegates/NavigationDelegate.h | 2 +- .../Mac/Delegates/NavigationDelegate.mm | 0 .../Platform/Mac/Delegates/UiDelegate.h | 2 +- .../Platform/Mac/Delegates/UiDelegate.mm | 0 .../Platform/Mac/Delegates/UrlSchemeHandler.h | 2 +- .../Mac/Delegates/UrlSchemeHandler.mm | 0 .../Platform/Mac/Delegates/WindowDelegate.h | 2 +- .../Platform/Mac/Delegates/WindowDelegate.mm | 0 .../{ => src/Runtime}/Platform/Mac/Dialog.mm | 2 +- .../Runtime}/Platform/Mac/Monitors.Cocoa.mm | 0 .../Platform/Mac/NSWindowBorderless.h | 2 +- .../Platform/Mac/NSWindowBorderless.mm | 0 .../Mac/Notifications.UserNotifications.mm | 0 .../Platform/Mac/WebKit/WebKitBridge.Cocoa.mm | 0 .../Mac/WebKit/WebKitCustomSchemes.Cocoa.mm | 0 .../Platform/Mac/WebKit/WebKitHost.Cocoa.mm | 2 +- .../Platform/Mac/Window.Cocoa.Internal.h | 4 +- .../Windows/Core/UiDispatcher.Win32.cpp | 2 +- .../Windows/Core/WindowCore.Win32.cpp | 4 +- .../Windows/Core/WindowEncoding.Win32.cpp | 2 +- .../Windows/Core/WindowLifecycle.Win32.cpp | 2 +- .../Windows/Core/WindowOwnership.Win32.cpp | 2 +- .../Windows/Core/WindowProc.Win32.cpp | 4 +- .../Windows/Core/WindowState.Win32.cpp | 4 +- .../Windows/Core/WindowStorage.Win32.cpp | 2 +- .../Windows/Core/WindowTracing.Win32.cpp | 2 +- .../Runtime}/Platform/Windows/DarkMode.cpp | 2 +- .../Runtime}/Platform/Windows/DarkMode.h | 0 .../Runtime}/Platform/Windows/Dialog.cpp | 4 +- .../Runtime}/Platform/Windows/Dpi.Win32.cpp | 2 +- .../Platform/Windows/Monitors.Win32.cpp | 2 +- .../Windows/Notifications.WinToast.cpp | 2 +- .../Runtime}/Platform/Windows/ToastHandler.h | 2 +- .../Windows/WebView/WebView2Attach.Win32.cpp | 2 +- .../WebView/WebView2Controller.Win32.cpp | 2 +- .../WebView/WebView2CustomSchemes.Win32.cpp | 4 +- .../Windows/WebView/WebView2Host.Win32.cpp | 2 +- .../Windows/WebView/WebView2Runtime.Win32.cpp | 2 +- .../WebView/WebView2Settings.Win32.cpp | 2 +- .../Platform/Windows/Window.Win32.Context.h | 4 +- .../Platform/Windows/Window.Win32.Internal.h | 8 +- .../{ => src/Runtime/Shared}/Types/Basic.h | 0 .../Runtime/Shared}/Types/Callbacks.h | 0 .../Runtime/Shared}/Types/DialogButtons.h | 0 .../Runtime/Shared}/Types/DialogIcon.h | 0 .../Runtime/Shared}/Types/DialogResult.h | 0 .../{ => src/Runtime/Shared}/Types/Monitor.h | 0 .../Runtime/Shared/Utilities}/Dimensions.h | 0 .../Runtime/Shared/Utilities}/ErrorCode.h | 0 .../Runtime/Shared/Utilities}/InteropStatus.h | 0 .../Shared/Utilities}/StringArrayCopy.h | 2 +- .../Runtime/Shared/Utilities}/StringCopy.h | 0 .../Shared/WebView}/CustomSchemeResponse.h | 0 .../src/Runtime/Shared/Window/InfiniFrame.h | 13 ++ .../Shared/Window}/InfiniFrameDialog.h | 8 +- .../Shared/Window}/InfiniFrameInitParams.h | 4 +- .../Shared/Window}/InfiniFrameWindow.h | 10 +- .../Shared/Window}/InfiniFrameWindowImpl.h | 6 +- .../Runtime/Shared/Window}/WindowEvents.cpp | 4 +- .../Runtime/Shared/Window}/WindowState.cpp | 6 +- 120 files changed, 248 insertions(+), 243 deletions(-) delete mode 100644 src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.Dialog.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.Events.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.Lifecycle.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.Memory.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.Platform.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.WindowCommands.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.WindowState.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Api}/Exports/Exports.h (93%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Testing/Exports.Tests.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Utilities/ExportErrorState.h (92%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Utilities/ExportExecution.h (95%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Utilities/ExportStringHelpers.h (97%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Utilities/ExportValidation.h (93%) rename src/InfiniFrame.NativeBridge/Native/{Public/Exports => src/Api}/Utilities/Utilities.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/VENDORING.md (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdjson/LICENSE (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdjson/simdjson.cpp (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdjson/simdjson.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdutf/LICENSE-APACHE (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdutf/LICENSE-MIT (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdutf/simdutf.cpp (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdutf/simdutf.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/simdutf/simdutf_c.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/wintoastlib/LICENSE.txt (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/wintoastlib/wintoastlib.cpp (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Dependencies/wintoastlib/wintoastlib.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src}/Embedded/Embedded.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/UiDispatcher.Gtk.cpp (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowCore.Gtk.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowEvents.Gtk.cpp (94%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowInitialization.Gtk.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowLifecycle.Gtk.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowSignals.Gtk.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Core/WindowState.Gtk.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Dialog.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Monitors.Gtk.cpp (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Notifications.LibNotify.cpp (94%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/WebKit/WebKit.Gtk.Internal.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/WebKit/WebKitHost.Gtk.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp (93%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Linux/Window.Gtk.Internal.h (94%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Core/UiDispatcher.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Core/WindowCore.Cocoa.mm (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Core/WindowEvents.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Core/WindowLifecycle.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Core/WindowState.Cocoa.mm (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/AppDelegate.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/AppDelegate.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/NavigationDelegate.h (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/NavigationDelegate.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/UiDelegate.h (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/UiDelegate.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/UrlSchemeHandler.h (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/UrlSchemeHandler.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/WindowDelegate.h (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Delegates/WindowDelegate.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Dialog.mm (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Monitors.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/NSWindowBorderless.h (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/NSWindowBorderless.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Notifications.UserNotifications.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/WebKit/WebKitHost.Cocoa.mm (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Mac/Window.Cocoa.Internal.h (93%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/UiDispatcher.Win32.cpp (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowCore.Win32.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowEncoding.Win32.cpp (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowLifecycle.Win32.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowOwnership.Win32.cpp (93%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowProc.Win32.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowState.Win32.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowStorage.Win32.cpp (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Core/WindowTracing.Win32.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/DarkMode.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/DarkMode.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Dialog.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Dpi.Win32.cpp (90%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Monitors.Win32.cpp (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Notifications.WinToast.cpp (95%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/ToastHandler.h (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2Attach.Win32.cpp (99%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2Controller.Win32.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2Host.Win32.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2Runtime.Win32.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/WebView/WebView2Settings.Win32.cpp (98%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Window.Win32.Context.h (96%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime}/Platform/Windows/Window.Win32.Internal.h (92%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/Basic.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/Callbacks.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/DialogButtons.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/DialogIcon.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/DialogResult.h (100%) rename src/InfiniFrame.NativeBridge/Native/{ => src/Runtime/Shared}/Types/Monitor.h (100%) rename src/InfiniFrame.NativeBridge/Native/{Utils => src/Runtime/Shared/Utilities}/Dimensions.h (100%) rename src/InfiniFrame.NativeBridge/Native/{Utils => src/Runtime/Shared/Utilities}/ErrorCode.h (100%) rename src/InfiniFrame.NativeBridge/Native/{Utils => src/Runtime/Shared/Utilities}/InteropStatus.h (100%) rename src/InfiniFrame.NativeBridge/Native/{Utils => src/Runtime/Shared/Utilities}/StringArrayCopy.h (98%) rename src/InfiniFrame.NativeBridge/Native/{Utils => src/Runtime/Shared/Utilities}/StringCopy.h (100%) rename src/InfiniFrame.NativeBridge/Native/{Platform/Shared => src/Runtime/Shared/WebView}/CustomSchemeResponse.h (100%) create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrame.h rename src/InfiniFrame.NativeBridge/Native/{Public => src/Runtime/Shared/Window}/InfiniFrameDialog.h (94%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Runtime/Shared/Window}/InfiniFrameInitParams.h (96%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Runtime/Shared/Window}/InfiniFrameWindow.h (98%) rename src/InfiniFrame.NativeBridge/Native/{Public => src/Runtime/Shared/Window}/InfiniFrameWindowImpl.h (95%) rename src/InfiniFrame.NativeBridge/Native/{Platform/Shared => src/Runtime/Shared/Window}/WindowEvents.cpp (97%) rename src/InfiniFrame.NativeBridge/Native/{Platform/Shared => src/Runtime/Shared/Window}/WindowState.cpp (92%) diff --git a/.gitignore b/.gitignore index db4b656ba..dc6e1bf7e 100644 --- a/.gitignore +++ b/.gitignore @@ -356,8 +356,8 @@ healthchecksdb /src/InfiniFrame.NativeBridge/Native/cmake-build-release-linux/ /src/InfiniFrame.NativeBridge/Native/cmake-build-release-linux-wsl/ /src/InfiniFrame.NativeBridge/Native/cmake-build-release-windows/ -/src/InfiniFrame.NativeBridge/Native/Embedded/InfiniFrameJs/InfiniFrameJs.cpp -/src/InfiniFrame.NativeBridge/Native/Embedded/InfiniFrameJs/InfiniFrameJs.h +/src/InfiniFrame.NativeBridge/Native/src/Embedded/InfiniFrameJs/InfiniFrameJs.cpp +/src/InfiniFrame.NativeBridge/Native/src/Embedded/InfiniFrameJs/InfiniFrameJs.h # wwwroot folders from js web based projects /examples/InfiniFrameExample.WebApp.React/wwwroot/ diff --git a/native-vendor-deps.json b/native-vendor-deps.json index e9d736af1..b639bc384 100644 --- a/native-vendor-deps.json +++ b/native-vendor-deps.json @@ -7,18 +7,18 @@ "assets": [ { "asset": "simdjson.h", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.h" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.h" }, { "asset": "simdjson.cpp", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.cpp" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.cpp" } ], "source_files": [], "license_files": [ { "source": "https://raw.githubusercontent.com/simdjson/simdjson/{tag}/LICENSE", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/LICENSE" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/LICENSE" } ] }, @@ -29,26 +29,26 @@ "assets": [ { "asset": "simdutf.h", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.h" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.h" }, { "asset": "simdutf.cpp", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.cpp" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.cpp" }, { "asset": "simdutf_c.h", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf_c.h" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf_c.h" } ], "source_files": [], "license_files": [ { "source": "https://raw.githubusercontent.com/simdutf/simdutf/{tag}/LICENSE-MIT", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-MIT" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-MIT" }, { "source": "https://raw.githubusercontent.com/simdutf/simdutf/{tag}/LICENSE-APACHE", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-APACHE" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-APACHE" } ] }, @@ -60,17 +60,17 @@ "source_files": [ { "source": "https://raw.githubusercontent.com/mohabouje/WinToast/{tag}/include/wintoastlib.h", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.h" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.h" }, { "source": "https://raw.githubusercontent.com/mohabouje/WinToast/{tag}/src/wintoastlib.cpp", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.cpp" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.cpp" } ], "license_files": [ { "source": "https://raw.githubusercontent.com/mohabouje/WinToast/{tag}/LICENSE.txt", - "destination": "src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/LICENSE.txt" + "destination": "src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/LICENSE.txt" } ] } diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.Impl.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.Impl.cmake index c8dbf964f..98a514271 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.Impl.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.Impl.cmake @@ -38,7 +38,7 @@ file(WRITE "${OUTPUT_SOURCE}" "// ---------------------------------------------- // Generated at: ${GENERATED_AT} // ----------------------------------------------------------------------------- -#include \"Embedded/InfiniFrameJs/InfiniFrameJs.h\" +#include \"src/Embedded/InfiniFrameJs/InfiniFrameJs.h\" alignas(16) const unsigned char GInfiniframeJsData[] = {${BYTES}}; diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.cmake index c070b48e2..68ee86191 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/Embed.InfiniFrameJs.cmake @@ -1,4 +1,4 @@ -function(infiniframe_setup_embed_js target_name) +function(infiniframe_setup_embed_js target_name) get_filename_component(native_dir "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/.." ABSOLUTE) get_filename_component(native_bridge_dir "${native_dir}/.." ABSOLUTE) get_filename_component(src_dir "${native_bridge_dir}/.." ABSOLUTE) @@ -18,7 +18,7 @@ set(js_input "${js_project_dir}/wwwroot/InfiniFrame.js") - set(embed_dir "${CMAKE_SOURCE_DIR}/Embedded/InfiniFrameJs") + set(embed_dir "${CMAKE_SOURCE_DIR}/src/Embedded/InfiniFrameJs") set(header_output "${embed_dir}/InfiniFrameJs.h") set(source_output "${embed_dir}/InfiniFrameJs.cpp") diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake index 5a853febb..40b413a12 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake @@ -216,15 +216,15 @@ endfunction() # - `INFINIFRAME_WINDOWS_ARCH_DIR` function(infiniframe_setup_dependencies) message(STATUS "Setting up InfiniFrame native dependencies") - infiniframe_add_vendor_static_library("simdjson" "${CMAKE_SOURCE_DIR}/Dependencies/simdjson" "simdjson.cpp" "simdjson.h") - infiniframe_add_vendor_static_library("simdutf" "${CMAKE_SOURCE_DIR}/Dependencies/simdutf" "simdutf.cpp" "simdutf.h") + infiniframe_add_vendor_static_library("simdjson" "${CMAKE_SOURCE_DIR}/src/Dependencies/simdjson" "simdjson.cpp" "simdjson.h") + infiniframe_add_vendor_static_library("simdutf" "${CMAKE_SOURCE_DIR}/src/Dependencies/simdutf" "simdutf.cpp" "simdutf.h") if (NOT WIN32) message(STATUS "Windows-specific dependencies skipped on non-Windows host") return() endif () - infiniframe_add_vendor_static_library("wintoastlib" "${CMAKE_SOURCE_DIR}/Dependencies/wintoastlib" "wintoastlib.cpp" "wintoastlib.h") + infiniframe_add_vendor_static_library("wintoastlib" "${CMAKE_SOURCE_DIR}/src/Dependencies/wintoastlib" "wintoastlib.cpp" "wintoastlib.h") set(_packages_config_path "${CMAKE_SOURCE_DIR}/packages.config") if (NOT EXISTS "${_packages_config_path}") diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Linux.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Linux.cmake index 65eb1aaec..4f388c370 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Linux.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Linux.cmake @@ -32,6 +32,7 @@ function(infiniframe_configure_linux_target target_name common_sources test_sour target_include_directories(${target_name} PRIVATE "${CMAKE_SOURCE_DIR}" + "${CMAKE_SOURCE_DIR}/src" ${GTK3_INCLUDE_DIRS} ${WEBKIT2_INCLUDE_DIRS} ${LIBNOTIFY_INCLUDE_DIRS} diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.MacOS.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.MacOS.cmake index 90f94f39d..4d74d7bbe 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.MacOS.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.MacOS.cmake @@ -18,7 +18,10 @@ function(infiniframe_configure_macos_target target_name common_sources test_sour LANGUAGE OBJCXX ) - target_include_directories(${target_name} PRIVATE "${CMAKE_SOURCE_DIR}") + target_include_directories(${target_name} PRIVATE + "${CMAKE_SOURCE_DIR}" + "${CMAKE_SOURCE_DIR}/src" + ) set_target_properties(${target_name} PROPERTIES PREFIX "" diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Windows.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Windows.cmake index 9d327792c..c1cb1f146 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Windows.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/Platform.Windows.cmake @@ -23,6 +23,7 @@ function(infiniframe_configure_windows_target target_name common_sources test_so target_include_directories(${target_name} PRIVATE "${CMAKE_SOURCE_DIR}" + "${CMAKE_SOURCE_DIR}/src" ) target_link_libraries(${target_name} PRIVATE @@ -67,4 +68,4 @@ function(infiniframe_configure_windows_target target_name common_sources test_so "$/WebView2Loader.dll" COMMENT "Copying WebView2Loader.dll" ) -endfunction() \ No newline at end of file +endfunction() diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index bc96b66a3..bde501144 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -34,122 +34,122 @@ infiniframe_setup_dependencies() # Source Files # ---------------------------------------------------------------------------------------------------------------------- set(COMMON_SOURCES - Platform/Shared/WindowEvents.cpp - Platform/Shared/WindowState.cpp - Public/Exports/Exports.Dialog.cpp - Public/Exports/Exports.Events.cpp - Public/Exports/Exports.Lifecycle.cpp - Public/Exports/Exports.Memory.cpp - Public/Exports/Exports.Platform.cpp - Public/Exports/Exports.WindowCommands.cpp - Public/Exports/Exports.WindowState.cpp + src/Runtime/Shared/Window/WindowEvents.cpp + src/Runtime/Shared/Window/WindowState.cpp + src/Api/Exports/Exports.Dialog.cpp + src/Api/Exports/Exports.Events.cpp + src/Api/Exports/Exports.Lifecycle.cpp + src/Api/Exports/Exports.Memory.cpp + src/Api/Exports/Exports.Platform.cpp + src/Api/Exports/Exports.WindowCommands.cpp + src/Api/Exports/Exports.WindowState.cpp ) set(TEST_SOURCES - Public/Exports/Testing/Exports.Tests.cpp + src/Api/Testing/Exports.Tests.cpp ) set(WINDOWS_SOURCES - Platform/Windows/DarkMode.h - Platform/Windows/ToastHandler.h - Platform/Windows/Window.Win32.Context.h - Platform/Windows/Window.Win32.Internal.h + src/Runtime/Platform/Windows/DarkMode.h + src/Runtime/Platform/Windows/ToastHandler.h + src/Runtime/Platform/Windows/Window.Win32.Context.h + src/Runtime/Platform/Windows/Window.Win32.Internal.h - Platform/Windows/Core/UiDispatcher.Win32.cpp - Platform/Windows/Core/WindowCore.Win32.cpp - Platform/Windows/Core/WindowEncoding.Win32.cpp - Platform/Windows/Core/WindowLifecycle.Win32.cpp - Platform/Windows/Core/WindowOwnership.Win32.cpp - Platform/Windows/Core/WindowProc.Win32.cpp - Platform/Windows/Core/WindowState.Win32.cpp - Platform/Windows/Core/WindowStorage.Win32.cpp - Platform/Windows/Core/WindowTracing.Win32.cpp - Platform/Windows/DarkMode.cpp - Platform/Windows/Dialog.cpp - Platform/Windows/Dpi.Win32.cpp - Platform/Windows/Monitors.Win32.cpp - Platform/Windows/Notifications.WinToast.cpp - Platform/Windows/WebView/WebView2Attach.Win32.cpp - Platform/Windows/WebView/WebView2Controller.Win32.cpp - Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp - Platform/Windows/WebView/WebView2Host.Win32.cpp - Platform/Windows/WebView/WebView2Runtime.Win32.cpp - Platform/Windows/WebView/WebView2Settings.Win32.cpp + src/Runtime/Platform/Windows/Core/UiDispatcher.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowCore.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowEncoding.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowLifecycle.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowOwnership.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowProc.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowState.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowStorage.Win32.cpp + src/Runtime/Platform/Windows/Core/WindowTracing.Win32.cpp + src/Runtime/Platform/Windows/DarkMode.cpp + src/Runtime/Platform/Windows/Dialog.cpp + src/Runtime/Platform/Windows/Dpi.Win32.cpp + src/Runtime/Platform/Windows/Monitors.Win32.cpp + src/Runtime/Platform/Windows/Notifications.WinToast.cpp + src/Runtime/Platform/Windows/WebView/WebView2Attach.Win32.cpp + src/Runtime/Platform/Windows/WebView/WebView2Controller.Win32.cpp + src/Runtime/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp + src/Runtime/Platform/Windows/WebView/WebView2Host.Win32.cpp + src/Runtime/Platform/Windows/WebView/WebView2Runtime.Win32.cpp + src/Runtime/Platform/Windows/WebView/WebView2Settings.Win32.cpp ) set(LINUX_SOURCES - Platform/Linux/WebKit/WebKit.Gtk.Internal.h - Platform/Linux/Window.Gtk.Internal.h + src/Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h + src/Runtime/Platform/Linux/Window.Gtk.Internal.h - Platform/Linux/Core/UiDispatcher.Gtk.cpp - Platform/Linux/Core/WindowCore.Gtk.cpp - Platform/Linux/Core/WindowEvents.Gtk.cpp - Platform/Linux/Core/WindowInitialization.Gtk.cpp - Platform/Linux/Core/WindowLifecycle.Gtk.cpp - Platform/Linux/Core/WindowSignals.Gtk.cpp - Platform/Linux/Core/WindowState.Gtk.cpp - Platform/Linux/Dialog.cpp - Platform/Linux/Monitors.Gtk.cpp - Platform/Linux/Notifications.LibNotify.cpp - Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp - Platform/Linux/WebKit/WebKitHost.Gtk.cpp - Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp - Platform/Linux/WebKit/WebKitSettings.Gtk.cpp + src/Runtime/Platform/Linux/Core/UiDispatcher.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowCore.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowEvents.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowInitialization.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowLifecycle.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowSignals.Gtk.cpp + src/Runtime/Platform/Linux/Core/WindowState.Gtk.cpp + src/Runtime/Platform/Linux/Dialog.cpp + src/Runtime/Platform/Linux/Monitors.Gtk.cpp + src/Runtime/Platform/Linux/Notifications.LibNotify.cpp + src/Runtime/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp + src/Runtime/Platform/Linux/WebKit/WebKitHost.Gtk.cpp + src/Runtime/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp + src/Runtime/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp ) set(MAC_SOURCES - Platform/Mac/Delegates/AppDelegate.h - Platform/Mac/Delegates/NavigationDelegate.h - Platform/Mac/Delegates/UiDelegate.h - Platform/Mac/Delegates/UrlSchemeHandler.h - Platform/Mac/Delegates/WindowDelegate.h - Platform/Mac/NSWindowBorderless.h - Platform/Mac/Window.Cocoa.Internal.h + src/Runtime/Platform/Mac/Delegates/AppDelegate.h + src/Runtime/Platform/Mac/Delegates/NavigationDelegate.h + src/Runtime/Platform/Mac/Delegates/UiDelegate.h + src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.h + src/Runtime/Platform/Mac/Delegates/WindowDelegate.h + src/Runtime/Platform/Mac/NSWindowBorderless.h + src/Runtime/Platform/Mac/Window.Cocoa.Internal.h - Platform/Mac/Core/UiDispatcher.Cocoa.mm - Platform/Mac/Core/WindowCore.Cocoa.mm - Platform/Mac/Core/WindowEvents.Cocoa.mm - Platform/Mac/Core/WindowLifecycle.Cocoa.mm - Platform/Mac/Core/WindowState.Cocoa.mm - Platform/Mac/Delegates/AppDelegate.mm - Platform/Mac/Delegates/NavigationDelegate.mm - Platform/Mac/Delegates/UiDelegate.mm - Platform/Mac/Delegates/UrlSchemeHandler.mm - Platform/Mac/Delegates/WindowDelegate.mm - Platform/Mac/Dialog.mm - Platform/Mac/Monitors.Cocoa.mm - Platform/Mac/NSWindowBorderless.mm - Platform/Mac/Notifications.UserNotifications.mm - Platform/Mac/WebKit/WebKitBridge.Cocoa.mm - Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm - Platform/Mac/WebKit/WebKitHost.Cocoa.mm + src/Runtime/Platform/Mac/Core/UiDispatcher.Cocoa.mm + src/Runtime/Platform/Mac/Core/WindowCore.Cocoa.mm + src/Runtime/Platform/Mac/Core/WindowEvents.Cocoa.mm + src/Runtime/Platform/Mac/Core/WindowLifecycle.Cocoa.mm + src/Runtime/Platform/Mac/Core/WindowState.Cocoa.mm + src/Runtime/Platform/Mac/Delegates/AppDelegate.mm + src/Runtime/Platform/Mac/Delegates/NavigationDelegate.mm + src/Runtime/Platform/Mac/Delegates/UiDelegate.mm + src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.mm + src/Runtime/Platform/Mac/Delegates/WindowDelegate.mm + src/Runtime/Platform/Mac/Dialog.mm + src/Runtime/Platform/Mac/Monitors.Cocoa.mm + src/Runtime/Platform/Mac/NSWindowBorderless.mm + src/Runtime/Platform/Mac/Notifications.UserNotifications.mm + src/Runtime/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm + src/Runtime/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm + src/Runtime/Platform/Mac/WebKit/WebKitHost.Cocoa.mm ) set(HEADER_FILES - Embedded/Embedded.h - Embedded/InfiniFrameJs/InfiniFrameJs.h - Platform/Shared/CustomSchemeResponse.h - Public/Exports/Exports.h - Public/Exports/Utilities/ExportErrorState.h - Public/Exports/Utilities/ExportExecution.h - Public/Exports/Utilities/ExportStringHelpers.h - Public/Exports/Utilities/ExportValidation.h - Public/Exports/Utilities/Utilities.h - Public/InfiniFrame.h - Public/InfiniFrameDialog.h - Public/InfiniFrameInitParams.h - Public/InfiniFrameWindow.h - Types/Basic.h - Types/Callbacks.h - Types/DialogButtons.h - Types/DialogIcon.h - Types/DialogResult.h - Types/Monitor.h - Utils/Dimensions.h - Utils/ErrorCode.h - Utils/InteropStatus.h - Utils/StringArrayCopy.h - Utils/StringCopy.h + src/Embedded/Embedded.h + src/Embedded/InfiniFrameJs/InfiniFrameJs.h + src/Runtime/Shared/WebView/CustomSchemeResponse.h + src/Api/Exports/Exports.h + src/Api/Utilities/ExportErrorState.h + src/Api/Utilities/ExportExecution.h + src/Api/Utilities/ExportStringHelpers.h + src/Api/Utilities/ExportValidation.h + src/Api/Utilities/Utilities.h + src/Runtime/Shared/Window/InfiniFrame.h + src/Runtime/Shared/Window/InfiniFrameDialog.h + src/Runtime/Shared/Window/InfiniFrameInitParams.h + src/Runtime/Shared/Window/InfiniFrameWindow.h + src/Runtime/Shared/Types/Basic.h + src/Runtime/Shared/Types/Callbacks.h + src/Runtime/Shared/Types/DialogButtons.h + src/Runtime/Shared/Types/DialogIcon.h + src/Runtime/Shared/Types/DialogResult.h + src/Runtime/Shared/Types/Monitor.h + src/Runtime/Shared/Utilities/Dimensions.h + src/Runtime/Shared/Utilities/ErrorCode.h + src/Runtime/Shared/Utilities/InteropStatus.h + src/Runtime/Shared/Utilities/StringArrayCopy.h + src/Runtime/Shared/Utilities/StringCopy.h ) if (WIN32) diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h b/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h deleted file mode 100644 index 57244e105..000000000 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrame.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#include "Public/InfiniFrameInitParams.h" -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameDialog.h" - -#include "Types/Basic.h" -#include "Types/Callbacks.h" - -#include "Utils/Dimensions.h" -#include "Utils/StringCopy.h" diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Dialog.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Dialog.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp index f2b2fea22..323f66c77 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Dialog.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Events.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Events.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp index b124e901c..c4872c1f4 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Events.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Lifecycle.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Lifecycle.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp index 7da18814d..370bd2996 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Lifecycle.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Memory.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Memory.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp index d247f81a0..e23c9281a 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Memory.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Platform.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Platform.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp index 3befe9168..0ddefd4c8 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.Platform.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowCommands.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowCommands.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp index 4d3819fd8..59fe3ba4b 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowCommands.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowState.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowState.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp index feb3d39b3..029804e35 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.WindowState.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/Exports/Exports.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h index 588ba3098..795933ff9 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Exports.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h @@ -12,9 +12,9 @@ #define EXPORTED #endif -#include "Types/Basic.h" -#include "Utils/InteropStatus.h" -#include "Public/Exports/Utilities/Utilities.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Utilities/InteropStatus.h" +#include "Api/Utilities/Utilities.h" // --------------------------------------------------------------------------------------------------------------------- // String Ownership Contract diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Testing/Exports.Tests.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Testing/Exports.Tests.cpp index e8e2a5d9e..71f640366 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Testing/Exports.Tests.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Testing/Exports.Tests.cpp @@ -1,8 +1,8 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/InfiniFrame.h" -#include "Public/Exports/Exports.h" +#include "Runtime/Shared/Window/InfiniFrame.h" +#include "Api/Exports/Exports.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportErrorState.h similarity index 92% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportErrorState.h index 3c5dc003a..c545c3481 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportErrorState.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportErrorState.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- @@ -16,9 +16,9 @@ #include #include -#include "Public/InfiniFrame.h" -#include "Utils/InteropStatus.h" -#include "Public/Exports/Utilities/ExportStringHelpers.h" +#include "Runtime/Shared/Window/InfiniFrame.h" +#include "Runtime/Shared/Utilities/InteropStatus.h" +#include "Api/Utilities/ExportStringHelpers.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportExecution.h similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportExecution.h index 610a713c9..16b834a20 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportExecution.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportExecution.h @@ -1,12 +1,12 @@ -#pragma once +#pragma once // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- #include #include -#include "Public/InfiniFrame.h" -#include "Utils/InteropStatus.h" +#include "Runtime/Shared/Window/InfiniFrame.h" +#include "Runtime/Shared/Utilities/InteropStatus.h" #include "ExportErrorState.h" #include "ExportValidation.h" // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportStringHelpers.h similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportStringHelpers.h index e1b740518..6d60c1d1a 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportStringHelpers.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportStringHelpers.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- @@ -12,7 +12,7 @@ #include -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportValidation.h similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportValidation.h index 3054a3c25..41d41ecb0 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/ExportValidation.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/ExportValidation.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- @@ -16,8 +16,8 @@ #include #include -#include "Public/InfiniFrame.h" -#include "Utils/InteropStatus.h" +#include "Runtime/Shared/Window/InfiniFrame.h" +#include "Runtime/Shared/Utilities/InteropStatus.h" #include "ExportErrorState.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/Utilities.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Public/Exports/Utilities/Utilities.h rename to src/InfiniFrame.NativeBridge/Native/src/Api/Utilities/Utilities.h diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/VENDORING.md b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/VENDORING.md similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/VENDORING.md rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/VENDORING.md diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/LICENSE b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/LICENSE similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/LICENSE rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/LICENSE diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.cpp b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.cpp similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.cpp diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.h b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdjson/simdjson.h rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdjson/simdjson.h diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-APACHE b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-APACHE similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-APACHE rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-APACHE diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-MIT b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-MIT similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/LICENSE-MIT rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/LICENSE-MIT diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.cpp b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.cpp similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.cpp diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.h b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf.h rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf.h diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf_c.h b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf_c.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/simdutf/simdutf_c.h rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/simdutf/simdutf_c.h diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/LICENSE.txt b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/LICENSE.txt similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/LICENSE.txt rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/LICENSE.txt diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.cpp b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.cpp similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.cpp diff --git a/src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.h b/src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Dependencies/wintoastlib/wintoastlib.h rename to src/InfiniFrame.NativeBridge/Native/src/Dependencies/wintoastlib/wintoastlib.h diff --git a/src/InfiniFrame.NativeBridge/Native/Embedded/Embedded.h b/src/InfiniFrame.NativeBridge/Native/src/Embedded/Embedded.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Embedded/Embedded.h rename to src/InfiniFrame.NativeBridge/Native/src/Embedded/Embedded.h diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/UiDispatcher.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/UiDispatcher.Gtk.cpp similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/UiDispatcher.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/UiDispatcher.Gtk.cpp index 03680e670..459a51af0 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/UiDispatcher.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/UiDispatcher.Gtk.cpp @@ -4,7 +4,7 @@ #include #include -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowCore.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowCore.Gtk.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowCore.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowCore.Gtk.cpp index bf9d21bb1..20b0fee71 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowCore.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowCore.Gtk.cpp @@ -7,7 +7,7 @@ #include #include -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowEvents.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowEvents.Gtk.cpp similarity index 94% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowEvents.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowEvents.Gtk.cpp index c705b409e..f180e27f7 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowEvents.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowEvents.Gtk.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowInitialization.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowInitialization.Gtk.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowInitialization.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowInitialization.Gtk.cpp index 246a1018b..081b9595f 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowInitialization.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowInitialization.Gtk.cpp @@ -4,8 +4,8 @@ #include #include -#include "Public/InfiniFrameDialog.h" -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Shared/Window/InfiniFrameDialog.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowLifecycle.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowLifecycle.Gtk.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowLifecycle.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowLifecycle.Gtk.cpp index e2f1c51e8..e477cba6c 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowLifecycle.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowLifecycle.Gtk.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowSignals.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowSignals.Gtk.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowSignals.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowSignals.Gtk.cpp index 7038925d2..35770c9aa 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowSignals.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowSignals.Gtk.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowState.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowState.Gtk.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowState.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowState.Gtk.cpp index db5453115..6f4d3adba 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Core/WindowState.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Core/WindowState.Gtk.cpp @@ -4,8 +4,8 @@ #include #include -#include "Utils/StringCopy.h" -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Shared/Utilities/StringCopy.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Dialog.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Dialog.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Dialog.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Dialog.cpp index 31874bf7a..6d0b11497 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Dialog.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Dialog.cpp @@ -3,8 +3,8 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Public/InfiniFrameDialog.h" -#include "Utils/StringArrayCopy.h" +#include "Runtime/Shared/Window/InfiniFrameDialog.h" +#include "Runtime/Shared/Utilities/StringArrayCopy.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Monitors.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Monitors.Gtk.cpp similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Monitors.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Monitors.Gtk.cpp index 717c5b9ff..80c06ebef 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Monitors.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Monitors.Gtk.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Notifications.LibNotify.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Notifications.LibNotify.cpp similarity index 94% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Notifications.LibNotify.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Notifications.LibNotify.cpp index a5cf29a3c..fa17ede0f 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Notifications.LibNotify.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Notifications.LibNotify.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKit.Gtk.Internal.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKit.Gtk.Internal.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp index 08fb18952..1b7303092 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitCustomSchemes.Gtk.cpp @@ -4,8 +4,8 @@ #include #include -#include "Platform/Linux/Window.Gtk.Internal.h" -#include "Platform/Linux/WebKit/WebKit.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitHost.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitHost.Gtk.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitHost.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitHost.Gtk.cpp index fa73e3027..f51bb9f09 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitHost.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitHost.Gtk.cpp @@ -8,8 +8,8 @@ #include #include "Embedded/Embedded.h" -#include "Platform/Linux/WebKit/WebKit.Gtk.Internal.h" -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp index 981322b9a..93d43876e 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitMessaging.Gtk.cpp @@ -4,9 +4,9 @@ #include #include -#include "Types/Basic.h" -#include "Types/Callbacks.h" -#include "Platform/Linux/WebKit/WebKit.Gtk.Internal.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/Callbacks.h" +#include "Runtime/Platform/Linux/WebKit/WebKit.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp index 40c0da1e8..4fc2076b6 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/WebKit/WebKitSettings.Gtk.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Linux/Window.Gtk.Internal.h" +#include "Runtime/Platform/Linux/Window.Gtk.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Window.Gtk.Internal.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Window.Gtk.Internal.h similarity index 94% rename from src/InfiniFrame.NativeBridge/Native/Platform/Linux/Window.Gtk.Internal.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Window.Gtk.Internal.h index 2e8b11c4a..00ad4f656 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Linux/Window.Gtk.Internal.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Linux/Window.Gtk.Internal.h @@ -8,8 +8,8 @@ #include #include -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameWindowImpl.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindowImpl.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/UiDispatcher.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/UiDispatcher.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/UiDispatcher.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/UiDispatcher.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowCore.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowCore.Cocoa.mm similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowCore.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowCore.Cocoa.mm index d77b661a0..552fe9e78 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowCore.Cocoa.mm +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowCore.Cocoa.mm @@ -5,8 +5,8 @@ #include #include "../Delegates/AppDelegate.h" -#include "../../../Public/InfiniFrameDialog.h" -#include "../../../Public/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameDialog.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" #include "../NSWindowBorderless.h" #include "../Window.Cocoa.Internal.h" #include "../Delegates/WindowDelegate.h" diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowEvents.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowEvents.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowEvents.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowEvents.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowLifecycle.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowLifecycle.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowLifecycle.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowLifecycle.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowState.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowState.Cocoa.mm similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowState.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowState.Cocoa.mm index b23740d6e..dfac509a6 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Core/WindowState.Cocoa.mm +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Core/WindowState.Cocoa.mm @@ -4,7 +4,7 @@ #include "../Window.Cocoa.Internal.h" -#include "Utils/StringCopy.h" +#include "Runtime/Shared/Utilities/StringCopy.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/AppDelegate.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/AppDelegate.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/AppDelegate.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/AppDelegate.h diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/AppDelegate.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/AppDelegate.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/AppDelegate.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/AppDelegate.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/NavigationDelegate.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/NavigationDelegate.h similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/NavigationDelegate.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/NavigationDelegate.h index 49cf13413..d28fa2795 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/NavigationDelegate.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/NavigationDelegate.h @@ -7,7 +7,7 @@ * @file NavigationDelegate.h * @brief WKNavigationDelegate that handles TLS certificate validation for the embedded WebView */ -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/NavigationDelegate.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/NavigationDelegate.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/NavigationDelegate.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/NavigationDelegate.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UiDelegate.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UiDelegate.h similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UiDelegate.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UiDelegate.h index ab58939df..39437541e 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UiDelegate.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UiDelegate.h @@ -7,7 +7,7 @@ * @file UiDelegate.h * @brief WKUIDelegate and WKScriptMessageHandler that routes JavaScript messages to the .NET layer */ -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UiDelegate.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UiDelegate.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UiDelegate.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UiDelegate.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UrlSchemeHandler.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.h similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UrlSchemeHandler.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.h index b339399e3..9e83d1c20 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UrlSchemeHandler.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.h @@ -7,7 +7,7 @@ * @file UrlSchemeHandler.h * @brief WKURLSchemeHandler that intercepts custom-scheme requests and serves responses from the .NET layer */ -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UrlSchemeHandler.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/UrlSchemeHandler.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/UrlSchemeHandler.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/WindowDelegate.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/WindowDelegate.h similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/WindowDelegate.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/WindowDelegate.h index 111c41d18..5457d8881 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/WindowDelegate.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/WindowDelegate.h @@ -7,7 +7,7 @@ * @file WindowDelegate.h * @brief NSWindow delegate that forwards window lifecycle events to InfiniFrameWindow callbacks */ -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/WindowDelegate.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/WindowDelegate.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Delegates/WindowDelegate.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Delegates/WindowDelegate.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Dialog.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Dialog.mm similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Dialog.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Dialog.mm index e462116ce..89eac57af 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Dialog.mm +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Dialog.mm @@ -7,7 +7,7 @@ * @brief macOS implementation of InfiniFrameDialog using NSOpenPanel, NSSavePanel, and NSAlert */ -#import "Public/InfiniFrameDialog.h" +#import "Runtime/Shared/Window/InfiniFrameDialog.h" #if defined(VSTGUI_USE_OBJC_UTTYPE) #import diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Monitors.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Monitors.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Monitors.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Monitors.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/NSWindowBorderless.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/NSWindowBorderless.h similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/NSWindowBorderless.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/NSWindowBorderless.h index 96cd4c49b..d897b54c0 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/NSWindowBorderless.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/NSWindowBorderless.h @@ -10,7 +10,7 @@ * Used when InfiniFrameInitParams::Transparent is set, allowing the WebView to render * over a fully transparent window background without the standard title bar and borders */ -#include "Public/InfiniFrame.h" +#include "Runtime/Shared/Window/InfiniFrame.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/NSWindowBorderless.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/NSWindowBorderless.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/NSWindowBorderless.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/NSWindowBorderless.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Notifications.UserNotifications.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Notifications.UserNotifications.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Notifications.UserNotifications.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Notifications.UserNotifications.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitBridge.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitCustomSchemes.Cocoa.mm diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitHost.Cocoa.mm b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitHost.Cocoa.mm similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitHost.Cocoa.mm rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitHost.Cocoa.mm index a877de600..07cbcb03b 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/WebKit/WebKitHost.Cocoa.mm +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/WebKit/WebKitHost.Cocoa.mm @@ -2,7 +2,7 @@ // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "../../../Embedded/Embedded.h" +#include "Embedded/Embedded.h" #include "../Delegates/NavigationDelegate.h" #include "../Delegates/UiDelegate.h" #include "../Window.Cocoa.Internal.h" diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Window.Cocoa.Internal.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Window.Cocoa.Internal.h similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/Platform/Mac/Window.Cocoa.Internal.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Window.Cocoa.Internal.h index f5175a7d3..40bde836a 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Mac/Window.Cocoa.Internal.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Mac/Window.Cocoa.Internal.h @@ -9,8 +9,8 @@ #include #include -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameWindowImpl.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindowImpl.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/UiDispatcher.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/UiDispatcher.Win32.cpp similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/UiDispatcher.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/UiDispatcher.Win32.cpp index 73ed74e62..55d126e33 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/UiDispatcher.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/UiDispatcher.Win32.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include "chrono" -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowCore.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowCore.Win32.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowCore.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowCore.Win32.cpp index 3845f0cbc..6cbc79f59 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowCore.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowCore.Win32.cpp @@ -5,8 +5,8 @@ #include #include -#include "Platform/Windows/DarkMode.h" -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/DarkMode.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowEncoding.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowEncoding.Win32.cpp similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowEncoding.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowEncoding.Win32.cpp index fa35407f7..72775e1f9 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowEncoding.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowEncoding.Win32.cpp @@ -4,7 +4,7 @@ #include #include -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowLifecycle.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowLifecycle.Win32.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowLifecycle.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowLifecycle.Win32.cpp index f428762a9..2c8f875dd 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowLifecycle.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowLifecycle.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowOwnership.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowOwnership.Win32.cpp similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowOwnership.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowOwnership.Win32.cpp index 39f9941e1..2fd2a246e 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowOwnership.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowOwnership.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowProc.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowProc.Win32.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowProc.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowProc.Win32.cpp index fdf3a3517..3b340d2b9 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowProc.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowProc.Win32.cpp @@ -1,8 +1,8 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/DarkMode.h" -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/DarkMode.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowState.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowState.Win32.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowState.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowState.Win32.cpp index 034166081..e46fbb9ff 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowState.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowState.Win32.cpp @@ -3,8 +3,8 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Windows/Window.Win32.Internal.h" -#include "Utils/StringCopy.h" +#include "Runtime/Platform/Windows/Window.Win32.Internal.h" +#include "Runtime/Shared/Utilities/StringCopy.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowStorage.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowStorage.Win32.cpp similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowStorage.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowStorage.Win32.cpp index d2777d8b3..a1a47ed6f 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowStorage.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowStorage.Win32.cpp @@ -4,7 +4,7 @@ #include #include -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowTracing.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowTracing.Win32.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowTracing.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowTracing.Win32.cpp index ba6991405..1ac906cbe 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Core/WindowTracing.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Core/WindowTracing.Win32.cpp @@ -6,7 +6,7 @@ #include #include -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/DarkMode.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/DarkMode.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/DarkMode.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/DarkMode.cpp index a39844573..1e8b7a99d 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/DarkMode.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/DarkMode.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Windows/DarkMode.h" +#include "Runtime/Platform/Windows/DarkMode.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/DarkMode.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/DarkMode.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/DarkMode.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/DarkMode.h diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dialog.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dialog.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dialog.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dialog.cpp index 8158c717b..217b6c198 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dialog.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dialog.cpp @@ -1,8 +1,8 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/InfiniFrame.h" -#include "Utils/StringArrayCopy.h" +#include "Runtime/Shared/Window/InfiniFrame.h" +#include "Runtime/Shared/Utilities/StringArrayCopy.h" #include #include diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dpi.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dpi.Win32.cpp similarity index 90% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dpi.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dpi.Win32.cpp index f14fe99a0..b028bf8d6 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Dpi.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Dpi.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Internal.h" +#include "Runtime/Platform/Windows/Window.Win32.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Monitors.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Monitors.Win32.cpp similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Monitors.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Monitors.Win32.cpp index d95a66df4..4a4f3725c 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Monitors.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Monitors.Win32.cpp @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Windows/Window.Win32.Internal.h" +#include "Runtime/Platform/Windows/Window.Win32.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Notifications.WinToast.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Notifications.WinToast.cpp similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Notifications.WinToast.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Notifications.WinToast.cpp index c249e1759..16912410d 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Notifications.WinToast.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Notifications.WinToast.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/ToastHandler.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/ToastHandler.h similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/ToastHandler.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/ToastHandler.h index 17b87b40c..0d7def487 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/ToastHandler.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/ToastHandler.h @@ -4,7 +4,7 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Public/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" #include "Dependencies/wintoastlib/wintoastlib.h" // --------------------------------------------------------------------------------------------------------------------- // Code diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Attach.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Attach.Win32.cpp similarity index 99% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Attach.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Attach.Win32.cpp index ac074d59c..8939f4e15 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Attach.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Attach.Win32.cpp @@ -8,7 +8,7 @@ #include #include "Embedded/Embedded.h" -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Controller.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Controller.Win32.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Controller.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Controller.Win32.cpp index 25b25a07b..af46408ca 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Controller.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Controller.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp index b61e30625..f614b462a 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2CustomSchemes.Win32.cpp @@ -3,8 +3,8 @@ // --------------------------------------------------------------------------------------------------------------------- #include -#include "Platform/Windows/Window.Win32.Context.h" -#include "Platform/Shared/CustomSchemeResponse.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Shared/WebView/CustomSchemeResponse.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Host.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Host.Win32.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Host.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Host.Win32.cpp index 26dda12b1..883e76376 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Host.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Host.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Runtime.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Runtime.Win32.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Runtime.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Runtime.Win32.cpp index a0c6320a6..959d742e5 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Runtime.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Runtime.Win32.cpp @@ -4,7 +4,7 @@ #pragma comment(lib, "Urlmon.lib") #include -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Settings.Win32.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Settings.Win32.cpp similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Settings.Win32.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Settings.Win32.cpp index 8c5b209a1..f2da80de6 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/WebView/WebView2Settings.Win32.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/WebView/WebView2Settings.Win32.cpp @@ -1,7 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Platform/Windows/Window.Win32.Context.h" +#include "Runtime/Platform/Windows/Window.Win32.Context.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Context.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Context.h similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Context.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Context.h index 38fb3bd89..831a1020d 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Context.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Context.h @@ -9,8 +9,8 @@ #include -#include "Public/InfiniFrameWindow.h" -#include "Platform/Windows/Window.Win32.Internal.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Platform/Windows/Window.Win32.Internal.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Internal.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Internal.h similarity index 92% rename from src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Internal.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Internal.h index d20c35587..22b648cfb 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Windows/Window.Win32.Internal.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Platform/Windows/Window.Win32.Internal.h @@ -10,10 +10,10 @@ #include #include -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameWindowImpl.h" -#include "Platform/Windows/ToastHandler.h" -#include "Utils/Dimensions.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindowImpl.h" +#include "Runtime/Platform/Windows/ToastHandler.h" +#include "Runtime/Shared/Utilities/Dimensions.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Types/Basic.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Basic.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/Basic.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Basic.h diff --git a/src/InfiniFrame.NativeBridge/Native/Types/Callbacks.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Callbacks.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/Callbacks.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Callbacks.h diff --git a/src/InfiniFrame.NativeBridge/Native/Types/DialogButtons.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogButtons.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/DialogButtons.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogButtons.h diff --git a/src/InfiniFrame.NativeBridge/Native/Types/DialogIcon.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogIcon.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/DialogIcon.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogIcon.h diff --git a/src/InfiniFrame.NativeBridge/Native/Types/DialogResult.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogResult.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/DialogResult.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/DialogResult.h diff --git a/src/InfiniFrame.NativeBridge/Native/Types/Monitor.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Monitor.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Types/Monitor.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Types/Monitor.h diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/Dimensions.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/Dimensions.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Utils/Dimensions.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/Dimensions.h diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/ErrorCode.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/ErrorCode.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Utils/ErrorCode.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/ErrorCode.h diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/InteropStatus.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Utils/InteropStatus.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/InteropStatus.h diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h index 5016e543b..4f182fe5a 100644 --- a/src/InfiniFrame.NativeBridge/Native/Utils/StringArrayCopy.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h @@ -5,7 +5,7 @@ #include #include -#include "Utils/StringCopy.h" +#include "Runtime/Shared/Utilities/StringCopy.h" // --------------------------------------------------------------------------------------------------------------------- // Owned string array allocation and free, consistent with StringCopy.h. // diff --git a/src/InfiniFrame.NativeBridge/Native/Utils/StringCopy.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringCopy.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Utils/StringCopy.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringCopy.h diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Shared/CustomSchemeResponse.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/WebView/CustomSchemeResponse.h similarity index 100% rename from src/InfiniFrame.NativeBridge/Native/Platform/Shared/CustomSchemeResponse.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/WebView/CustomSchemeResponse.h diff --git a/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrame.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrame.h new file mode 100644 index 000000000..ea9f8cdad --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrame.h @@ -0,0 +1,13 @@ +#pragma once +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Runtime/Shared/Window/InfiniFrameInitParams.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameDialog.h" + +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/Callbacks.h" + +#include "Runtime/Shared/Utilities/Dimensions.h" +#include "Runtime/Shared/Utilities/StringCopy.h" diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameDialog.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameDialog.h similarity index 94% rename from src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameDialog.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameDialog.h index fd2e5f33e..8afae91f2 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameDialog.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameDialog.h @@ -6,10 +6,10 @@ #include #endif -#include "Types/Basic.h" -#include "Types/DialogButtons.h" -#include "Types/DialogIcon.h" -#include "Types/DialogResult.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/DialogButtons.h" +#include "Runtime/Shared/Types/DialogIcon.h" +#include "Runtime/Shared/Types/DialogResult.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameInitParams.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameInitParams.h similarity index 96% rename from src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameInitParams.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameInitParams.h index 030d73e2c..a5f7405a3 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameInitParams.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameInitParams.h @@ -2,8 +2,8 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Types/Basic.h" -#include "Types/Callbacks.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/Callbacks.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindow.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h similarity index 98% rename from src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindow.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h index 3a03aeef2..8c235f6af 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindow.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h @@ -27,11 +27,11 @@ #include #include -#include "Types/Basic.h" -#include "Types/DialogButtons.h" -#include "Types/DialogIcon.h" -#include "Types/DialogResult.h" -#include "Types/Callbacks.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/DialogButtons.h" +#include "Runtime/Shared/Types/DialogIcon.h" +#include "Runtime/Shared/Types/DialogResult.h" +#include "Runtime/Shared/Types/Callbacks.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindowImpl.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindowImpl.h similarity index 95% rename from src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindowImpl.h rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindowImpl.h index 97eb28c2a..a427ab639 100644 --- a/src/InfiniFrame.NativeBridge/Native/Public/InfiniFrameWindowImpl.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindowImpl.h @@ -6,9 +6,9 @@ #include #include -#include "Types/Basic.h" -#include "Types/Callbacks.h" -#include "Public/InfiniFrameDialog.h" +#include "Runtime/Shared/Types/Basic.h" +#include "Runtime/Shared/Types/Callbacks.h" +#include "Runtime/Shared/Window/InfiniFrameDialog.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowEvents.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowEvents.cpp similarity index 97% rename from src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowEvents.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowEvents.cpp index 8b5c1f83f..a464e40be 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowEvents.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowEvents.cpp @@ -1,8 +1,8 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameWindowImpl.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindowImpl.h" // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- diff --git a/src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowState.cpp b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowState.cpp similarity index 92% rename from src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowState.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowState.cpp index e67c83393..1690896a5 100644 --- a/src/InfiniFrame.NativeBridge/Native/Platform/Shared/WindowState.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/WindowState.cpp @@ -1,9 +1,9 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- -#include "Public/InfiniFrameWindow.h" -#include "Public/InfiniFrameWindowImpl.h" -#include "Utils/StringCopy.h" +#include "Runtime/Shared/Window/InfiniFrameWindow.h" +#include "Runtime/Shared/Window/InfiniFrameWindowImpl.h" +#include "Runtime/Shared/Utilities/StringCopy.h" // --------------------------------------------------------------------------------------------------------------------- // Pure property getters that read from InfiniFrameWindowImpl fields with no // platform-specific logic. Shared across all platforms. From 24d89961996e9ac9708dca4d2210d09febbb51a1 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:19:36 +0200 Subject: [PATCH 05/13] Update `.gitattributes` to reflect the updated folder structure in `NativeBridge`. --- .gitattributes | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index 627dcc833..5e5a77124 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ -src/InfiniFrame.NativeBridge/Native/Dependencies/* linguist-vendored -src/InfiniFrame.NativeBridge/Native/Dependencies/**/* linguist-vendored +src/InfiniFrame.NativeBridge/Native/src/Dependencies/* linguist-vendored +src/InfiniFrame.NativeBridge/Native/src/Dependencies/**/* linguist-vendored *.sh text eol=lf .devcontainer/devcontainer.json text working-tree-encoding=UTF-8 eol=lf \ No newline at end of file From db4f7dae3fec9f929b7bba9d1c5d58f096383a15 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:31:47 +0200 Subject: [PATCH 06/13] Refactor: Replace `packages.config` with conditional `PackageReference`; update dependency resolution and scripts for better platform-specific handling. --- Directory.Packages.props | 6 +- .../InfiniFrame.NativeBridge.csproj | 10 +- .../Native/.cmake/NativeDependencies.cmake | 91 +++++++++---------- .../Native/packages.config | 5 - src/InfiniFrame.NativeBridge/native-build.ps1 | 16 +++- 5 files changed, 73 insertions(+), 55 deletions(-) delete mode 100644 src/InfiniFrame.NativeBridge/Native/packages.config diff --git a/Directory.Packages.props b/Directory.Packages.props index ee789ec54..51a2c6844 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -2,6 +2,8 @@ true + 1.0.3967.48 + 1.0.260126.7 @@ -26,6 +28,8 @@ + + @@ -38,4 +42,4 @@ - \ No newline at end of file + diff --git a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj index ee24b38d4..db0f6b9d1 100644 --- a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj +++ b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj @@ -39,6 +39,14 @@ + + @@ -165,7 +173,7 @@ Inputs="@(NativeSource)" Outputs="$(NativeStamp)"> - + diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake index 40b413a12..856fced36 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake @@ -5,8 +5,8 @@ # - `simdjson::simdjson` # - `simdutf::simdutf` # - `wintoastlib::wintoastlib` (Windows only) -# - Restores NuGet packages needed for Windows SDK-style dependencies. -# - Reads `packages.config` as the single source of truth for package versions. +# - Resolves NuGet packages needed for Windows SDK-style dependencies. +# - Uses versions passed from CMake cache vars. # - Resolves and creates imported interface targets: # - `webview2::sdk` (Windows only) # - `wil::headers` (Windows only) @@ -43,27 +43,19 @@ function(_infiniframe_resolve_base_dir out_var required_relative_path) set(${out_var} "${_resolved}" PARENT_SCOPE) endfunction() -# Read a NuGet package version from `packages.config`. +# Resolve package version from a required CMake cache variable. # Params: -# - packages_config: absolute path to `packages.config` # - package_id: package id as defined in `` +# - cmake_var_name: cache variable expected to contain the package version # - out_var: parent-scope variable receiving parsed version string -# Fails with `FATAL_ERROR` when the package/version entry is missing. -function(infiniframe_read_package_version packages_config package_id out_var) - message(STATUS "Reading package version for '${package_id}' from ${packages_config}") - file(READ "${packages_config}" _packages_content) - string(REPLACE "." "\\." _package_id_regex "${package_id}") - string( - REGEX MATCH - "]*id=\"${_package_id_regex}\"[^>]*version=\"([^\"]+)\"" - _match - "${_packages_content}" - ) - if (NOT CMAKE_MATCH_1) - message(FATAL_ERROR "${package_id} package version not found in ${packages_config}") +function(infiniframe_get_package_version package_id cmake_var_name out_var) + if (DEFINED ${cmake_var_name} AND NOT "${${cmake_var_name}}" STREQUAL "") + message(STATUS "Using ${package_id} version from -D${cmake_var_name}=${${cmake_var_name}}") + set(${out_var} "${${cmake_var_name}}" PARENT_SCOPE) + return() endif () - message(STATUS " ${package_id} version: ${CMAKE_MATCH_1}") - set(${out_var} "${CMAKE_MATCH_1}" PARENT_SCOPE) + + message(FATAL_ERROR "Missing ${package_id} version. Pass -D${cmake_var_name}=.") endfunction() # Create a vendored static library target and namespaced alias from local source/header files. @@ -97,23 +89,6 @@ function(infiniframe_add_vendor_static_library vendor_name vendor_dir source_nam message(STATUS " created target '${_target_name}' and alias '${vendor_name}::${vendor_name}'") endfunction() -# Restore NuGet packages declared in `packages.config` into `${CMAKE_SOURCE_DIR}/packages`. -# Params: -# - packages_config_path: path to `packages.config` -# Fails with `FATAL_ERROR` when restore returns non-zero. -function(infiniframe_restore_nuget_packages packages_config_path) - message(STATUS "Restoring NuGet packages using ${packages_config_path}") - execute_process( - COMMAND nuget restore "${packages_config_path}" -PackagesDirectory "${CMAKE_SOURCE_DIR}/packages" - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - RESULT_VARIABLE _nuget_result - ) - if (NOT _nuget_result EQUAL 0) - message(FATAL_ERROR "NuGet restore failed") - endif () - message(STATUS "NuGet restore succeeded") -endfunction() - # Determine Windows architecture folder token from current CMake generator platform. # Params: # - out_var: parent-scope variable receiving one of `x64` or `arm64` @@ -138,10 +113,24 @@ endfunction() # Fails with `FATAL_ERROR` if no candidate is valid. function(infiniframe_resolve_webview2_base_dir webview2_version out_var) message(STATUS "Resolving WebView2 SDK path for version ${webview2_version}") + set(_nuget_roots "") + if (DEFINED INFINIFRAME_NUGET_PACKAGES_ROOT AND NOT "${INFINIFRAME_NUGET_PACKAGES_ROOT}" STREQUAL "") + list(APPEND _nuget_roots "${INFINIFRAME_NUGET_PACKAGES_ROOT}") + endif () + if (DEFINED ENV{NUGET_PACKAGES} AND NOT "$ENV{NUGET_PACKAGES}" STREQUAL "") + list(APPEND _nuget_roots "$ENV{NUGET_PACKAGES}") + endif () + if (DEFINED ENV{USERPROFILE} AND NOT "$ENV{USERPROFILE}" STREQUAL "") + list(APPEND _nuget_roots "$ENV{USERPROFILE}/.nuget/packages") + endif () + set(_candidates "${CMAKE_SOURCE_DIR}/packages/Microsoft.Web.WebView2.${webview2_version}/build/native" - "$ENV{USERPROFILE}/.nuget/packages/microsoft.web.webview2/${webview2_version}/build/native" + "${CMAKE_SOURCE_DIR}/packages/microsoft.web.webview2/${webview2_version}/build/native" ) + foreach (_root IN LISTS _nuget_roots) + list(APPEND _candidates "${_root}/microsoft.web.webview2/${webview2_version}/build/native") + endforeach () _infiniframe_resolve_base_dir(_base_dir "include/WebView2.h" ${_candidates}) if (NOT _base_dir) message(FATAL_ERROR "WebView2 headers not found") @@ -159,10 +148,24 @@ endfunction() # Fails with `FATAL_ERROR` if neither layout exists. function(infiniframe_resolve_wil_include_dir winimpl_version out_var) message(STATUS "Resolving WIL include path for version ${winimpl_version}") + set(_nuget_roots "") + if (DEFINED INFINIFRAME_NUGET_PACKAGES_ROOT AND NOT "${INFINIFRAME_NUGET_PACKAGES_ROOT}" STREQUAL "") + list(APPEND _nuget_roots "${INFINIFRAME_NUGET_PACKAGES_ROOT}") + endif () + if (DEFINED ENV{NUGET_PACKAGES} AND NOT "$ENV{NUGET_PACKAGES}" STREQUAL "") + list(APPEND _nuget_roots "$ENV{NUGET_PACKAGES}") + endif () + if (DEFINED ENV{USERPROFILE} AND NOT "$ENV{USERPROFILE}" STREQUAL "") + list(APPEND _nuget_roots "$ENV{USERPROFILE}/.nuget/packages") + endif () + set(_candidates "${CMAKE_SOURCE_DIR}/packages/Microsoft.Windows.ImplementationLibrary.${winimpl_version}" - "$ENV{USERPROFILE}/.nuget/packages/microsoft.windows.implementationlibrary/${winimpl_version}" + "${CMAKE_SOURCE_DIR}/packages/microsoft.windows.implementationlibrary/${winimpl_version}" ) + foreach (_root IN LISTS _nuget_roots) + list(APPEND _candidates "${_root}/microsoft.windows.implementationlibrary/${winimpl_version}") + endforeach () _infiniframe_resolve_base_dir(_base_include "include/wil/com.h" ${_candidates}) if (_base_include) @@ -209,7 +212,7 @@ endfunction() # Main module entrypoint. Sets up all dependency targets used by `InfiniFrame.Native`. # Behavior: # - Always configures vendored `simdjson` and `simdutf`. -# - On Windows also configures vendored `wintoastlib`, restores NuGet, resolves +# - On Windows also configures vendored `wintoastlib`, resolves # WebView2/WIL from package versions, and creates imported SDK targets. # Exports to parent scope on Windows: # - `INFINIFRAME_WEBVIEW2_BASE_DIR` @@ -226,15 +229,9 @@ function(infiniframe_setup_dependencies) infiniframe_add_vendor_static_library("wintoastlib" "${CMAKE_SOURCE_DIR}/src/Dependencies/wintoastlib" "wintoastlib.cpp" "wintoastlib.h") - set(_packages_config_path "${CMAKE_SOURCE_DIR}/packages.config") - if (NOT EXISTS "${_packages_config_path}") - message(FATAL_ERROR "packages.config not found at ${_packages_config_path}") - endif () - - infiniframe_restore_nuget_packages("${_packages_config_path}") infiniframe_detect_windows_arch_dir(_win_arch_dir) - infiniframe_read_package_version("${_packages_config_path}" "Microsoft.Web.WebView2" _webview2_version) - infiniframe_read_package_version("${_packages_config_path}" "Microsoft.Windows.ImplementationLibrary" _winimpl_version) + infiniframe_get_package_version("Microsoft.Web.WebView2" "INFINIFRAME_WEBVIEW2_VERSION" _webview2_version) + infiniframe_get_package_version("Microsoft.Windows.ImplementationLibrary" "INFINIFRAME_WINDOWS_IMPLEMENTATION_LIBRARY_VERSION" _winimpl_version) infiniframe_resolve_webview2_base_dir("${_webview2_version}" _webview2_base_dir) infiniframe_resolve_wil_include_dir("${_winimpl_version}" _wil_include_dir) infiniframe_add_imported_windows_sdk_targets("${_webview2_base_dir}" "${_win_arch_dir}" "${_wil_include_dir}") diff --git a/src/InfiniFrame.NativeBridge/Native/packages.config b/src/InfiniFrame.NativeBridge/Native/packages.config deleted file mode 100644 index d746a70f8..000000000 --- a/src/InfiniFrame.NativeBridge/Native/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/native-build.ps1 b/src/InfiniFrame.NativeBridge/native-build.ps1 index 85af1774c..688202c9f 100644 --- a/src/InfiniFrame.NativeBridge/native-build.ps1 +++ b/src/InfiniFrame.NativeBridge/native-build.ps1 @@ -1,7 +1,10 @@ param( [string]$Configuration = "Debug", [string]$Arch = "x64", - [string]$EnableTestExports = "" + [string]$EnableTestExports = "", + [string]$WebView2Version = "", + [string]$WindowsImplementationLibraryVersion = "", + [string]$NuGetPackageRoot = "" ) $ErrorActionPreference = "Stop" @@ -114,6 +117,17 @@ try { } $CMakeArgs += "-DINFINIFRAME_BUILD_TEST_EXPORTS=$EnableTestExportsCMakeValue" + if (-not [string]::IsNullOrWhiteSpace($WebView2Version)) { + $CMakeArgs += "-DINFINIFRAME_WEBVIEW2_VERSION:STRING=$WebView2Version" + } + + if (-not [string]::IsNullOrWhiteSpace($WindowsImplementationLibraryVersion)) { + $CMakeArgs += "-DINFINIFRAME_WINDOWS_IMPLEMENTATION_LIBRARY_VERSION:STRING=$WindowsImplementationLibraryVersion" + } + + if (-not [string]::IsNullOrWhiteSpace($NuGetPackageRoot)) { + $CMakeArgs += "-DINFINIFRAME_NUGET_PACKAGES_ROOT:STRING=$NuGetPackageRoot" + } cmake -B $BuildDir -S $NativeDir @CMakeArgs if ($LASTEXITCODE -ne 0) { From 56adf001610dc55915bd3ac6efedd1fc3fc566c2 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:50:01 +0200 Subject: [PATCH 07/13] Remove unused parameters and simplify version resolution in native build scripts, project files, and CMake configuration. --- Directory.Packages.props | 6 +- .../InfiniFrame.NativeBridge.csproj | 2 +- .../Native/.cmake/NativeDependencies.cmake | 63 ++++++++++++++++++- src/InfiniFrame.NativeBridge/native-build.ps1 | 16 +---- 4 files changed, 65 insertions(+), 22 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 51a2c6844..67cf251a7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -2,8 +2,6 @@ true - 1.0.3967.48 - 1.0.260126.7 @@ -28,8 +26,8 @@ - - + + diff --git a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj index db0f6b9d1..a57bea433 100644 --- a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj +++ b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj @@ -173,7 +173,7 @@ Inputs="@(NativeSource)" Outputs="$(NativeStamp)"> - + diff --git a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake index 856fced36..7c49a77a6 100644 --- a/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake +++ b/src/InfiniFrame.NativeBridge/Native/.cmake/NativeDependencies.cmake @@ -43,7 +43,58 @@ function(_infiniframe_resolve_base_dir out_var required_relative_path) set(${out_var} "${_resolved}" PARENT_SCOPE) endfunction() -# Resolve package version from a required CMake cache variable. +# Walk parent directories from `${CMAKE_SOURCE_DIR}` to find `Directory.Packages.props`. +# Params: +# - out_var: parent-scope variable receiving full path when found, otherwise empty +function(infiniframe_find_directory_packages_props out_var) + if (DEFINED INFINIFRAME_DIRECTORY_PACKAGES_PROPS AND NOT "${INFINIFRAME_DIRECTORY_PACKAGES_PROPS}" STREQUAL "") + if (EXISTS "${INFINIFRAME_DIRECTORY_PACKAGES_PROPS}") + set(${out_var} "${INFINIFRAME_DIRECTORY_PACKAGES_PROPS}" PARENT_SCOPE) + return() + endif () + endif () + + set(_current_dir "${CMAKE_SOURCE_DIR}") + while (TRUE) + set(_candidate "${_current_dir}/Directory.Packages.props") + if (EXISTS "${_candidate}") + set(${out_var} "${_candidate}" PARENT_SCOPE) + return() + endif () + + get_filename_component(_parent_dir "${_current_dir}" DIRECTORY) + if ("${_parent_dir}" STREQUAL "${_current_dir}") + break() + endif () + set(_current_dir "${_parent_dir}") + endwhile () + + set(${out_var} "" PARENT_SCOPE) +endfunction() + +# Read package version from a `` entry in +# `Directory.Packages.props`. +# Params: +# - props_path: full path to Directory.Packages.props +# - package_id: e.g. `Microsoft.Web.WebView2` +# - out_var: parent-scope variable receiving the value +function(infiniframe_read_central_package_version props_path package_id out_var) + file(READ "${props_path}" _props_content) + string(REPLACE "." "\\." _package_id_regex "${package_id}") + string( + REGEX MATCH + "]*Include=\"${_package_id_regex}\"[^>]*Version=\"([^\"]+)\"" + _match + "${_props_content}" + ) + if (NOT CMAKE_MATCH_1) + message(FATAL_ERROR "PackageVersion for '${package_id}' not found in ${props_path}") + endif () + string(STRIP "${CMAKE_MATCH_1}" _value) + set(${out_var} "${_value}" PARENT_SCOPE) +endfunction() + +# Resolve package version from CMake cache variable or Directory.Packages.props. # Params: # - package_id: package id as defined in `` # - cmake_var_name: cache variable expected to contain the package version @@ -55,7 +106,15 @@ function(infiniframe_get_package_version package_id cmake_var_name out_var) return() endif () - message(FATAL_ERROR "Missing ${package_id} version. Pass -D${cmake_var_name}=.") + infiniframe_find_directory_packages_props(_directory_packages_props_path) + if (_directory_packages_props_path) + infiniframe_read_central_package_version("${_directory_packages_props_path}" "${package_id}" _version_from_props) + message(STATUS "Using ${package_id} version from ${_directory_packages_props_path}=${_version_from_props}") + set(${out_var} "${_version_from_props}" PARENT_SCOPE) + return() + endif () + + message(FATAL_ERROR "Missing ${package_id} version. Pass -D${cmake_var_name}= or set -DINFINIFRAME_DIRECTORY_PACKAGES_PROPS=.") endfunction() # Create a vendored static library target and namespaced alias from local source/header files. diff --git a/src/InfiniFrame.NativeBridge/native-build.ps1 b/src/InfiniFrame.NativeBridge/native-build.ps1 index 688202c9f..85af1774c 100644 --- a/src/InfiniFrame.NativeBridge/native-build.ps1 +++ b/src/InfiniFrame.NativeBridge/native-build.ps1 @@ -1,10 +1,7 @@ param( [string]$Configuration = "Debug", [string]$Arch = "x64", - [string]$EnableTestExports = "", - [string]$WebView2Version = "", - [string]$WindowsImplementationLibraryVersion = "", - [string]$NuGetPackageRoot = "" + [string]$EnableTestExports = "" ) $ErrorActionPreference = "Stop" @@ -117,17 +114,6 @@ try { } $CMakeArgs += "-DINFINIFRAME_BUILD_TEST_EXPORTS=$EnableTestExportsCMakeValue" - if (-not [string]::IsNullOrWhiteSpace($WebView2Version)) { - $CMakeArgs += "-DINFINIFRAME_WEBVIEW2_VERSION:STRING=$WebView2Version" - } - - if (-not [string]::IsNullOrWhiteSpace($WindowsImplementationLibraryVersion)) { - $CMakeArgs += "-DINFINIFRAME_WINDOWS_IMPLEMENTATION_LIBRARY_VERSION:STRING=$WindowsImplementationLibraryVersion" - } - - if (-not [string]::IsNullOrWhiteSpace($NuGetPackageRoot)) { - $CMakeArgs += "-DINFINIFRAME_NUGET_PACKAGES_ROOT:STRING=$NuGetPackageRoot" - } cmake -B $BuildDir -S $NativeDir @CMakeArgs if ($LASTEXITCODE -ne 0) { From 1bffb2862909fbb624e8279fd6977f84282811b2 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 14:57:12 +0200 Subject: [PATCH 08/13] Add NativeBridge NuGet restore to GitHub Action for Windows runners - Updated `description` in `action.yml` to include NativeBridge NuGet restore. - Added a step to restore `InfiniFrame.NativeBridge` NuGet packages on Windows platforms. --- .github/actions/setup-dependencies-native/action.yml | 12 +++++++++++- .github/workflows/ci-codeql.yml | 2 ++ .github/workflows/shared-release-build.yml | 1 + .github/workflows/shared-testing-build.yml | 1 + 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-dependencies-native/action.yml b/.github/actions/setup-dependencies-native/action.yml index ead308bc3..c7c4373a2 100644 --- a/.github/actions/setup-dependencies-native/action.yml +++ b/.github/actions/setup-dependencies-native/action.yml @@ -1,5 +1,5 @@ name: Setup Native Dependencies -description: Install and cache Native related dependencies for Linux/macOS runners. +description: Install and cache Native related dependencies and optional NativeBridge NuGet restore. inputs: brew-cache-key: @@ -10,6 +10,10 @@ inputs: description: Homebrew cache restore key prefix for macOS runners required: false default: "" + restore-nativebridge-packages: + description: Restore InfiniFrame.NativeBridge NuGet packages on Windows + required: false + default: "false" runs: using: composite @@ -96,3 +100,9 @@ runs: if ! command -v pwsh >/dev/null 2>&1; then brew list --cask powershell >/dev/null 2>&1 || brew install --cask powershell fi + + - name: Restore NativeBridge NuGet packages (Windows) + if: runner.os == 'Windows' && inputs['restore-nativebridge-packages'] == 'true' + shell: pwsh + run: | + dotnet restore ./src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj diff --git a/.github/workflows/ci-codeql.yml b/.github/workflows/ci-codeql.yml index 2464640f8..cf07feba2 100644 --- a/.github/workflows/ci-codeql.yml +++ b/.github/workflows/ci-codeql.yml @@ -194,6 +194,7 @@ jobs: with: brew-cache-key: ${{ runner.os }}-brew-codeql-${{ hashFiles('.github/actions/setup-dependencies-native/action.yml', '.github/workflows/shared-testing-macos.yml') }} brew-restore-key: ${{ runner.os }}-brew-codeql- + restore-nativebridge-packages: 'true' - name: Initialize CodeQL uses: github/codeql-action/init@v4 @@ -269,6 +270,7 @@ jobs: with: brew-cache-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-codeql-${{ hashFiles('.github/actions/setup-dependencies-native/action.yml', '.github/workflows/ci-codeql.yml') }} brew-restore-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-codeql- + restore-nativebridge-packages: 'true' - name: Initialize CodeQL uses: github/codeql-action/init@v4 diff --git a/.github/workflows/shared-release-build.yml b/.github/workflows/shared-release-build.yml index 0f2069225..5be107d48 100644 --- a/.github/workflows/shared-release-build.yml +++ b/.github/workflows/shared-release-build.yml @@ -62,6 +62,7 @@ jobs: with: brew-cache-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-native-${{ hashFiles('.github/actions/setup-dependencies-native/action.yml', '.github/workflows/shared-release-build.yml') }} brew-restore-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-native- + restore-nativebridge-packages: 'true' - name: Build Native shell: bash diff --git a/.github/workflows/shared-testing-build.yml b/.github/workflows/shared-testing-build.yml index 10bcc7472..507621fa4 100644 --- a/.github/workflows/shared-testing-build.yml +++ b/.github/workflows/shared-testing-build.yml @@ -68,6 +68,7 @@ jobs: with: brew-cache-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-native-${{ hashFiles('.github/actions/setup-dependencies-native/action.yml', '.github/workflows/shared-testing-build.yml') }} brew-restore-key: ${{ matrix.os }}-${{ matrix.arch }}-brew-native- + restore-nativebridge-packages: 'true' - name: Build Native shell: pwsh From 57989b1e11a2fdac5702c8638d4a5e171286ce55 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 15:25:20 +0200 Subject: [PATCH 09/13] Remove `Exports.WindowState.cpp` and related `LibraryImports` for unused window state interop APIs in `NativeBridge`. --- ...nfiniFrame.NativeBridge.csproj.DotSettings | 5 +- .../LibraryImports/InfiniFrameNative.cs | 398 ------------------ .../Exports/InfiniFrameNative.Dialog.cs | 24 ++ .../Exports/InfiniFrameNative.Events.cs | 28 ++ .../Exports/InfiniFrameNative.Lifecycle.cs | 25 ++ .../Exports/InfiniFrameNative.Memory.cs | 20 + .../InfiniFrameNative.Platform.MacOs.cs | 14 + .../InfiniFrameNative.Platform.Windows.cs | 24 ++ .../Exports/InfiniFrameNative.Window.cs | 165 ++++++++ .../Managed/NativeApi/InfiniFrameNative.cs | 162 +++++++ .../InfiniFrameNativeInteropStatus.cs | 0 .../Testing/InfiniFrameNative.Testing.cs} | 19 +- .../Native/CMakeLists.txt | 6 +- .../Native/src/Api/Exports/Exports.Events.cpp | 2 +- .../Api/Exports/Exports.Platform.MacOs.cpp | 14 + ...tform.cpp => Exports.Platform.Windows.cpp} | 4 - ...rts.WindowState.cpp => Exports.Window.cpp} | 110 +++++ .../Api/Exports/Exports.WindowCommands.cpp | 119 ------ .../InfiniFrameSingleFileBootstrap.cs | 2 +- 19 files changed, 598 insertions(+), 543 deletions(-) delete mode 100644 src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNative.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs rename src/InfiniFrame.NativeBridge/Managed/{LibraryImports => NativeApi}/InfiniFrameNativeInteropStatus.cs (100%) rename src/InfiniFrame.NativeBridge/Managed/{LibraryImports/InfiniFrameNativeTesting.cs => NativeApi/Testing/InfiniFrameNative.Testing.cs} (67%) create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp rename src/InfiniFrame.NativeBridge/Native/src/Api/Exports/{Exports.Platform.cpp => Exports.Platform.Windows.cpp} (93%) rename src/InfiniFrame.NativeBridge/Native/src/Api/Exports/{Exports.WindowState.cpp => Exports.Window.cpp} (64%) delete mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp diff --git a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj.DotSettings b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj.DotSettings index fd1a4a531..9a82f24d4 100644 --- a/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj.DotSettings +++ b/src/InfiniFrame.NativeBridge/InfiniFrame.NativeBridge.csproj.DotSettings @@ -1,3 +1,6 @@  True - True \ No newline at end of file + True + True + True + True \ No newline at end of file diff --git a/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNative.cs b/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNative.cs deleted file mode 100644 index f3fae3bab..000000000 --- a/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNative.cs +++ /dev/null @@ -1,398 +0,0 @@ -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -using InfiniFrame.NativeBridge.Delegates; -using InfiniFrame.NativeBridge.Dialogs; -using InfiniFrame.NativeBridge.Parameters; -using System.Drawing; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Runtime.InteropServices.Marshalling; -using static InfiniFrame.NativeBridge.ArtifactManifest; - -namespace InfiniFrame.NativeBridge; -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -public static partial class InfiniFrameNative { - - #region MARSHAL CALLS FROM Non-UI Thread to UI Thread - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback); - #endregion - #region Register - // ReSharper disable once UnusedMethodReturnValue.Local - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_register_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus RegisterWin32(IntPtr hInstance); - - // ReSharper disable once UnusedMethodReturnValue.Local - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_register_mac", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus RegisterMac(); - #endregion - - #region CTOR-DTOR - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ctor", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Constructor([MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))] in InfiniFrameNativeParameters parameters, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_dtor"), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Destructor(IntPtr instance); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_Close", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Close(IntPtr instance); - #endregion - - #region Get - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_getHwnd_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetWindowHandlerWin32(IntPtr instance, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool fullScreen); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetGrantBrowserPermissions(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool grant); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMediaAutoplayEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetFileSystemAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetFileSystemAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetWebSecurityEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetWebSecurityEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetJavascriptClipboardAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetJavascriptClipboardAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaStreamEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMediaStreamEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetSmoothScrollingEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetSmoothScrollingEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetIgnoreCertificateErrorsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetNotificationsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetNotificationsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool resizable); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out int width, out int height); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out int maxWidth, out int maxHeight); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out int minWidth, out int minHeight); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetZoom(IntPtr instance, out int zoom); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused); - #endregion - - #region Navigate - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url); - #endregion - - #region Set - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetWebView2RuntimePath_win32(IntPtr instance, string webView2RuntimePath); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance); - #endregion - - #region Misc - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_WaitForExit", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus WaitForExit(IntPtr instance); - #endregion - - #region Dialog - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowMessage(IntPtr inst, string title, string text, InfiniFrameDialogButtons buttons, InfiniFrameDialogIcon icon, out InfiniFrameDialogResult value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_FreeString", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus FreeString(IntPtr value); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_FreeStringArray", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus FreeStringArray(IntPtr values, int count); - - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrame_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - private static partial InfiniFrameNativeInteropStatus GetLastErrorMessagePtr(out IntPtr value); - #endregion - - #region Overloads - internal static string? PtrToNativeString(IntPtr ptr) { - if (ptr == IntPtr.Zero) return null; - - return OperatingSystem.IsWindows() - ? Marshal.PtrToStringUni(ptr) - : Marshal.PtrToStringUTF8(ptr); - } - - internal static InfiniFrameNativeInteropStatus GetHeight(IntPtr instance, out int height) - => GetSize(instance, out _, out height); - - internal static InfiniFrameNativeInteropStatus GetWidth(IntPtr instance, out int width) - => GetSize(instance, out width, out _); - - internal static InfiniFrameNativeInteropStatus GetMaxHeight(IntPtr instance, out int maxHeight) - => GetMaxSize(instance, out _, out maxHeight); - - internal static InfiniFrameNativeInteropStatus GetMaxWidth(IntPtr instance, out int maxWidth) - => GetMaxSize(instance, out maxWidth, out _); - - internal static InfiniFrameNativeInteropStatus GetMinHeight(IntPtr instance, out int minHeight) - => GetMinSize(instance, out _, out minHeight); - - internal static InfiniFrameNativeInteropStatus GetMinWidth(IntPtr instance, out int minWidth) - => GetMinSize(instance, out minWidth, out _); - - internal static InfiniFrameNativeInteropStatus GetLeft(IntPtr instance, out int left) - => GetPosition(instance, out left, out _); - - internal static InfiniFrameNativeInteropStatus GetTop(IntPtr instance, out int top) - => GetPosition(instance, out _, out top); - - internal static InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out Size size) { - InfiniFrameNativeInteropStatus status = GetSize(instance, out int width, out int height); - size = new Size(width, height); - return status; - } - - internal static InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out Size size) { - InfiniFrameNativeInteropStatus status = GetMaxSize(instance, out int width, out int height); - size = new Size(width, height); - return status; - } - - internal static InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out Size size) { - InfiniFrameNativeInteropStatus status = GetMinSize(instance, out int width, out int height); - size = new Size(width, height); - return status; - } - - internal static InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out Point position) { - InfiniFrameNativeInteropStatus status = GetPosition(instance, out int left, out int top); - position = new Point(left, top); - return status; - } - - internal static InfiniFrameNativeInteropStatus GetWindowRectangle(IntPtr instance, out int x, out int y, out int width, out int height) { - InfiniFrameNativeInteropStatus sizeStatus = GetSize(instance, out width, out height); - if (sizeStatus != InfiniFrameNativeInteropStatus.Success) { - x = 0; - y = 0; - return sizeStatus; - } - - return GetPosition(instance, out x, out y); - } - - internal static InfiniFrameNativeInteropStatus GetWindowRectangle(IntPtr instance, out Rectangle rectangle) { - InfiniFrameNativeInteropStatus status = GetWindowRectangle(instance, out int x, out int y, out int width, out int height); - rectangle = new Rectangle(x, y, width, height); - return status; - } - - internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) { - InfiniFrameNativeInteropStatus status = GetUserAgent(instance, out IntPtr ptr); - try { - userAgent = PtrToNativeString(ptr); - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) { - InfiniFrameNativeInteropStatus status = GetTitle(instance, out IntPtr ptr); - try { - title = PtrToNativeString(ptr); - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) { - InfiniFrameNativeInteropStatus status = GetIconFileName(instance, out IntPtr ptr); - try { - iconFileName = PtrToNativeString(ptr) ?? string.Empty; - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static string? GetLastErrorMessage() { - InfiniFrameNativeInteropStatus status = GetLastErrorMessagePtr(out IntPtr ptr); - if (status != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) return null; - - try { - return PtrToNativeString(ptr); - } - finally { - FreeString(ptr); - } - } - - internal static InfiniFrameNativeInteropStatus EnsureSucceeded(InfiniFrameNativeInteropStatus status, string operationName) { - - int fallbackLastError = Marshal.GetLastPInvokeError(); - - if (status is InfiniFrameNativeInteropStatus.Success && fallbackLastError is 0) return status; - - InfiniFrameNativeInteropStatus fallbackStatus = GetLastErrorMessagePtr(out IntPtr ptr); - - string? fallbackMessage; - if (fallbackStatus != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) { - fallbackMessage = "No native error message provided."; - } - else { - try { - fallbackMessage = PtrToNativeString(ptr); - } - finally { - FreeString(ptr); - } - } - - throw new ApplicationException($"Native interop call '{operationName}' failed with unknown status state. Fallback last error {fallbackLastError}. {fallbackMessage} {fallbackStatus}"); - } - #endregion -} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs new file mode 100644 index 000000000..d800f7abe --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs @@ -0,0 +1,24 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using InfiniFrame.NativeBridge.Dialogs; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowMessage(IntPtr inst, string title, string text, InfiniFrameDialogButtons buttons, InfiniFrameDialogIcon icon, out InfiniFrameDialogResult value); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs new file mode 100644 index 000000000..8e6992752 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs @@ -0,0 +1,28 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using InfiniFrame.NativeBridge.Delegates; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback); + + // InfiniFrame_SetClosingCallback + // InfiniFrame_setClosedCallback + // InfiniFrame_SetFocusInCallback + // InfiniFrame_SetFocusOutCallback + // InfiniFrame_SetMovedCallback + // InfiniFrame_SetResizedCallback + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs new file mode 100644 index 000000000..1478e36f4 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs @@ -0,0 +1,25 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using InfiniFrame.NativeBridge.Parameters; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.InteropServices.Marshalling; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ctor", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Constructor([MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))] in InfiniFrameNativeParameters parameters, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_dtor"), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Destructor(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Close", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Close(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_WaitForExit", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus WaitForExit(IntPtr instance); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs new file mode 100644 index 000000000..ee08f0798 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs @@ -0,0 +1,20 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_FreeString", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus FreeString(IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_FreeStringArray", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus FreeStringArray(IntPtr values, int count); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + private static partial InfiniFrameNativeInteropStatus GetLastErrorMessagePtr(out IntPtr value); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs new file mode 100644 index 000000000..aaa1f997b --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs @@ -0,0 +1,14 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_register_mac", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus RegisterMac(); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs new file mode 100644 index 000000000..8ef2ec2d1 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs @@ -0,0 +1,24 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_register_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus RegisterWin32(IntPtr hInstance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_getHwnd_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetWindowHandlerWin32(IntPtr instance, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetWebView2RuntimePath_win32(IntPtr instance, string webView2RuntimePath); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetNotificationsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetNotificationsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs new file mode 100644 index 000000000..e5f95ac53 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs @@ -0,0 +1,165 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool fullScreen); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetGrantBrowserPermissions(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool grant); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMediaAutoplayEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFileSystemAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetFileSystemAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetWebSecurityEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetWebSecurityEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetJavascriptClipboardAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetJavascriptClipboardAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaStreamEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMediaStreamEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetSmoothScrollingEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetSmoothScrollingEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetIgnoreCertificateErrorsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool resizable); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out int width, out int height); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out int maxWidth, out int maxHeight); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out int minWidth, out int minHeight); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetZoom(IntPtr instance, out int zoom); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out IntPtr value); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs new file mode 100644 index 000000000..f9ba611a4 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs @@ -0,0 +1,162 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Drawing; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + internal static string? PtrToNativeString(IntPtr ptr) { + if (ptr == IntPtr.Zero) return null; + + return OperatingSystem.IsWindows() + ? Marshal.PtrToStringUni(ptr) + : Marshal.PtrToStringUTF8(ptr); + } + + internal static InfiniFrameNativeInteropStatus GetHeight(IntPtr instance, out int height) + => GetSize(instance, out _, out height); + + internal static InfiniFrameNativeInteropStatus GetWidth(IntPtr instance, out int width) + => GetSize(instance, out width, out _); + + internal static InfiniFrameNativeInteropStatus GetMaxHeight(IntPtr instance, out int maxHeight) + => GetMaxSize(instance, out _, out maxHeight); + + internal static InfiniFrameNativeInteropStatus GetMaxWidth(IntPtr instance, out int maxWidth) + => GetMaxSize(instance, out maxWidth, out _); + + internal static InfiniFrameNativeInteropStatus GetMinHeight(IntPtr instance, out int minHeight) + => GetMinSize(instance, out _, out minHeight); + + internal static InfiniFrameNativeInteropStatus GetMinWidth(IntPtr instance, out int minWidth) + => GetMinSize(instance, out minWidth, out _); + + internal static InfiniFrameNativeInteropStatus GetLeft(IntPtr instance, out int left) + => GetPosition(instance, out left, out _); + + internal static InfiniFrameNativeInteropStatus GetTop(IntPtr instance, out int top) + => GetPosition(instance, out _, out top); + + internal static InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out Size size) { + InfiniFrameNativeInteropStatus status = GetSize(instance, out int width, out int height); + size = new Size(width, height); + return status; + } + + internal static InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out Size size) { + InfiniFrameNativeInteropStatus status = GetMaxSize(instance, out int width, out int height); + size = new Size(width, height); + return status; + } + + internal static InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out Size size) { + InfiniFrameNativeInteropStatus status = GetMinSize(instance, out int width, out int height); + size = new Size(width, height); + return status; + } + + internal static InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out Point position) { + InfiniFrameNativeInteropStatus status = GetPosition(instance, out int left, out int top); + position = new Point(left, top); + return status; + } + + internal static InfiniFrameNativeInteropStatus GetWindowRectangle(IntPtr instance, out int x, out int y, out int width, out int height) { + InfiniFrameNativeInteropStatus sizeStatus = GetSize(instance, out width, out height); + if (sizeStatus != InfiniFrameNativeInteropStatus.Success) { + x = 0; + y = 0; + return sizeStatus; + } + + return GetPosition(instance, out x, out y); + } + + internal static InfiniFrameNativeInteropStatus GetWindowRectangle(IntPtr instance, out Rectangle rectangle) { + InfiniFrameNativeInteropStatus status = GetWindowRectangle(instance, out int x, out int y, out int width, out int height); + rectangle = new Rectangle(x, y, width, height); + return status; + } + + internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) { + InfiniFrameNativeInteropStatus status = GetUserAgent(instance, out IntPtr ptr); + try { + userAgent = PtrToNativeString(ptr); + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } + + internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) { + InfiniFrameNativeInteropStatus status = GetTitle(instance, out IntPtr ptr); + try { + title = PtrToNativeString(ptr); + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } + + internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) { + InfiniFrameNativeInteropStatus status = GetIconFileName(instance, out IntPtr ptr); + try { + iconFileName = PtrToNativeString(ptr) ?? string.Empty; + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } + + internal static string? GetLastErrorMessage() { + InfiniFrameNativeInteropStatus status = GetLastErrorMessagePtr(out IntPtr ptr); + if (status != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) return null; + + try { + return PtrToNativeString(ptr); + } + finally { + FreeString(ptr); + } + } + + internal static InfiniFrameNativeInteropStatus EnsureSucceeded(InfiniFrameNativeInteropStatus status, string operationName) { + + int fallbackLastError = Marshal.GetLastPInvokeError(); + + if (status is InfiniFrameNativeInteropStatus.Success && fallbackLastError is 0) return status; + + InfiniFrameNativeInteropStatus fallbackStatus = GetLastErrorMessagePtr(out IntPtr ptr); + + string? fallbackMessage; + if (fallbackStatus != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) { + fallbackMessage = "No native error message provided."; + } + else { + try { + fallbackMessage = PtrToNativeString(ptr); + } + finally { + FreeString(ptr); + } + } + + throw new ApplicationException($"Native interop call '{operationName}' failed with unknown status state. Fallback last error {fallbackLastError}. {fallbackMessage} {fallbackStatus}"); + } +} diff --git a/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNativeInteropStatus.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNativeInteropStatus.cs similarity index 100% rename from src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNativeInteropStatus.cs rename to src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNativeInteropStatus.cs diff --git a/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNativeTesting.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs similarity index 67% rename from src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNativeTesting.cs rename to src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs index cb545f853..068dbd2bf 100644 --- a/src/InfiniFrame.NativeBridge/Managed/LibraryImports/InfiniFrameNativeTesting.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs @@ -5,22 +5,20 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.InteropServices.Marshalling; -using static InfiniFrame.NativeBridge.ArtifactManifest; namespace InfiniFrame.NativeBridge; // --------------------------------------------------------------------------------------------------------------------- // Code // --------------------------------------------------------------------------------------------------------------------- -public static partial class InfiniFrameNativeTesting { -// #if InfiniFrameNativeTestExports - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_NativeParametersReturnAsIs", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] +public partial class InfiniFrameNativeTesting { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_NativeParametersReturnAsIs", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus NativeParametersReturnAsIsNative( [MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))] in InfiniFrameNativeParameters parameters, out IntPtr newParameters ); - [LibraryImport(NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_FreeInitParams", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_FreeInitParams", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus FreeInitParamsNative(IntPtr parameters); /// @@ -45,15 +43,4 @@ internal static void FreeInitParams(IntPtr newParametersPtr) { FreeInitParamsNative(newParametersPtr), nameof(FreeInitParamsNative)); } -// #else -// internal static IntPtr NativeParametersReturnAsIsPtr(ref InfiniFrameNativeParameters parameters) { -// throw new PlatformNotSupportedException("InfiniFrame native test exports are not enabled for this build."); -// } -// -// internal static void FreeInitParams(IntPtr newParametersPtr) { -// if (newParametersPtr != IntPtr.Zero) { -// throw new PlatformNotSupportedException("InfiniFrame native test exports are not enabled for this build."); -// } -// } -// #endif } diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index bde501144..f50f4b852 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -40,9 +40,9 @@ set(COMMON_SOURCES src/Api/Exports/Exports.Events.cpp src/Api/Exports/Exports.Lifecycle.cpp src/Api/Exports/Exports.Memory.cpp - src/Api/Exports/Exports.Platform.cpp - src/Api/Exports/Exports.WindowCommands.cpp - src/Api/Exports/Exports.WindowState.cpp + src/Api/Exports/Exports.Platform.MacOs.cpp + src/Api/Exports/Exports.Platform.Windows.cpp + src/Api/Exports/Exports.Window.cpp ) set(TEST_SOURCES diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp index c4872c1f4..19626af83 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp @@ -26,7 +26,7 @@ EXPORTED InteropStatus InfiniFrame_SetClosingCallback(InfiniFrameWindow* instanc return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetClosingCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_setClosedClosedCallback(InfiniFrameWindow* instance, const ClosedCallback callback) { +EXPORTED InteropStatus InfiniFrame_setClosedCallback(InfiniFrameWindow* instance, const ClosedCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetClosedCallback(callback); }); } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp new file mode 100644 index 000000000..c31a64f58 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp @@ -0,0 +1,14 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +#ifdef __APPLE__ +EXPORTED InteropStatus InfiniFrame_register_mac() { + return RunExportStatus([] { InfiniFrameWindow::Register(); }); +} +#endif +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp similarity index 93% rename from src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp index 0ddefd4c8..6ed006ec9 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp @@ -41,9 +41,5 @@ EXPORTED InteropStatus InfiniFrame_GetNotificationsEnabled(InfiniFrameWindow* in window->GetNotificationsEnabled(enabled); }); } -#elif __APPLE__ -EXPORTED InteropStatus InfiniFrame_register_mac() { - return RunExportStatus([] { InfiniFrameWindow::Register(); }); -} #endif } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp similarity index 64% rename from src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp index 029804e35..9d55ab582 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowState.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp @@ -6,6 +6,116 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { +EXPORTED InteropStatus InfiniFrame_Center(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Center(); }); +} + +EXPORTED InteropStatus InfiniFrame_ClearBrowserAutoFill(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->ClearBrowserAutoFill(); }); +} + +EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (!EnsureNotNull(content, "content")) + return; + window->NavigateToString(content); + }); +} + +EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (!EnsureNotNull(url, "url")) + return; + window->NavigateToUrl(url); + }); +} + +EXPORTED InteropStatus InfiniFrame_Restore(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Restore(); }); +} + +EXPORTED InteropStatus InfiniFrame_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->SendWebMessage(NullToEmpty(message)); + }); +} + +EXPORTED InteropStatus InfiniFrame_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTransparentEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetContextMenuEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoomEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetDevToolsEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFullScreen(fullScreen); }); +} + +EXPORTED InteropStatus InfiniFrame_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->SetIconFile(NullToEmpty(filename)); + }); +} + +EXPORTED InteropStatus InfiniFrame_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaximized(maximized); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaxSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinimized(minimized); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetPosition(x, y); }); +} + +EXPORTED InteropStatus InfiniFrame_SetResizable(InfiniFrameWindow* instance, const bool resizable) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizable(resizable); }); +} + +EXPORTED InteropStatus InfiniFrame_SetSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetTitle(InfiniFrameWindow* instance, const AutoString title) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTitle(NullToEmpty(title)); }); +} + +EXPORTED InteropStatus InfiniFrame_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTopmost(topmost); }); +} + +EXPORTED InteropStatus InfiniFrame_SetZoom(InfiniFrameWindow* instance, const int zoom) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoom(zoom); }); +} + +EXPORTED InteropStatus InfiniFrame_ShowNotification(InfiniFrameWindow* instance, const AutoString title, const AutoString body) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->ShowNotification(NullToEmpty(title), NullToEmpty(body)); + }); +} + +EXPORTED InteropStatus InfiniFrame_SetFocused(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->SetFocused(); }); +} + EXPORTED InteropStatus InfiniFrame_GetTransparentEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp deleted file mode 100644 index 59fe3ba4b..000000000 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.WindowCommands.cpp +++ /dev/null @@ -1,119 +0,0 @@ -// --------------------------------------------------------------------------------------------------------------------- -// Imports -// --------------------------------------------------------------------------------------------------------------------- -#include "Api/Exports/Exports.h" -// --------------------------------------------------------------------------------------------------------------------- -// Code -// --------------------------------------------------------------------------------------------------------------------- -extern "C" { -EXPORTED InteropStatus InfiniFrame_Center(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Center(); }); -} - -EXPORTED InteropStatus InfiniFrame_ClearBrowserAutoFill(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->ClearBrowserAutoFill(); }); -} - -EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (!EnsureNotNull(content, "content")) - return; - window->NavigateToString(content); - }); -} - -EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (!EnsureNotNull(url, "url")) - return; - window->NavigateToUrl(url); - }); -} - -EXPORTED InteropStatus InfiniFrame_Restore(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Restore(); }); -} - -EXPORTED InteropStatus InfiniFrame_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->SendWebMessage(NullToEmpty(message)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTransparentEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetContextMenuEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoomEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetDevToolsEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFullScreen(fullScreen); }); -} - -EXPORTED InteropStatus InfiniFrame_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->SetIconFile(NullToEmpty(filename)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaximized(maximized); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaxSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinimized(minimized); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetPosition(x, y); }); -} - -EXPORTED InteropStatus InfiniFrame_SetResizable(InfiniFrameWindow* instance, const bool resizable) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizable(resizable); }); -} - -EXPORTED InteropStatus InfiniFrame_SetSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetTitle(InfiniFrameWindow* instance, const AutoString title) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTitle(NullToEmpty(title)); }); -} - -EXPORTED InteropStatus InfiniFrame_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTopmost(topmost); }); -} - -EXPORTED InteropStatus InfiniFrame_SetZoom(InfiniFrameWindow* instance, const int zoom) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoom(zoom); }); -} - -EXPORTED InteropStatus -InfiniFrame_ShowNotification(InfiniFrameWindow* instance, const AutoString title, const AutoString body) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->ShowNotification(NullToEmpty(title), NullToEmpty(body)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetFocused(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->SetFocused(); }); -} -} diff --git a/src/InfiniFrame/InfiniFrameSingleFileBootstrap.cs b/src/InfiniFrame/InfiniFrameSingleFileBootstrap.cs index 417188641..fae52a394 100644 --- a/src/InfiniFrame/InfiniFrameSingleFileBootstrap.cs +++ b/src/InfiniFrame/InfiniFrameSingleFileBootstrap.cs @@ -53,7 +53,7 @@ public static void Initialize() { try { Directory.CreateDirectory(_nativeDir); ExtractEmbeddedNative(entryAssembly, rid, GetNativeFileNamesForCurrentPlatform()); - NativeLibrary.SetDllImportResolver(typeof(InfiniFrameNativeTesting).Assembly, ResolveNativeLibrary); + NativeLibrary.SetDllImportResolver(typeof(InfiniFrameNative).Assembly, ResolveNativeLibrary); AppDomain.CurrentDomain.ProcessExit += (_, _) => TryCleanupNativeDirectory(); _initialized = 1; From ec88011d33e0a94b3c3f8574111bd01d5f5d3035 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 15:29:24 +0200 Subject: [PATCH 10/13] Refactor: Extract `Exports.CustomSchemes`, `Exports.Monitors`, and `Exports.Dispatch` APIs into dedicated files; update `CMakeLists.txt` and `LibraryImports`. --- .../InfiniFrameNative.CustomSchemes.cs | 14 ++++++++++ .../Exports/InfiniFrameNative.Dispatch.cs | 14 ++++++++++ .../Exports/InfiniFrameNative.Events.cs | 28 ++++++++++--------- .../Exports/InfiniFrameNative.Monitors.cs | 15 ++++++++++ .../Native/CMakeLists.txt | 3 ++ .../src/Api/Exports/Exports.CustomSchemes.cpp | 16 +++++++++++ .../src/Api/Exports/Exports.Dispatch.cpp | 16 +++++++++++ .../Native/src/Api/Exports/Exports.Events.cpp | 24 ---------------- .../src/Api/Exports/Exports.Monitors.cpp | 16 +++++++++++ 9 files changed, 109 insertions(+), 37 deletions(-) create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs new file mode 100644 index 000000000..459c8fba9 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs @@ -0,0 +1,14 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs new file mode 100644 index 000000000..9712b58e7 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs @@ -0,0 +1,14 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs index 8e6992752..641399a94 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs @@ -10,19 +10,21 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetClosingCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetClosingCallback(IntPtr instance, CppClosingDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_setClosedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetClosedCallback(IntPtr instance, CppClosedDelegate callback); - // InfiniFrame_SetClosingCallback - // InfiniFrame_setClosedCallback - // InfiniFrame_SetFocusInCallback - // InfiniFrame_SetFocusOutCallback - // InfiniFrame_SetMovedCallback - // InfiniFrame_SetResizedCallback - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocusInCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFocusInCallback(IntPtr instance, CppFocusInDelegate callback); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocusOutCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFocusOutCallback(IntPtr instance, CppFocusOutDelegate callback); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMovedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMovedCallback(IntPtr instance, CppMovedDelegate callback); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetResizedCallback(IntPtr instance, CppResizedDelegate callback); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs new file mode 100644 index 000000000..1065bc289 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs @@ -0,0 +1,15 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using InfiniFrame.NativeBridge.Delegates; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback); +} diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index f50f4b852..cb1bc0ea3 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -36,10 +36,13 @@ infiniframe_setup_dependencies() set(COMMON_SOURCES src/Runtime/Shared/Window/WindowEvents.cpp src/Runtime/Shared/Window/WindowState.cpp + src/Api/Exports/Exports.CustomSchemes.cpp + src/Api/Exports/Exports.Dispatch.cpp src/Api/Exports/Exports.Dialog.cpp src/Api/Exports/Exports.Events.cpp src/Api/Exports/Exports.Lifecycle.cpp src/Api/Exports/Exports.Memory.cpp + src/Api/Exports/Exports.Monitors.cpp src/Api/Exports/Exports.Platform.MacOs.cpp src/Api/Exports/Exports.Platform.Windows.cpp src/Api/Exports/Exports.Window.cpp diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp new file mode 100644 index 000000000..a1d2664e4 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp @@ -0,0 +1,16 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_AddCustomSchemeName(InfiniFrameWindow* instance, const AutoString scheme) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (!EnsureNotNull(scheme, "scheme")) + return; + window->AddCustomSchemeName(scheme); + }); +} +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp new file mode 100644 index 000000000..78dde7f9e --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp @@ -0,0 +1,16 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_Invoke(InfiniFrameWindow* instance, const ACTION callback) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (callback == nullptr) + throw std::invalid_argument("Argument 'callback' is null."); + window->Invoke(callback); + }); +} +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp index 19626af83..daeafb618 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp @@ -6,22 +6,6 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_AddCustomSchemeName(InfiniFrameWindow* instance, const AutoString scheme) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (!EnsureNotNull(scheme, "scheme")) - return; - window->AddCustomSchemeName(scheme); - }); -} - -EXPORTED InteropStatus InfiniFrame_GetAllMonitors(InfiniFrameWindow* instance, const GetAllMonitorsCallback callback) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (callback == nullptr) - throw std::invalid_argument("Argument 'callback' is null."); - window->GetAllMonitors(callback); - }); -} - EXPORTED InteropStatus InfiniFrame_SetClosingCallback(InfiniFrameWindow* instance, const ClosingCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetClosingCallback(callback); }); } @@ -45,12 +29,4 @@ EXPORTED InteropStatus InfiniFrame_SetMovedCallback(InfiniFrameWindow* instance, EXPORTED InteropStatus InfiniFrame_SetResizedCallback(InfiniFrameWindow* instance, const ResizedCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizedCallback(callback); }); } - -EXPORTED InteropStatus InfiniFrame_Invoke(InfiniFrameWindow* instance, const ACTION callback) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (callback == nullptr) - throw std::invalid_argument("Argument 'callback' is null."); - window->Invoke(callback); - }); -} } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp new file mode 100644 index 000000000..72f9eca0f --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp @@ -0,0 +1,16 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_GetAllMonitors(InfiniFrameWindow* instance, const GetAllMonitorsCallback callback) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (callback == nullptr) + throw std::invalid_argument("Argument 'callback' is null."); + window->GetAllMonitors(callback); + }); +} +} From bbe89627ba30e94dd18a592d9501fcf42add64c7 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 15:47:13 +0200 Subject: [PATCH 11/13] Add `Exports.Window` APIs for window state, properties, and navigation - Implement `Get` and `Set` methods in both native and managed layers for window state and properties, including size, position, fullscreen, and transparency. - Add native navigation APIs: `NavigateToString`, `NavigateToUrl`, and `SendWebMessage`. - Introduce additional actions like `Center`, `Restore`, `ClearBrowserAutoFill`, and `ShowNotification`. - Update `CMakeLists.txt` with new source files. --- .../Exports/InfiniFrameNative.Dialog.cs | 50 +++++- .../Exports/InfiniFrameNative.Memory.cs | 12 ++ .../InfiniFrameNative.Window.Actions.cs | 27 +++ ...dow.cs => InfiniFrameNative.Window.Get.cs} | 159 +++++++----------- .../InfiniFrameNative.Window.Navigation.cs | 21 +++ .../Exports/InfiniFrameNative.Window.Set.cs | 60 +++++++ .../Managed/NativeApi/InfiniFrameNative.cs | 73 +------- .../Native/CMakeLists.txt | 5 +- .../Api/Exports/Exports.Window.Actions.cpp | 34 ++++ ....Window.cpp => Exports.Window.Getters.cpp} | 110 ------------ .../Api/Exports/Exports.Window.Navigation.cpp | 30 ++++ .../Api/Exports/Exports.Window.Setters.cpp | 74 ++++++++ .../Native/src/Api/Exports/Exports.h | 5 - src/InfiniFrame/Window/InfiniFrameWindow.cs | 28 +-- .../Window/InfiniFrameWindowExtensions.cs | 12 +- 15 files changed, 381 insertions(+), 319 deletions(-) create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs rename src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/{InfiniFrameNative.Window.cs => InfiniFrameNative.Window.Get.cs} (53%) create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs create mode 100644 src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp rename src/InfiniFrame.NativeBridge/Native/src/Api/Exports/{Exports.Window.cpp => Exports.Window.Getters.cpp} (64%) create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp create mode 100644 src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs index d800f7abe..d5b7f31cc 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs @@ -1,6 +1,7 @@ // --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- +using System; using InfiniFrame.NativeBridge.Dialogs; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -11,14 +12,57 @@ namespace InfiniFrame.NativeBridge; // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values); + private static partial InfiniFrameNativeInteropStatus ShowOpenFilePtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values); + internal static InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr instance, string title, string defaultPath, bool multiSelect, string[] filters, int filtersCount, out string?[] values) { + InfiniFrameNativeInteropStatus status = ShowOpenFilePtr(instance, title, defaultPath, multiSelect, filters, filtersCount, out int resultCount, out IntPtr ptrValues); + values = PtrToNativeStringArray(ptrValues, resultCount); + return status; + } [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values); + private static partial InfiniFrameNativeInteropStatus ShowOpenFolderPtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values); + internal static InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr instance, string title, string defaultPath, bool multiSelect, out string?[] values) { + InfiniFrameNativeInteropStatus status = ShowOpenFolderPtr(instance, title, defaultPath, multiSelect, out int resultCount, out IntPtr ptrValues); + values = PtrToNativeStringArray(ptrValues, resultCount); + return status; + } [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value); + private static partial InfiniFrameNativeInteropStatus ShowSaveFilePtr(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value); + internal static InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr instance, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out string? value) { + InfiniFrameNativeInteropStatus status = ShowSaveFilePtr(instance, title, defaultPath, filters, filtersCount, defaultFileName, out IntPtr ptrValue); + try { + value = PtrToNativeString(ptrValue); + } + finally { + if (ptrValue != IntPtr.Zero) { + FreeString(ptrValue); + } + } + + return status; + } [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus ShowMessage(IntPtr inst, string title, string text, InfiniFrameDialogButtons buttons, InfiniFrameDialogIcon icon, out InfiniFrameDialogResult value); + + private static string?[] PtrToNativeStringArray(IntPtr valuesPtr, int count) { + if (valuesPtr == IntPtr.Zero || count <= 0) { + return Array.Empty(); + } + + try { + IntPtr[] ptrArray = new IntPtr[count]; + string?[] values = new string?[count]; + Marshal.Copy(valuesPtr, ptrArray, 0, count); + for (int i = 0; i < count; i++) { + values[i] = PtrToNativeString(ptrArray[i]); + } + + return values; + } + finally { + FreeStringArray(valuesPtr, count); + } + } } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs index ee08f0798..17bdef8d6 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs @@ -17,4 +17,16 @@ public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus GetLastErrorMessagePtr(out IntPtr value); + + internal static string? GetLastErrorMessage() { + InfiniFrameNativeInteropStatus status = GetLastErrorMessagePtr(out IntPtr ptr); + if (status != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) return null; + + try { + return PtrToNativeString(ptr); + } + finally { + FreeString(ptr); + } + } } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs new file mode 100644 index 000000000..f826abbcb --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs @@ -0,0 +1,27 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs similarity index 53% rename from src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs rename to src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs index e5f95ac53..69d08a056 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs @@ -1,6 +1,7 @@ -// --------------------------------------------------------------------------------------------------------------------- +// --------------------------------------------------------------------------------------------------------------------- // Imports // --------------------------------------------------------------------------------------------------------------------- +using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -15,6 +16,9 @@ public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); @@ -24,9 +28,6 @@ public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetGrantBrowserPermissions(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool grant); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out IntPtr value); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMediaAutoplayEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); @@ -48,15 +49,23 @@ public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetIgnoreCertificateErrorsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized); [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool resizable); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y); [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out int width, out int height); @@ -67,99 +76,57 @@ public partial class InfiniFrameNative { [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out int minWidth, out int minHeight); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out IntPtr value); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value); [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetZoom(IntPtr instance, out int zoom); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + private static partial InfiniFrameNativeInteropStatus GetUserAgentPtr(IntPtr instance, out IntPtr value); + internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) { + InfiniFrameNativeInteropStatus status = GetUserAgentPtr(instance, out IntPtr ptr); + try { + userAgent = PtrToNativeString(ptr); + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled); + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + private static partial InfiniFrameNativeInteropStatus GetTitlePtr(IntPtr instance, out IntPtr value); + internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) { + InfiniFrameNativeInteropStatus status = GetTitlePtr(instance, out IntPtr ptr); + try { + title = PtrToNativeString(ptr); + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out IntPtr value); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message); - - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body); + private static partial InfiniFrameNativeInteropStatus GetIconFileNamePtr(IntPtr instance, out IntPtr value); + internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) { + InfiniFrameNativeInteropStatus status = GetIconFileNamePtr(instance, out IntPtr ptr); + try { + iconFileName = PtrToNativeString(ptr) ?? string.Empty; + } + finally { + if (ptr != IntPtr.Zero) { + FreeString(ptr); + } + } + + return status; + } } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs new file mode 100644 index 000000000..f48518717 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs @@ -0,0 +1,21 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs new file mode 100644 index 000000000..43feb1c82 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs @@ -0,0 +1,60 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +using System; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace InfiniFrame.NativeBridge; +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +public partial class InfiniFrameNative { + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight); + + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight); +} diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs index f9ba611a4..5e874a70d 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/InfiniFrameNative.cs @@ -82,80 +82,17 @@ internal static InfiniFrameNativeInteropStatus GetWindowRectangle(IntPtr instanc return status; } - internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) { - InfiniFrameNativeInteropStatus status = GetUserAgent(instance, out IntPtr ptr); - try { - userAgent = PtrToNativeString(ptr); - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) { - InfiniFrameNativeInteropStatus status = GetTitle(instance, out IntPtr ptr); - try { - title = PtrToNativeString(ptr); - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) { - InfiniFrameNativeInteropStatus status = GetIconFileName(instance, out IntPtr ptr); - try { - iconFileName = PtrToNativeString(ptr) ?? string.Empty; - } - finally { - if (ptr != IntPtr.Zero) { - FreeString(ptr); - } - } - - return status; - } - - internal static string? GetLastErrorMessage() { - InfiniFrameNativeInteropStatus status = GetLastErrorMessagePtr(out IntPtr ptr); - if (status != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) return null; - - try { - return PtrToNativeString(ptr); - } - finally { - FreeString(ptr); - } - } - internal static InfiniFrameNativeInteropStatus EnsureSucceeded(InfiniFrameNativeInteropStatus status, string operationName) { int fallbackLastError = Marshal.GetLastPInvokeError(); if (status is InfiniFrameNativeInteropStatus.Success && fallbackLastError is 0) return status; - InfiniFrameNativeInteropStatus fallbackStatus = GetLastErrorMessagePtr(out IntPtr ptr); - - string? fallbackMessage; - if (fallbackStatus != InfiniFrameNativeInteropStatus.Success || ptr == IntPtr.Zero) { - fallbackMessage = "No native error message provided."; - } - else { - try { - fallbackMessage = PtrToNativeString(ptr); - } - finally { - FreeString(ptr); - } - } + const string noNativeMessage = "No native error message provided."; + string fallbackMessage = GetLastErrorMessage() ?? noNativeMessage; + InfiniFrameNativeInteropStatus fallbackStatus = fallbackMessage == noNativeMessage + ? InfiniFrameNativeInteropStatus.OperationFailed + : InfiniFrameNativeInteropStatus.Success; throw new ApplicationException($"Native interop call '{operationName}' failed with unknown status state. Fallback last error {fallbackLastError}. {fallbackMessage} {fallbackStatus}"); } diff --git a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt index cb1bc0ea3..ecd670c33 100644 --- a/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt +++ b/src/InfiniFrame.NativeBridge/Native/CMakeLists.txt @@ -45,7 +45,10 @@ set(COMMON_SOURCES src/Api/Exports/Exports.Monitors.cpp src/Api/Exports/Exports.Platform.MacOs.cpp src/Api/Exports/Exports.Platform.Windows.cpp - src/Api/Exports/Exports.Window.cpp + src/Api/Exports/Exports.Window.Actions.cpp + src/Api/Exports/Exports.Window.Getters.cpp + src/Api/Exports/Exports.Window.Navigation.cpp + src/Api/Exports/Exports.Window.Setters.cpp ) set(TEST_SOURCES diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp new file mode 100644 index 000000000..266da9c0f --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp @@ -0,0 +1,34 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_Center(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Center(); }); +} + +EXPORTED InteropStatus InfiniFrame_ClearBrowserAutoFill(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->ClearBrowserAutoFill(); }); +} + +EXPORTED InteropStatus InfiniFrame_Restore(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Restore(); }); +} + +EXPORTED InteropStatus InfiniFrame_SetFocused(InfiniFrameWindow* instance) { + return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->SetFocused(); }); +} + +EXPORTED InteropStatus InfiniFrame_ShowNotification( + InfiniFrameWindow* instance, + const AutoString title, + const AutoString body +) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->ShowNotification(NullToEmpty(title), NullToEmpty(body)); + }); +} +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp similarity index 64% rename from src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp rename to src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp index 9d55ab582..029804e35 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp @@ -6,116 +6,6 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_Center(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Center(); }); -} - -EXPORTED InteropStatus InfiniFrame_ClearBrowserAutoFill(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->ClearBrowserAutoFill(); }); -} - -EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (!EnsureNotNull(content, "content")) - return; - window->NavigateToString(content); - }); -} - -EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - if (!EnsureNotNull(url, "url")) - return; - window->NavigateToUrl(url); - }); -} - -EXPORTED InteropStatus InfiniFrame_Restore(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Restore(); }); -} - -EXPORTED InteropStatus InfiniFrame_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->SendWebMessage(NullToEmpty(message)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTransparentEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetContextMenuEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoomEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetDevToolsEnabled(enabled); }); -} - -EXPORTED InteropStatus InfiniFrame_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFullScreen(fullScreen); }); -} - -EXPORTED InteropStatus InfiniFrame_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->SetIconFile(NullToEmpty(filename)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaximized(maximized); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaxSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinimized(minimized); }); -} - -EXPORTED InteropStatus InfiniFrame_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetPosition(x, y); }); -} - -EXPORTED InteropStatus InfiniFrame_SetResizable(InfiniFrameWindow* instance, const bool resizable) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizable(resizable); }); -} - -EXPORTED InteropStatus InfiniFrame_SetSize(InfiniFrameWindow* instance, const int width, const int height) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetSize(width, height); }); -} - -EXPORTED InteropStatus InfiniFrame_SetTitle(InfiniFrameWindow* instance, const AutoString title) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTitle(NullToEmpty(title)); }); -} - -EXPORTED InteropStatus InfiniFrame_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTopmost(topmost); }); -} - -EXPORTED InteropStatus InfiniFrame_SetZoom(InfiniFrameWindow* instance, const int zoom) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoom(zoom); }); -} - -EXPORTED InteropStatus InfiniFrame_ShowNotification(InfiniFrameWindow* instance, const AutoString title, const AutoString body) { - return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { - window->ShowNotification(NullToEmpty(title), NullToEmpty(body)); - }); -} - -EXPORTED InteropStatus InfiniFrame_SetFocused(InfiniFrameWindow* instance) { - return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->SetFocused(); }); -} - EXPORTED InteropStatus InfiniFrame_GetTransparentEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp new file mode 100644 index 000000000..0ffde5d6a --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp @@ -0,0 +1,30 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (!EnsureNotNull(content, "content")) + return; + window->NavigateToString(content); + }); +} + +EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + if (!EnsureNotNull(url, "url")) + return; + window->NavigateToUrl(url); + }); +} + +EXPORTED InteropStatus InfiniFrame_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->SendWebMessage(NullToEmpty(message)); + }); +} +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp new file mode 100644 index 000000000..c50682901 --- /dev/null +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp @@ -0,0 +1,74 @@ +// --------------------------------------------------------------------------------------------------------------------- +// Imports +// --------------------------------------------------------------------------------------------------------------------- +#include "Api/Exports/Exports.h" +// --------------------------------------------------------------------------------------------------------------------- +// Code +// --------------------------------------------------------------------------------------------------------------------- +extern "C" { +EXPORTED InteropStatus InfiniFrame_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTransparentEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetContextMenuEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoomEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetDevToolsEnabled(enabled); }); +} + +EXPORTED InteropStatus InfiniFrame_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFullScreen(fullScreen); }); +} + +EXPORTED InteropStatus InfiniFrame_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { + window->SetIconFile(NullToEmpty(filename)); + }); +} + +EXPORTED InteropStatus InfiniFrame_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaximized(maximized); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaxSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinimized(minimized); }); +} + +EXPORTED InteropStatus InfiniFrame_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetPosition(x, y); }); +} + +EXPORTED InteropStatus InfiniFrame_SetResizable(InfiniFrameWindow* instance, const bool resizable) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizable(resizable); }); +} + +EXPORTED InteropStatus InfiniFrame_SetSize(InfiniFrameWindow* instance, const int width, const int height) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetSize(width, height); }); +} + +EXPORTED InteropStatus InfiniFrame_SetTitle(InfiniFrameWindow* instance, const AutoString title) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTitle(NullToEmpty(title)); }); +} + +EXPORTED InteropStatus InfiniFrame_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTopmost(topmost); }); +} + +EXPORTED InteropStatus InfiniFrame_SetZoom(InfiniFrameWindow* instance, const int zoom) { + return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoom(zoom); }); +} +} diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h index 795933ff9..d7a951d0f 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h @@ -27,11 +27,6 @@ // Multi-string results (AutoString** from dialog APIs) must be freed with // InfiniFrame_FreeStringArray(values, count). // -// Affected exports: -// InfiniFrame_GetUserAgent, InfiniFrame_GetTitle, InfiniFrame_GetIconFileName, -// InfiniFrame_GetLastErrorMessage, InfiniFrame_ShowOpenFile, -// InfiniFrame_ShowOpenFolder, InfiniFrame_ShowSaveFile -// // BORROWED (callee does not take ownership): // All AutoString input parameters (const AutoString) are borrowed for the // duration of the call. The native layer copies what it needs internally. diff --git a/src/InfiniFrame/Window/InfiniFrameWindow.cs b/src/InfiniFrame/Window/InfiniFrameWindow.cs index 9d8714662..28eca32ab 100644 --- a/src/InfiniFrame/Window/InfiniFrameWindow.cs +++ b/src/InfiniFrame/Window/InfiniFrameWindow.cs @@ -286,16 +286,8 @@ public void SendNotification(string title, string body) { Invoke(() => { InfiniFrameNative.EnsureSucceeded( - InfiniFrameNative.ShowSaveFile(InstanceHandle, title, defaultPath, nativeFilters, filters.Length, null, out IntPtr ptrResult), + InfiniFrameNative.ShowSaveFile(InstanceHandle, title, defaultPath, nativeFilters, filters.Length, null, out result), nameof(InfiniFrameNative.ShowSaveFile)); - if (ptrResult == IntPtr.Zero) return; - - try { - result = InfiniFrameNative.PtrToNativeString(ptrResult); - } - finally { - InfiniFrameNative.FreeString(ptrResult); - } }); return result; @@ -423,23 +415,9 @@ public void Initialize() { Invoke(() => { InfiniFrameNativeInteropStatus status = foldersOnly - ? InfiniFrameNative.ShowOpenFolder(InstanceHandle, title, defaultPath, multiSelect, out int resultCount, out IntPtr ptrResults) - : InfiniFrameNative.ShowOpenFile(InstanceHandle, title, defaultPath, multiSelect, nativeFilters, nativeFilters.Length, out resultCount, out ptrResults); + ? InfiniFrameNative.ShowOpenFolder(InstanceHandle, title, defaultPath, multiSelect, out results) + : InfiniFrameNative.ShowOpenFile(InstanceHandle, title, defaultPath, multiSelect, nativeFilters, nativeFilters.Length, out results); InfiniFrameNative.EnsureSucceeded(status, foldersOnly ? nameof(InfiniFrameNative.ShowOpenFolder) : nameof(InfiniFrameNative.ShowOpenFile)); - - if (resultCount == 0 || ptrResults == IntPtr.Zero) return; - - try { - IntPtr[] ptrArray = new IntPtr[resultCount]; - results = new string?[resultCount]; - Marshal.Copy(ptrResults, ptrArray, 0, resultCount); - for (int i = 0; i < resultCount; i++) { - results[i] = InfiniFrameNative.PtrToNativeString(ptrArray[i]); - } - } - finally { - InfiniFrameNative.FreeStringArray(ptrResults, resultCount); - } }); return results; diff --git a/src/InfiniFrame/Window/InfiniFrameWindowExtensions.cs b/src/InfiniFrame/Window/InfiniFrameWindowExtensions.cs index 3aa7b3523..46c7761d4 100644 --- a/src/InfiniFrame/Window/InfiniFrameWindowExtensions.cs +++ b/src/InfiniFrame/Window/InfiniFrameWindowExtensions.cs @@ -757,19 +757,9 @@ public static T SetTitle(this T window, string? title) where T : class, IInfi window.Invoke(() => { InfiniFrameNative.EnsureSucceeded( - InfiniFrameNative.GetTitle(window.InstanceHandle, out IntPtr ptr), + InfiniFrameNative.GetTitle(window.InstanceHandle, out string? oldTitle), nameof(InfiniFrameNative.GetTitle)); - string? oldTitle; - try { - oldTitle = InfiniFrameNative.PtrToNativeString(ptr); - } - finally { - if (ptr != IntPtr.Zero) { - InfiniFrameNative.FreeString(ptr); - } - } - if (title == oldTitle) return; InfiniFrameNative.SetTitle( From b1b55090f627b0db288b130228d0ed6cab9b2246 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 15:54:17 +0200 Subject: [PATCH 12/13] Update native and managed APIs to standardize `InfiniFrameNative` naming conventions across all exported functions and library imports. --- .../migration/photino-breaking-changes.md | 16 ++--- .../InfiniFrameNative.CustomSchemes.cs | 2 +- .../Exports/InfiniFrameNative.Dialog.cs | 8 +-- .../Exports/InfiniFrameNative.Dispatch.cs | 2 +- .../Exports/InfiniFrameNative.Events.cs | 12 ++-- .../Exports/InfiniFrameNative.Memory.cs | 6 +- .../Exports/InfiniFrameNative.Monitors.cs | 2 +- .../InfiniFrameNative.Window.Actions.cs | 10 ++-- .../Exports/InfiniFrameNative.Window.Get.cs | 54 ++++++++--------- .../InfiniFrameNative.Window.Navigation.cs | 6 +- .../Exports/InfiniFrameNative.Window.Set.cs | 32 +++++----- .../src/Api/Exports/Exports.CustomSchemes.cpp | 2 +- .../Native/src/Api/Exports/Exports.Dialog.cpp | 14 ++--- .../src/Api/Exports/Exports.Dispatch.cpp | 2 +- .../Native/src/Api/Exports/Exports.Events.cpp | 12 ++-- .../src/Api/Exports/Exports.Lifecycle.cpp | 8 +-- .../Native/src/Api/Exports/Exports.Memory.cpp | 10 ++-- .../src/Api/Exports/Exports.Monitors.cpp | 2 +- .../Api/Exports/Exports.Platform.MacOs.cpp | 2 +- .../Api/Exports/Exports.Platform.Windows.cpp | 8 +-- .../Api/Exports/Exports.Window.Actions.cpp | 10 ++-- .../Api/Exports/Exports.Window.Getters.cpp | 60 +++++++++---------- .../Api/Exports/Exports.Window.Navigation.cpp | 6 +- .../Api/Exports/Exports.Window.Setters.cpp | 32 +++++----- .../Native/src/Api/Exports/Exports.h | 4 +- .../Shared/Utilities/StringArrayCopy.h | 2 +- .../Runtime/Shared/Window/InfiniFrameWindow.h | 6 +- 27 files changed, 165 insertions(+), 165 deletions(-) diff --git a/docs/docs/migration/photino-breaking-changes.md b/docs/docs/migration/photino-breaking-changes.md index cd0970993..ec0892fc5 100644 --- a/docs/docs/migration/photino-breaking-changes.md +++ b/docs/docs/migration/photino-breaking-changes.md @@ -26,12 +26,12 @@ This document walks through what changed to help you migrate. | Native DLL | `Photino.Native` | `InfiniFrame.Native` (internal) | | C++ class | `Photino` | `InfiniFrameWindow` | | C++ init params | `PhotinoInitParams` | `InfiniFrameInitParams` | -| Exported function prefix | `Photino_` | `InfiniFrame_` | +| Exported function prefix | `Photino_` | `InfiniFrameNative_` | | Default window title | `"Photino"` | `"InfiniFrame"` | | Default user agent | `"Photino WebView"` | `"InfiniFrame WebView"` | | Default temp path | `%LocalAppData%\Photino` (Windows only) | `%TEMP%\infiniframe` (all platforms) | -Every type that was prefixed `Photino` is now prefixed `InfiniFrame`. If you're calling the native DLL directly via P/Invoke, all exported symbol names need to change from `Photino_*` to `InfiniFrame_*`. +Every type that was prefixed `Photino` is now prefixed `InfiniFrame`. If you're calling the native DLL directly via P/Invoke, all exported symbol names need to change from `Photino_*` to `InfiniFrameNative_*`. ## Entry Point and Builder API @@ -288,7 +288,7 @@ static extern void Photino_SetTitle(IntPtr instance, string title); // InfiniFrame [LibraryImport("InfiniFrame.Native", ...)] -static partial void InfiniFrame_SetTitle(IntPtr instance, ...); +static partial void InfiniFrameNative_SetTitle(IntPtr instance, ...); ``` ### String ownership @@ -298,8 +298,8 @@ Photino has no explicit API for freeing native-allocated strings, which causes m InfiniFrame exports explicit free functions that must be called on any string returned from the native layer: ```csharp -InfiniFrame_FreeString(ptr); -InfiniFrame_FreeStringArray(ptr, count); +InfiniFrameNative_FreeString(ptr); +InfiniFrameNative_FreeStringArray(ptr, count); ``` The managed wrapper calls these automatically. If you're calling native exports directly, you're responsible for invoking them yourself. @@ -313,7 +313,7 @@ The native `SaveFileDialog` export gained a `defaultFileName` parameter: Photino_ShowSaveFile(title, defaultPath, filters, count) // InfiniFrame -InfiniFrame_ShowSaveFile(title, defaultPath, filters, count, defaultFileName) +InfiniFrameNative_ShowSaveFile(title, defaultPath, filters, count, defaultFileName) ``` ## Known Photino Issues Addressed @@ -321,8 +321,8 @@ InfiniFrame_ShowSaveFile(title, defaultPath, filters, count, defaultFileName) | Photino Issue | Description | How InfiniFrame addresses it | |------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------| | [photino.native #173/174](https://github.com/tryphotino/photino.native/issues/173) | Custom scheme handlers completely broken on Windows (`WebResourceRequested` never fires) | Rewritten registration path; scheme handlers tested end-to-end in examples | -| [photino.native #165](https://github.com/tryphotino/photino.native/issues/165) | Memory leak in `SendWebMessage` on Windows | Explicit `InfiniFrame_FreeString` ownership model; Pimpl isolates per-window native allocations | -| [photino.native #158](https://github.com/tryphotino/photino.native/issues/158) | No way to programmatically focus a window | `InfiniFrame_SetFocused` / `InfiniFrame_GetFocused` exported and exposed via `IInfiniFrameWindow.Focused` | +| [photino.native #165](https://github.com/tryphotino/photino.native/issues/165) | Memory leak in `SendWebMessage` on Windows | Explicit `InfiniFrameNative_FreeString` ownership model; Pimpl isolates per-window native allocations | +| [photino.native #158](https://github.com/tryphotino/photino.native/issues/158) | No way to programmatically focus a window | `InfiniFrameNative_SetFocused` / `InfiniFrameNative_GetFocused` exported and exposed via `IInfiniFrameWindow.Focused` | | [photino.native #163](https://github.com/tryphotino/photino.native/issues/163) | UTF encoding bug in `SetWebView2RuntimePath` silently corrupts non-ASCII paths | `simdutf` used for all UTF-8/UTF-16 conversions on Windows | | [photino.native #141](https://github.com/tryphotino/photino.native/issues/141) | Stack overflow in `WaitForExit` on Linux | Per-window independent message loops; no shared global `MessageLoopState` lock | | [photino.NET #75](https://github.com/tryphotino/photino.NET/issues/75) | `RegisterWindowClosingHandler` does not fire on Linux | Closing handler rewritten using the GTK `delete-event` signal correctly | diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs index 459c8fba9..3c1ab8959 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs @@ -9,6 +9,6 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs index d5b7f31cc..8725f0910 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs @@ -11,7 +11,7 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus ShowOpenFilePtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values); internal static InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr instance, string title, string defaultPath, bool multiSelect, string[] filters, int filtersCount, out string?[] values) { InfiniFrameNativeInteropStatus status = ShowOpenFilePtr(instance, title, defaultPath, multiSelect, filters, filtersCount, out int resultCount, out IntPtr ptrValues); @@ -19,7 +19,7 @@ internal static InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr instance, str return status; } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus ShowOpenFolderPtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values); internal static InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr instance, string title, string defaultPath, bool multiSelect, out string?[] values) { InfiniFrameNativeInteropStatus status = ShowOpenFolderPtr(instance, title, defaultPath, multiSelect, out int resultCount, out IntPtr ptrValues); @@ -27,7 +27,7 @@ internal static InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr instance, s return status; } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus ShowSaveFilePtr(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value); internal static InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr instance, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out string? value) { InfiniFrameNativeInteropStatus status = ShowSaveFilePtr(instance, title, defaultPath, filters, filtersCount, defaultFileName, out IntPtr ptrValue); @@ -43,7 +43,7 @@ internal static InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr instance, str return status; } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus ShowMessage(IntPtr inst, string title, string text, InfiniFrameDialogButtons buttons, InfiniFrameDialogIcon icon, out InfiniFrameDialogResult value); private static string?[] PtrToNativeStringArray(IntPtr valuesPtr, int count) { diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs index 9712b58e7..f34e9718a 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs @@ -9,6 +9,6 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs index 641399a94..cc5e011a5 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs @@ -10,21 +10,21 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetClosingCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetClosingCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetClosingCallback(IntPtr instance, CppClosingDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_setClosedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setClosedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetClosedCallback(IntPtr instance, CppClosedDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocusInCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusInCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetFocusInCallback(IntPtr instance, CppFocusInDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocusOutCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusOutCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetFocusOutCallback(IntPtr instance, CppFocusOutDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMovedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMovedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetMovedCallback(IntPtr instance, CppMovedDelegate callback); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetResizedCallback(IntPtr instance, CppResizedDelegate callback); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs index 17bdef8d6..ada2ca8e5 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs @@ -9,13 +9,13 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_FreeString", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeString", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus FreeString(IntPtr value); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_FreeStringArray", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeStringArray", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus FreeStringArray(IntPtr values, int count); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus GetLastErrorMessagePtr(out IntPtr value); internal static string? GetLastErrorMessage() { diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs index 1065bc289..1b3e7f7b6 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs @@ -10,6 +10,6 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs index f826abbcb..0509a826b 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs @@ -10,18 +10,18 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs index 69d08a056..840ee9f0d 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs @@ -10,79 +10,79 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool fullScreen); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetGrantBrowserPermissions(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool grant); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMediaAutoplayEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFileSystemAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFileSystemAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetFileSystemAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetWebSecurityEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetWebSecurityEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetWebSecurityEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetJavascriptClipboardAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetJavascriptClipboardAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetJavascriptClipboardAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMediaStreamEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaStreamEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMediaStreamEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetSmoothScrollingEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSmoothScrollingEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetSmoothScrollingEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetIgnoreCertificateErrorsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool resizable); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out int width, out int height); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out int maxWidth, out int maxHeight); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out int minWidth, out int minHeight); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetZoom(IntPtr instance, out int zoom); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus GetUserAgentPtr(IntPtr instance, out IntPtr value); internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) { InfiniFrameNativeInteropStatus status = GetUserAgentPtr(instance, out IntPtr ptr); @@ -98,7 +98,7 @@ internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out return status; } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus GetTitlePtr(IntPtr instance, out IntPtr value); internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) { InfiniFrameNativeInteropStatus status = GetTitlePtr(instance, out IntPtr ptr); @@ -114,7 +114,7 @@ internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out str return status; } - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] private static partial InfiniFrameNativeInteropStatus GetIconFileNamePtr(IntPtr instance, out IntPtr value); internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) { InfiniFrameNativeInteropStatus status = GetIconFileNamePtr(instance, out IntPtr ptr); diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs index f48518717..345b5a3f1 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs @@ -10,12 +10,12 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs index 43feb1c82..fb8ccfa79 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs @@ -10,51 +10,51 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight); } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp index a1d2664e4..ce2926b96 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.CustomSchemes.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_AddCustomSchemeName(InfiniFrameWindow* instance, const AutoString scheme) { +EXPORTED InteropStatus InfiniFrameNative_AddCustomSchemeName(InfiniFrameWindow* instance, const AutoString scheme) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureNotNull(scheme, "scheme")) return; diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp index 323f66c77..42b90d451 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dialog.cpp @@ -6,8 +6,8 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -/// @param[out] values Owned string array, caller must free with InfiniFrame_FreeStringArray(values, resultCount). -EXPORTED InteropStatus InfiniFrame_ShowOpenFile( +/// @param[out] values Owned string array, caller must free with InfiniFrameNative_FreeStringArray(values, resultCount). +EXPORTED InteropStatus InfiniFrameNative_ShowOpenFile( InfiniFrameWindow* inst, const AutoString title, const AutoString defaultPath, @@ -32,8 +32,8 @@ EXPORTED InteropStatus InfiniFrame_ShowOpenFile( }); } -/// @param[out] values Owned string array, caller must free with InfiniFrame_FreeStringArray(values, resultCount). -EXPORTED InteropStatus InfiniFrame_ShowOpenFolder( +/// @param[out] values Owned string array, caller must free with InfiniFrameNative_FreeStringArray(values, resultCount). +EXPORTED InteropStatus InfiniFrameNative_ShowOpenFolder( InfiniFrameWindow* inst, const AutoString title, const AutoString defaultPath, @@ -53,8 +53,8 @@ EXPORTED InteropStatus InfiniFrame_ShowOpenFolder( }); } -/// @param[out] value Owned string, caller must free with InfiniFrame_FreeString. -EXPORTED InteropStatus InfiniFrame_ShowSaveFile( +/// @param[out] value Owned string, caller must free with InfiniFrameNative_FreeString. +EXPORTED InteropStatus InfiniFrameNative_ShowSaveFile( InfiniFrameWindow* inst, const AutoString title, const AutoString defaultPath, @@ -75,7 +75,7 @@ EXPORTED InteropStatus InfiniFrame_ShowSaveFile( }); } -EXPORTED InteropStatus InfiniFrame_ShowMessage( +EXPORTED InteropStatus InfiniFrameNative_ShowMessage( InfiniFrameWindow* inst, const AutoString title, const AutoString text, diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp index 78dde7f9e..138624971 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Dispatch.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_Invoke(InfiniFrameWindow* instance, const ACTION callback) { +EXPORTED InteropStatus InfiniFrameNative_Invoke(InfiniFrameWindow* instance, const ACTION callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (callback == nullptr) throw std::invalid_argument("Argument 'callback' is null."); diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp index daeafb618..05ce8d78c 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Events.cpp @@ -6,27 +6,27 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_SetClosingCallback(InfiniFrameWindow* instance, const ClosingCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_SetClosingCallback(InfiniFrameWindow* instance, const ClosingCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetClosingCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_setClosedCallback(InfiniFrameWindow* instance, const ClosedCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_setClosedCallback(InfiniFrameWindow* instance, const ClosedCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetClosedCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_SetFocusInCallback(InfiniFrameWindow* instance, const FocusInCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_SetFocusInCallback(InfiniFrameWindow* instance, const FocusInCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFocusInCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_SetFocusOutCallback(InfiniFrameWindow* instance, const FocusOutCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_SetFocusOutCallback(InfiniFrameWindow* instance, const FocusOutCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFocusOutCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_SetMovedCallback(InfiniFrameWindow* instance, const MovedCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_SetMovedCallback(InfiniFrameWindow* instance, const MovedCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMovedCallback(callback); }); } -EXPORTED InteropStatus InfiniFrame_SetResizedCallback(InfiniFrameWindow* instance, const ResizedCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_SetResizedCallback(InfiniFrameWindow* instance, const ResizedCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizedCallback(callback); }); } } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp index 370bd2996..b6250fb85 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Lifecycle.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_ctor(InfiniFrameInitParams* initParams, InfiniFrameWindow** value) { +EXPORTED InteropStatus InfiniFrameNative_ctor(InfiniFrameInitParams* initParams, InfiniFrameWindow** value) { ResetOut(value, static_cast(nullptr)); return RunExportStatus([&] { if (!EnsureOutNotNull(value, "value")) @@ -21,7 +21,7 @@ EXPORTED InteropStatus InfiniFrame_ctor(InfiniFrameInitParams* initParams, Infin }); } -EXPORTED InteropStatus InfiniFrame_dtor(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_dtor(InfiniFrameWindow* instance) { return RunExportStatus([&] { if (!EnsureNotNull(instance, "instance")) return; @@ -29,11 +29,11 @@ EXPORTED InteropStatus InfiniFrame_dtor(InfiniFrameWindow* instance) { }); } -EXPORTED InteropStatus InfiniFrame_Close(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_Close(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Close(); }); } -EXPORTED InteropStatus InfiniFrame_WaitForExit(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_WaitForExit(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->WaitForExit(); }); } } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp index e23c9281a..b1fa67fad 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Memory.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_FreeString(AutoString value) { +EXPORTED InteropStatus InfiniFrameNative_FreeString(AutoString value) { return RunExportStatus([&] { if (!EnsureNotNull(value, "value")) return; @@ -20,7 +20,7 @@ EXPORTED InteropStatus InfiniFrame_FreeString(AutoString value) { }); } -EXPORTED InteropStatus InfiniFrame_FreeStringArray(AutoString* values, const int count) { +EXPORTED InteropStatus InfiniFrameNative_FreeStringArray(AutoString* values, const int count) { return RunExportStatus([&] { if (!EnsureNotNull(values, "values")) return; @@ -28,7 +28,7 @@ EXPORTED InteropStatus InfiniFrame_FreeStringArray(AutoString* values, const int throw std::invalid_argument("Argument 'count' must be >= 0."); for (int i = 0; i < count; ++i) { if (values[i] != nullptr) { - InfiniFrame_FreeString(values[i]); + InfiniFrameNative_FreeString(values[i]); } } #ifdef _WIN32 @@ -41,8 +41,8 @@ EXPORTED InteropStatus InfiniFrame_FreeStringArray(AutoString* values, const int }); } -/// @param[out] value Owned string, caller must free with InfiniFrame_FreeString. -EXPORTED InteropStatus InfiniFrame_GetLastErrorMessage(AutoString* value) { +/// @param[out] value Owned string, caller must free with InfiniFrameNative_FreeString. +EXPORTED InteropStatus InfiniFrameNative_GetLastErrorMessage(AutoString* value) { // Must NOT go through RunExportStatus, that helper calls SetSuccess() first, which would wipe g_lastErrorMessage // before we can read it. ResetOut(value, static_cast(nullptr)); diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp index 72f9eca0f..fb2d4cacb 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Monitors.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_GetAllMonitors(InfiniFrameWindow* instance, const GetAllMonitorsCallback callback) { +EXPORTED InteropStatus InfiniFrameNative_GetAllMonitors(InfiniFrameWindow* instance, const GetAllMonitorsCallback callback) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (callback == nullptr) throw std::invalid_argument("Argument 'callback' is null."); diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp index c31a64f58..6f3bc107d 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.MacOs.cpp @@ -7,7 +7,7 @@ // --------------------------------------------------------------------------------------------------------------------- extern "C" { #ifdef __APPLE__ -EXPORTED InteropStatus InfiniFrame_register_mac() { +EXPORTED InteropStatus InfiniFrameNative_register_mac() { return RunExportStatus([] { InfiniFrameWindow::Register(); }); } #endif diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp index 6ed006ec9..2a9cfea55 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Platform.Windows.cpp @@ -7,7 +7,7 @@ // --------------------------------------------------------------------------------------------------------------------- extern "C" { #ifdef _WIN32 -EXPORTED InteropStatus InfiniFrame_register_win32(const HINSTANCE hInstance) { +EXPORTED InteropStatus InfiniFrameNative_register_win32(const HINSTANCE hInstance) { return RunExportStatus([&] { if (hInstance == nullptr) throw std::invalid_argument("Argument 'hInstance' is null."); @@ -15,7 +15,7 @@ EXPORTED InteropStatus InfiniFrame_register_win32(const HINSTANCE hInstance) { }); } -EXPORTED InteropStatus InfiniFrame_getHwnd_win32(InfiniFrameWindow* instance, HWND* value) { +EXPORTED InteropStatus InfiniFrameNative_getHwnd_win32(InfiniFrameWindow* instance, HWND* value) { ResetOut(value, static_cast(nullptr)); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(value, "value")) @@ -25,7 +25,7 @@ EXPORTED InteropStatus InfiniFrame_getHwnd_win32(InfiniFrameWindow* instance, HW } EXPORTED InteropStatus -InfiniFrame_setWebView2RuntimePath_win32(InfiniFrameWindow*, const AutoString webView2RuntimePath) { +InfiniFrameNative_setWebView2RuntimePath_win32(InfiniFrameWindow*, const AutoString webView2RuntimePath) { return RunExportStatus([&] { if (!EnsureNotNull(webView2RuntimePath, "webView2RuntimePath")) return; @@ -33,7 +33,7 @@ InfiniFrame_setWebView2RuntimePath_win32(InfiniFrameWindow*, const AutoString we }); } -EXPORTED InteropStatus InfiniFrame_GetNotificationsEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetNotificationsEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp index 266da9c0f..5b0e6a8f3 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Actions.cpp @@ -6,23 +6,23 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_Center(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_Center(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Center(); }); } -EXPORTED InteropStatus InfiniFrame_ClearBrowserAutoFill(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_ClearBrowserAutoFill(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->ClearBrowserAutoFill(); }); } -EXPORTED InteropStatus InfiniFrame_Restore(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_Restore(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->Restore(); }); } -EXPORTED InteropStatus InfiniFrame_SetFocused(InfiniFrameWindow* instance) { +EXPORTED InteropStatus InfiniFrameNative_SetFocused(InfiniFrameWindow* instance) { return RunWindowExportStatus(instance, [](InfiniFrameWindow* window) { window->SetFocused(); }); } -EXPORTED InteropStatus InfiniFrame_ShowNotification( +EXPORTED InteropStatus InfiniFrameNative_ShowNotification( InfiniFrameWindow* instance, const AutoString title, const AutoString body diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp index 029804e35..7be48ec00 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Getters.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_GetTransparentEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetTransparentEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -15,7 +15,7 @@ EXPORTED InteropStatus InfiniFrame_GetTransparentEnabled(InfiniFrameWindow* inst }); } -EXPORTED InteropStatus InfiniFrame_GetContextMenuEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetContextMenuEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -24,7 +24,7 @@ EXPORTED InteropStatus InfiniFrame_GetContextMenuEnabled(InfiniFrameWindow* inst }); } -EXPORTED InteropStatus InfiniFrame_GetZoomEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetZoomEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -33,7 +33,7 @@ EXPORTED InteropStatus InfiniFrame_GetZoomEnabled(InfiniFrameWindow* instance, b }); } -EXPORTED InteropStatus InfiniFrame_GetDevToolsEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetDevToolsEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -42,7 +42,7 @@ EXPORTED InteropStatus InfiniFrame_GetDevToolsEnabled(InfiniFrameWindow* instanc }); } -EXPORTED InteropStatus InfiniFrame_GetFullScreen(InfiniFrameWindow* instance, bool* fullScreen) { +EXPORTED InteropStatus InfiniFrameNative_GetFullScreen(InfiniFrameWindow* instance, bool* fullScreen) { ResetOut(fullScreen, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(fullScreen, "fullScreen")) @@ -51,7 +51,7 @@ EXPORTED InteropStatus InfiniFrame_GetFullScreen(InfiniFrameWindow* instance, bo }); } -EXPORTED InteropStatus InfiniFrame_GetGrantBrowserPermissions(InfiniFrameWindow* instance, bool* grant) { +EXPORTED InteropStatus InfiniFrameNative_GetGrantBrowserPermissions(InfiniFrameWindow* instance, bool* grant) { ResetOut(grant, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(grant, "grant")) @@ -60,8 +60,8 @@ EXPORTED InteropStatus InfiniFrame_GetGrantBrowserPermissions(InfiniFrameWindow* }); } -/// @param[out] value Owned string, caller must free with InfiniFrame_FreeString. -EXPORTED InteropStatus InfiniFrame_GetUserAgent(InfiniFrameWindow* instance, AutoString* value) { +/// @param[out] value Owned string, caller must free with InfiniFrameNative_FreeString. +EXPORTED InteropStatus InfiniFrameNative_GetUserAgent(InfiniFrameWindow* instance, AutoString* value) { ResetOut(value, static_cast(nullptr)); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(value, "value")) @@ -70,7 +70,7 @@ EXPORTED InteropStatus InfiniFrame_GetUserAgent(InfiniFrameWindow* instance, Aut }); } -EXPORTED InteropStatus InfiniFrame_GetMediaAutoplayEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetMediaAutoplayEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -79,7 +79,7 @@ EXPORTED InteropStatus InfiniFrame_GetMediaAutoplayEnabled(InfiniFrameWindow* in }); } -EXPORTED InteropStatus InfiniFrame_GetFileSystemAccessEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetFileSystemAccessEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -88,7 +88,7 @@ EXPORTED InteropStatus InfiniFrame_GetFileSystemAccessEnabled(InfiniFrameWindow* }); } -EXPORTED InteropStatus InfiniFrame_GetWebSecurityEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetWebSecurityEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -97,7 +97,7 @@ EXPORTED InteropStatus InfiniFrame_GetWebSecurityEnabled(InfiniFrameWindow* inst }); } -EXPORTED InteropStatus InfiniFrame_GetJavascriptClipboardAccessEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetJavascriptClipboardAccessEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -106,7 +106,7 @@ EXPORTED InteropStatus InfiniFrame_GetJavascriptClipboardAccessEnabled(InfiniFra }); } -EXPORTED InteropStatus InfiniFrame_GetMediaStreamEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetMediaStreamEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -115,7 +115,7 @@ EXPORTED InteropStatus InfiniFrame_GetMediaStreamEnabled(InfiniFrameWindow* inst }); } -EXPORTED InteropStatus InfiniFrame_GetSmoothScrollingEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetSmoothScrollingEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -124,7 +124,7 @@ EXPORTED InteropStatus InfiniFrame_GetSmoothScrollingEnabled(InfiniFrameWindow* }); } -EXPORTED InteropStatus InfiniFrame_GetMaximized(InfiniFrameWindow* instance, bool* isMaximized) { +EXPORTED InteropStatus InfiniFrameNative_GetMaximized(InfiniFrameWindow* instance, bool* isMaximized) { ResetOut(isMaximized, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(isMaximized, "isMaximized")) @@ -133,7 +133,7 @@ EXPORTED InteropStatus InfiniFrame_GetMaximized(InfiniFrameWindow* instance, boo }); } -EXPORTED InteropStatus InfiniFrame_GetMinimized(InfiniFrameWindow* instance, bool* isMinimized) { +EXPORTED InteropStatus InfiniFrameNative_GetMinimized(InfiniFrameWindow* instance, bool* isMinimized) { ResetOut(isMinimized, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(isMinimized, "isMinimized")) @@ -142,7 +142,7 @@ EXPORTED InteropStatus InfiniFrame_GetMinimized(InfiniFrameWindow* instance, boo }); } -EXPORTED InteropStatus InfiniFrame_GetIgnoreCertificateErrorsEnabled(InfiniFrameWindow* instance, bool* enabled) { +EXPORTED InteropStatus InfiniFrameNative_GetIgnoreCertificateErrorsEnabled(InfiniFrameWindow* instance, bool* enabled) { ResetOut(enabled, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(enabled, "enabled")) @@ -151,7 +151,7 @@ EXPORTED InteropStatus InfiniFrame_GetIgnoreCertificateErrorsEnabled(InfiniFrame }); } -EXPORTED InteropStatus InfiniFrame_GetPosition(InfiniFrameWindow* instance, int* x, int* y) { +EXPORTED InteropStatus InfiniFrameNative_GetPosition(InfiniFrameWindow* instance, int* x, int* y) { ResetOut2(x, y, 0); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(x, "x") || !EnsureOutNotNull(y, "y")) @@ -160,7 +160,7 @@ EXPORTED InteropStatus InfiniFrame_GetPosition(InfiniFrameWindow* instance, int* }); } -EXPORTED InteropStatus InfiniFrame_GetResizable(InfiniFrameWindow* instance, bool* resizable) { +EXPORTED InteropStatus InfiniFrameNative_GetResizable(InfiniFrameWindow* instance, bool* resizable) { ResetOut(resizable, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(resizable, "resizable")) @@ -169,7 +169,7 @@ EXPORTED InteropStatus InfiniFrame_GetResizable(InfiniFrameWindow* instance, boo }); } -EXPORTED InteropStatus InfiniFrame_GetScreenDpi(InfiniFrameWindow* instance, unsigned int* value) { +EXPORTED InteropStatus InfiniFrameNative_GetScreenDpi(InfiniFrameWindow* instance, unsigned int* value) { ResetOut(value, static_cast(0)); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(value, "value")) @@ -178,7 +178,7 @@ EXPORTED InteropStatus InfiniFrame_GetScreenDpi(InfiniFrameWindow* instance, uns }); } -EXPORTED InteropStatus InfiniFrame_GetSize(InfiniFrameWindow* instance, int* width, int* height) { +EXPORTED InteropStatus InfiniFrameNative_GetSize(InfiniFrameWindow* instance, int* width, int* height) { ResetOut2(width, height, 0); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(width, "width") || !EnsureOutNotNull(height, "height")) @@ -187,7 +187,7 @@ EXPORTED InteropStatus InfiniFrame_GetSize(InfiniFrameWindow* instance, int* wid }); } -EXPORTED InteropStatus InfiniFrame_GetMaxSize(InfiniFrameWindow* instance, int* width, int* height) { +EXPORTED InteropStatus InfiniFrameNative_GetMaxSize(InfiniFrameWindow* instance, int* width, int* height) { ResetOut2(width, height, 0); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(width, "width") || !EnsureOutNotNull(height, "height")) @@ -196,7 +196,7 @@ EXPORTED InteropStatus InfiniFrame_GetMaxSize(InfiniFrameWindow* instance, int* }); } -EXPORTED InteropStatus InfiniFrame_GetMinSize(InfiniFrameWindow* instance, int* width, int* height) { +EXPORTED InteropStatus InfiniFrameNative_GetMinSize(InfiniFrameWindow* instance, int* width, int* height) { ResetOut2(width, height, 0); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(width, "width") || !EnsureOutNotNull(height, "height")) @@ -205,8 +205,8 @@ EXPORTED InteropStatus InfiniFrame_GetMinSize(InfiniFrameWindow* instance, int* }); } -/// @param[out] value Owned string, caller must free with InfiniFrame_FreeString. -EXPORTED InteropStatus InfiniFrame_GetTitle(InfiniFrameWindow* instance, AutoString* value) { +/// @param[out] value Owned string, caller must free with InfiniFrameNative_FreeString. +EXPORTED InteropStatus InfiniFrameNative_GetTitle(InfiniFrameWindow* instance, AutoString* value) { ResetOut(value, static_cast(nullptr)); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(value, "value")) @@ -215,7 +215,7 @@ EXPORTED InteropStatus InfiniFrame_GetTitle(InfiniFrameWindow* instance, AutoStr }); } -EXPORTED InteropStatus InfiniFrame_GetTopmost(InfiniFrameWindow* instance, bool* topmost) { +EXPORTED InteropStatus InfiniFrameNative_GetTopmost(InfiniFrameWindow* instance, bool* topmost) { ResetOut(topmost, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(topmost, "topmost")) @@ -224,7 +224,7 @@ EXPORTED InteropStatus InfiniFrame_GetTopmost(InfiniFrameWindow* instance, bool* }); } -EXPORTED InteropStatus InfiniFrame_GetZoom(InfiniFrameWindow* instance, int* zoom) { +EXPORTED InteropStatus InfiniFrameNative_GetZoom(InfiniFrameWindow* instance, int* zoom) { ResetOut(zoom, 0); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(zoom, "zoom")) @@ -233,7 +233,7 @@ EXPORTED InteropStatus InfiniFrame_GetZoom(InfiniFrameWindow* instance, int* zoo }); } -EXPORTED InteropStatus InfiniFrame_GetFocused(InfiniFrameWindow* instance, bool* isFocused) { +EXPORTED InteropStatus InfiniFrameNative_GetFocused(InfiniFrameWindow* instance, bool* isFocused) { ResetOut(isFocused, false); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(isFocused, "isFocused")) @@ -242,8 +242,8 @@ EXPORTED InteropStatus InfiniFrame_GetFocused(InfiniFrameWindow* instance, bool* }); } -/// @param[out] value Owned string, caller must free with InfiniFrame_FreeString. -EXPORTED InteropStatus InfiniFrame_GetIconFileName(InfiniFrameWindow* instance, AutoString* value) { +/// @param[out] value Owned string, caller must free with InfiniFrameNative_FreeString. +EXPORTED InteropStatus InfiniFrameNative_GetIconFileName(InfiniFrameWindow* instance, AutoString* value) { ResetOut(value, static_cast(nullptr)); return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureOutNotNull(value, "value")) diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp index 0ffde5d6a..679e9d1be 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Navigation.cpp @@ -6,7 +6,7 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { +EXPORTED InteropStatus InfiniFrameNative_NavigateToString(InfiniFrameWindow* instance, const AutoString content) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureNotNull(content, "content")) return; @@ -14,7 +14,7 @@ EXPORTED InteropStatus InfiniFrame_NavigateToString(InfiniFrameWindow* instance, }); } -EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { +EXPORTED InteropStatus InfiniFrameNative_NavigateToUrl(InfiniFrameWindow* instance, const AutoString url) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { if (!EnsureNotNull(url, "url")) return; @@ -22,7 +22,7 @@ EXPORTED InteropStatus InfiniFrame_NavigateToUrl(InfiniFrameWindow* instance, co }); } -EXPORTED InteropStatus InfiniFrame_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { +EXPORTED InteropStatus InfiniFrameNative_SendWebMessage(InfiniFrameWindow* instance, const AutoString message) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SendWebMessage(NullToEmpty(message)); }); diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp index c50682901..e276f5aad 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.Window.Setters.cpp @@ -6,69 +6,69 @@ // Code // --------------------------------------------------------------------------------------------------------------------- extern "C" { -EXPORTED InteropStatus InfiniFrame_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { +EXPORTED InteropStatus InfiniFrameNative_SetTransparentEnabled(InfiniFrameWindow* instance, const bool enabled) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTransparentEnabled(enabled); }); } -EXPORTED InteropStatus InfiniFrame_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { +EXPORTED InteropStatus InfiniFrameNative_SetContextMenuEnabled(InfiniFrameWindow* instance, const bool enabled) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetContextMenuEnabled(enabled); }); } -EXPORTED InteropStatus InfiniFrame_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { +EXPORTED InteropStatus InfiniFrameNative_SetZoomEnabled(InfiniFrameWindow* instance, const bool enabled) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoomEnabled(enabled); }); } -EXPORTED InteropStatus InfiniFrame_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { +EXPORTED InteropStatus InfiniFrameNative_SetDevToolsEnabled(InfiniFrameWindow* instance, const bool enabled) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetDevToolsEnabled(enabled); }); } -EXPORTED InteropStatus InfiniFrame_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { +EXPORTED InteropStatus InfiniFrameNative_SetFullScreen(InfiniFrameWindow* instance, const bool fullScreen) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetFullScreen(fullScreen); }); } -EXPORTED InteropStatus InfiniFrame_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { +EXPORTED InteropStatus InfiniFrameNative_SetIconFile(InfiniFrameWindow* instance, const AutoString filename) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetIconFile(NullToEmpty(filename)); }); } -EXPORTED InteropStatus InfiniFrame_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { +EXPORTED InteropStatus InfiniFrameNative_SetMaximized(InfiniFrameWindow* instance, const bool maximized) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaximized(maximized); }); } -EXPORTED InteropStatus InfiniFrame_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { +EXPORTED InteropStatus InfiniFrameNative_SetMaxSize(InfiniFrameWindow* instance, const int width, const int height) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMaxSize(width, height); }); } -EXPORTED InteropStatus InfiniFrame_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { +EXPORTED InteropStatus InfiniFrameNative_SetMinimized(InfiniFrameWindow* instance, const bool minimized) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinimized(minimized); }); } -EXPORTED InteropStatus InfiniFrame_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { +EXPORTED InteropStatus InfiniFrameNative_SetMinSize(InfiniFrameWindow* instance, const int width, const int height) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetMinSize(width, height); }); } -EXPORTED InteropStatus InfiniFrame_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { +EXPORTED InteropStatus InfiniFrameNative_SetPosition(InfiniFrameWindow* instance, const int x, const int y) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetPosition(x, y); }); } -EXPORTED InteropStatus InfiniFrame_SetResizable(InfiniFrameWindow* instance, const bool resizable) { +EXPORTED InteropStatus InfiniFrameNative_SetResizable(InfiniFrameWindow* instance, const bool resizable) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetResizable(resizable); }); } -EXPORTED InteropStatus InfiniFrame_SetSize(InfiniFrameWindow* instance, const int width, const int height) { +EXPORTED InteropStatus InfiniFrameNative_SetSize(InfiniFrameWindow* instance, const int width, const int height) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetSize(width, height); }); } -EXPORTED InteropStatus InfiniFrame_SetTitle(InfiniFrameWindow* instance, const AutoString title) { +EXPORTED InteropStatus InfiniFrameNative_SetTitle(InfiniFrameWindow* instance, const AutoString title) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTitle(NullToEmpty(title)); }); } -EXPORTED InteropStatus InfiniFrame_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { +EXPORTED InteropStatus InfiniFrameNative_SetTopmost(InfiniFrameWindow* instance, const bool topmost) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetTopmost(topmost); }); } -EXPORTED InteropStatus InfiniFrame_SetZoom(InfiniFrameWindow* instance, const int zoom) { +EXPORTED InteropStatus InfiniFrameNative_SetZoom(InfiniFrameWindow* instance, const int zoom) { return RunWindowExportStatus(instance, [&](InfiniFrameWindow* window) { window->SetZoom(zoom); }); } } diff --git a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h index d7a951d0f..0096de734 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Api/Exports/Exports.h @@ -23,9 +23,9 @@ // // OWNED (caller-frees): // Any AutoString written to an out-parameter (AutoString*) is heap-allocated -// by the native layer. The caller MUST free it with InfiniFrame_FreeString(). +// by the native layer. The caller MUST free it with InfiniFrameNative_FreeString(). // Multi-string results (AutoString** from dialog APIs) must be freed with -// InfiniFrame_FreeStringArray(values, count). +// InfiniFrameNative_FreeStringArray(values, count). // // BORROWED (callee does not take ownership): // All AutoString input parameters (const AutoString) are borrowed for the diff --git a/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h index 4f182fe5a..aee7141da 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Utilities/StringArrayCopy.h @@ -10,7 +10,7 @@ // Owned string array allocation and free, consistent with StringCopy.h. // // The caller owns the returned array AND each element. Use FreeStringArray() -// or the platform-matched InfiniFrame_FreeStringArray export to release. +// or the platform-matched InfiniFrameNative_FreeStringArray export to release. // --------------------------------------------------------------------------------------------------------------------- /// Allocate a zero-initialized array of AutoString pointers. diff --git a/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h index 8c235f6af..8ad6e3d81 100644 --- a/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h +++ b/src/InfiniFrame.NativeBridge/Native/src/Runtime/Shared/Window/InfiniFrameWindow.h @@ -123,7 +123,7 @@ class InfiniFrameWindow { /** * @brief Get the custom user-agent string - * @return UTF-8 user-agent string; caller must free with InfiniFrame_FreeString + * @return UTF-8 user-agent string; caller must free with InfiniFrameNative_FreeString */ [[nodiscard]] AutoString GetUserAgent() const; @@ -165,7 +165,7 @@ class InfiniFrameWindow { /** * @brief Get the window icon file path - * @return UTF-8 path to the icon file; caller must free with InfiniFrame_FreeString + * @return UTF-8 path to the icon file; caller must free with InfiniFrameNative_FreeString */ [[nodiscard]] AutoString GetIconFileName() const; @@ -223,7 +223,7 @@ class InfiniFrameWindow { /** * @brief Get the window title bar text - * @return UTF-8 title string; caller must free with InfiniFrame_FreeString + * @return UTF-8 title string; caller must free with InfiniFrameNative_FreeString */ [[nodiscard]] AutoString GetTitle() const; From edd8ff12e9bc63c27ffd1767fc78acf76e58d223 Mon Sep 17 00:00:00 2001 From: Anna Sas Date: Tue, 2 Jun 2026 16:20:19 +0200 Subject: [PATCH 13/13] Standardize `InfiniFrameNative` naming in all `LibraryImport` attributes across platforms and lifecycle exports. --- .../NativeApi/Exports/InfiniFrameNative.Lifecycle.cs | 8 ++++---- .../NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs | 2 +- .../Exports/InfiniFrameNative.Platform.Windows.cs | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs index 1478e36f4..9706fa3e9 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs @@ -11,15 +11,15 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_ctor", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ctor", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Constructor([MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))] in InfiniFrameNativeParameters parameters, out IntPtr value); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_dtor"), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_dtor"), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Destructor(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_Close", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Close", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus Close(IntPtr instance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_WaitForExit", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_WaitForExit", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus WaitForExit(IntPtr instance); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs index aaa1f997b..c7efcc656 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs @@ -9,6 +9,6 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_register_mac", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_mac", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus RegisterMac(); } diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs index 8ef2ec2d1..7fbebb5e3 100644 --- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs +++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs @@ -9,16 +9,16 @@ namespace InfiniFrame.NativeBridge; // Code // --------------------------------------------------------------------------------------------------------------------- public partial class InfiniFrameNative { - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_register_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus RegisterWin32(IntPtr hInstance); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_getHwnd_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_getHwnd_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetWindowHandlerWin32(IntPtr instance, out IntPtr value); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus SetWebView2RuntimePath_win32(IntPtr instance, string webView2RuntimePath); - [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrame_GetNotificationsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetNotificationsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] internal static partial InfiniFrameNativeInteropStatus GetNotificationsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled); }