mirror of
https://github.com/aydencharles/onionHEN.git
synced 2026-10-23 04:12:37 -05:00
SettingPage hooks are process-wide, so stock pages such as PkgInstaller were being consumed by toolbox handlers. Track the active XML page, dispatch handlers by toolbox domain, pass stock pages through unchanged, and add host regression coverage.
63 lines
2.6 KiB
C++
63 lines
2.6 KiB
C++
/* Host tests for page-scoped ShellUI OnPress ownership (no PS5/Mono). */
|
|
#include "test_harness.h"
|
|
|
|
#include "onpress_policy.hpp"
|
|
|
|
using toolbox::OnPressDomain;
|
|
using toolbox::Page;
|
|
|
|
static int test_stock_package_installer_is_passthrough(void) {
|
|
Page active = Page::DebugSettings;
|
|
active = toolbox::active_page_after_resource(
|
|
active, Page::None, "PkgInstaller/data/pkginstaller.xml");
|
|
|
|
TEST_ASSERT_TRUE(active == Page::None);
|
|
TEST_ASSERT_TRUE(!toolbox::toolbox_owns_settings_page(active));
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(active) ==
|
|
OnPressDomain::PassThrough);
|
|
return 0;
|
|
}
|
|
|
|
static int test_unrelated_resource_keeps_toolbox_ownership(void) {
|
|
Page active = toolbox::active_page_after_resource(
|
|
Page::DebugSettings, Page::None, "PkgInstaller/assets/icon.png");
|
|
|
|
TEST_ASSERT_TRUE(active == Page::DebugSettings);
|
|
TEST_ASSERT_TRUE(toolbox::toolbox_owns_settings_page(active));
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(active) ==
|
|
OnPressDomain::Root);
|
|
return 0;
|
|
}
|
|
|
|
static int test_page_domain_matrix(void) {
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::None) ==
|
|
OnPressDomain::PassThrough);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::DebugSettings) ==
|
|
OnPressDomain::Root);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::Payloads) ==
|
|
OnPressDomain::Payloads);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::AutoPayloads) ==
|
|
OnPressDomain::AutoPayloads);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::Cheats) ==
|
|
OnPressDomain::Cheats);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::RemotePlay) ==
|
|
OnPressDomain::RemotePlay);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::Plapps) ==
|
|
OnPressDomain::Plapps);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::SuperuserPass) ==
|
|
OnPressDomain::PassThrough);
|
|
TEST_ASSERT_TRUE(toolbox::onpress_domain_for_page(Page::RedirectOgDebug) ==
|
|
OnPressDomain::PassThrough);
|
|
return 0;
|
|
}
|
|
|
|
extern "C" int test_onpress_policy_suite(void) {
|
|
int fails = 0;
|
|
fails += onion_test_run("onpress.stock_pkg_passthrough",
|
|
test_stock_package_installer_is_passthrough);
|
|
fails += onion_test_run("onpress.ignore_unrelated_resource",
|
|
test_unrelated_resource_keeps_toolbox_ownership);
|
|
fails += onion_test_run("onpress.page_domain_matrix", test_page_domain_matrix);
|
|
return fails;
|
|
}
|