Route VR mode through app preferences
This commit is contained in:
@@ -28,6 +28,13 @@ public:
|
||||
call_order += "direction;";
|
||||
}
|
||||
|
||||
bool apply_vr_mode_preference(const pp::app::StoredBooleanPreferencePlan& plan) override
|
||||
{
|
||||
vr_mode = plan.value;
|
||||
call_order += "vr-mode;";
|
||||
return vr_mode_result;
|
||||
}
|
||||
|
||||
void apply_vr_controllers_preference(const pp::app::StoredBooleanPreferencePlan& plan) override
|
||||
{
|
||||
vr_controllers = plan.value;
|
||||
@@ -52,6 +59,8 @@ public:
|
||||
float viewport_scale = 0.0F;
|
||||
float viewport_font_scale = 0.0F;
|
||||
pp::app::InterfaceDirection interface_direction = pp::app::InterfaceDirection::left_to_right;
|
||||
bool vr_mode = false;
|
||||
bool vr_mode_result = true;
|
||||
bool vr_controllers = false;
|
||||
bool timelapse_enabled = false;
|
||||
pp::app::TimelapseRecordingAction timelapse_action = pp::app::TimelapseRecordingAction::no_op;
|
||||
@@ -120,6 +129,8 @@ void timelapse_preference_starts_and_stops_only_on_state_change(pp::tests::Harne
|
||||
|
||||
void simple_preferences_preserve_values_for_storage(pp::tests::Harness& harness)
|
||||
{
|
||||
PP_EXPECT(harness, pp::app::plan_vr_mode_preference(true).value);
|
||||
PP_EXPECT(harness, !pp::app::plan_vr_mode_preference(false).value);
|
||||
PP_EXPECT(harness, pp::app::plan_vr_controllers_preference(true).value);
|
||||
PP_EXPECT(harness, !pp::app::plan_vr_controllers_preference(false).value);
|
||||
PP_EXPECT(harness, pp::app::plan_canvas_cursor_mode(2).value == 2);
|
||||
@@ -132,6 +143,7 @@ void preference_executor_dispatches_side_effect_plans(pp::tests::Harness& harnes
|
||||
PP_EXPECT(harness, pp::app::execute_ui_scale_preference(1.5F, 2.0F, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_viewport_scale_preference(1.25F, 1.0F, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_interface_direction_preference(true, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_vr_mode_preference(true, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_vr_controllers_preference(true, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_timelapse_preference(true, false, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_canvas_cursor_mode_preference(2, services).ok());
|
||||
@@ -141,13 +153,14 @@ void preference_executor_dispatches_side_effect_plans(pp::tests::Harness& harnes
|
||||
PP_EXPECT(harness, services.viewport_scale == 1.25F);
|
||||
PP_EXPECT(harness, services.viewport_font_scale == 1.25F);
|
||||
PP_EXPECT(harness, services.interface_direction == pp::app::InterfaceDirection::right_to_left);
|
||||
PP_EXPECT(harness, services.vr_mode);
|
||||
PP_EXPECT(harness, services.vr_controllers);
|
||||
PP_EXPECT(harness, services.timelapse_enabled);
|
||||
PP_EXPECT(harness, services.timelapse_action == pp::app::TimelapseRecordingAction::start_recording);
|
||||
PP_EXPECT(harness, services.cursor_mode == 2);
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
services.call_order == "ui-scale;viewport-scale;direction;vr-controllers;timelapse;cursor;");
|
||||
services.call_order == "ui-scale;viewport-scale;direction;vr-mode;vr-controllers;timelapse;cursor;");
|
||||
}
|
||||
|
||||
void preference_executor_preserves_timelapse_stop_action(pp::tests::Harness& harness)
|
||||
@@ -159,6 +172,17 @@ void preference_executor_preserves_timelapse_stop_action(pp::tests::Harness& har
|
||||
PP_EXPECT(harness, services.timelapse_action == pp::app::TimelapseRecordingAction::stop_recording);
|
||||
}
|
||||
|
||||
void preference_executor_reports_failed_vr_start(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeAppPreferenceServices services;
|
||||
services.vr_mode_result = false;
|
||||
|
||||
const auto status = pp::app::execute_vr_mode_preference(true, services);
|
||||
PP_EXPECT(harness, !status.ok());
|
||||
PP_EXPECT(harness, status.code == pp::foundation::StatusCode::invalid_argument);
|
||||
PP_EXPECT(harness, services.vr_mode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -178,5 +202,6 @@ int main()
|
||||
harness.run("simple preferences preserve values for storage", simple_preferences_preserve_values_for_storage);
|
||||
harness.run("preference executor dispatches side effect plans", preference_executor_dispatches_side_effect_plans);
|
||||
harness.run("preference executor preserves timelapse stop action", preference_executor_preserves_timelapse_stop_action);
|
||||
harness.run("preference executor reports failed VR start", preference_executor_reports_failed_vr_start);
|
||||
return harness.finish();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user