Add history command service boundary

This commit is contained in:
2026-06-03 13:22:16 +02:00
parent 6d0cc4eb15
commit 6427f218e7
7 changed files with 228 additions and 22 deletions

View File

@@ -7,9 +7,24 @@ class FakeMainToolbarServices final : public pp::app::MainToolbarServices {
public:
void show_open_dialog() override { open_dialogs += 1; }
void show_save_dialog() override { save_dialogs += 1; }
void invoke_undo() override { undo_calls += 1; }
void invoke_redo() override { redo_calls += 1; }
void clear_history() override { clear_history_calls += 1; }
void invoke_undo(const pp::app::HistoryUiPlan& plan) override
{
undo_calls += 1;
last_history = plan;
}
void invoke_redo(const pp::app::HistoryUiPlan& plan) override
{
redo_calls += 1;
last_history = plan;
}
void clear_history(const pp::app::HistoryUiPlan& plan) override
{
clear_history_calls += 1;
last_history = plan;
}
void clear_canvas(const pp::app::DocumentCanvasClearPlan& plan) override
{
clear_canvas_calls += 1;
@@ -38,6 +53,7 @@ public:
int clear_canvas_calls = 0;
int message_boxes = 0;
int settings_dialogs = 0;
pp::app::HistoryUiPlan last_history;
pp::app::DocumentCanvasClearPlan last_clear;
};
@@ -74,6 +90,8 @@ void history_commands_reuse_history_breakpoints(pp::tests::Harness& harness)
PP_EXPECT(harness, undo.value().action == pp::app::MainToolbarAction::invoke_undo);
PP_EXPECT(harness, undo.value().updates_memory_label);
PP_EXPECT(harness, undo.value().updates_title);
PP_EXPECT(harness, undo.value().history.operation == pp::app::HistoryUiOperation::undo);
PP_EXPECT(harness, undo.value().history.invokes_undo);
PP_EXPECT(harness, !undo.value().no_op);
}
@@ -95,6 +113,8 @@ void history_commands_reuse_history_breakpoints(pp::tests::Harness& harness)
PP_EXPECT(harness, clear.value().action == pp::app::MainToolbarAction::clear_history);
PP_EXPECT(harness, clear.value().updates_memory_label);
PP_EXPECT(harness, !clear.value().updates_title);
PP_EXPECT(harness, clear.value().history.operation == pp::app::HistoryUiOperation::clear);
PP_EXPECT(harness, clear.value().history.clears_history);
}
}
@@ -161,6 +181,8 @@ void executor_dispatches_to_service_boundary(pp::tests::Harness& harness)
const auto status = pp::app::execute_main_toolbar_plan(undo.value(), services);
PP_EXPECT(harness, status.ok());
PP_EXPECT(harness, services.undo_calls == 1);
PP_EXPECT(harness, services.last_history.operation == pp::app::HistoryUiOperation::undo);
PP_EXPECT(harness, services.last_history.undo_count == 1);
}
auto clear_canvas = pp::app::plan_main_toolbar_command(