#include "prx/libSceNpSnsFacebookDialog/include/Api.hpp" #include "prx/libc/include/general/VabiMacros.hpp" #include "prx/libSceIme/include/ModalDialog.hpp" #include "prx/libSceIme/include/PsnDialogNotice.hpp" #include #include namespace { void Require(bool value) { if (!value) std::abort(); } constexpr int kStatusNone = 0; constexpr int kStatusInitialized = 1; constexpr int kStatusFinished = 3; constexpr int kErrNotInitialized = static_cast(0x80B80003); constexpr int kErrAlreadyInitialized = static_cast(0x80B80004); constexpr int kErrNotFinished = static_cast(0x80B80005); constexpr int kErrArgNull = static_cast(0x80B8000D); constexpr int kResultUserCanceled = 1; bool PsnNoticeShown() { ModalDialogView view; if (!ModalDialogReadView_nid_postfix(view)) return false; return view.message == PsnDialogNoticeRequest(PsnDialogNoticeKind::PsnFeature).message; } void RequireNotices() { std::uint64_t param = 0; ModalDialogSetPresenter_nid_postfix(true); Require(sceNpSnsFacebookDialogInitialize() == 0); PsnDialogNoticeSetMode_nid_postfix(PsnDialogNoticeMode::Silent); ModalDialogReset_nid_postfix(ModalDialogAnyOwner); Require(sceNpSnsFacebookDialogOpen(¶m) == 0); Require(!PsnNoticeShown() && !ModalDialogCapturesInput_nid_postfix()); PsnDialogNoticeSetMode_nid_postfix(PsnDialogNoticeMode::Show); ModalDialogReset_nid_postfix(ModalDialogAnyOwner); Require(sceNpSnsFacebookDialogOpen(nullptr) == kErrArgNull); Require(!PsnNoticeShown()); Require(sceNpSnsFacebookDialogOpen(¶m) == 0); Require(PsnNoticeShown()); ModalDialogReset_nid_postfix(ModalDialogAnyOwner); ModalDialogSetPresenter_nid_postfix(false); PsnDialogNoticeSetMode_nid_postfix(PsnDialogNoticeMode::Silent); Require(sceNpSnsFacebookDialogTerminate() == 0); } } int main() { std::int64_t param = 0; std::int32_t result[2] = {-1, -1}; Require(sceNpSnsFacebookDialogTerminate() == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(¶m) == kErrNotInitialized); Require(sceNpSnsFacebookDialogClose() == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(result) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetStatus() == kStatusNone); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusNone); Require(sceNpSnsFacebookDialogInitialize() == 0); Require(sceNpSnsFacebookDialogInitialize() == kErrAlreadyInitialized); Require(sceNpSnsFacebookDialogGetStatus() == kStatusInitialized); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusInitialized); Require(sceNpSnsFacebookDialogOpen(nullptr) == kErrArgNull); Require(sceNpSnsFacebookDialogGetResult(result) == kErrNotFinished); Require(sceNpSnsFacebookDialogOpen(¶m) == 0); Require(sceNpSnsFacebookDialogGetStatus() == kStatusFinished); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusFinished); Require(sceNpSnsFacebookDialogGetResult(nullptr) == kErrArgNull); Require(sceNpSnsFacebookDialogGetResult(result) == 0); Require(result[0] == kResultUserCanceled); Require(result[1] == -1); Require(sceNpSnsFacebookDialogClose() == 0); Require(sceNpSnsFacebookDialogTerminate() == 0); Require(sceNpSnsFacebookDialogTerminate() == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(¶m) == kErrNotInitialized); Require(sceNpSnsFacebookDialogClose() == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(result) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetStatus() == kStatusNone); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusNone); Require(sceNpSnsFacebookDialogInitialize() == 0); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusInitialized); Require(sceNpSnsFacebookDialogClose() == 0); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusFinished); result[0] = -1; Require(sceNpSnsFacebookDialogGetResult(result) == 0); Require(result[0] == kResultUserCanceled); Require(sceNpSnsFacebookDialogTerminate() == 0); Require(sceNpSnsFacebookDialogTerminate() == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogOpen(¶m) == kErrNotInitialized); Require(sceNpSnsFacebookDialogClose() == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(nullptr) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetResult(result) == kErrNotInitialized); Require(sceNpSnsFacebookDialogGetStatus() == kStatusNone); Require(sceNpSnsFacebookDialogUpdateStatus() == kStatusNone); RequireNotices(); }