Add canvas clear service boundary

This commit is contained in:
2026-06-03 13:13:43 +02:00
parent 7c76703355
commit a6306c2759
7 changed files with 145 additions and 11 deletions

View File

@@ -10,7 +10,11 @@ public:
void invoke_undo() override { undo_calls += 1; }
void invoke_redo() override { redo_calls += 1; }
void clear_history() override { clear_history_calls += 1; }
void clear_canvas() override { clear_canvas_calls += 1; }
void clear_canvas(const pp::app::DocumentCanvasClearPlan& plan) override
{
clear_canvas_calls += 1;
last_clear = plan;
}
void show_message_box() override { message_boxes += 1; }
void show_settings_dialog() override { settings_dialogs += 1; }
@@ -34,6 +38,7 @@ public:
int clear_canvas_calls = 0;
int message_boxes = 0;
int settings_dialogs = 0;
pp::app::DocumentCanvasClearPlan last_clear;
};
void direct_dialog_commands_are_available(pp::tests::Harness& harness)
@@ -107,6 +112,9 @@ void canvas_clear_requires_live_canvas(pp::tests::Harness& harness)
PP_EXPECT(harness, clear.value().requires_canvas);
PP_EXPECT(harness, clear.value().records_undo);
PP_EXPECT(harness, clear.value().marks_unsaved);
PP_EXPECT(harness, clear.value().canvas_clear.clears_canvas);
PP_EXPECT(harness, clear.value().canvas_clear.records_undo);
PP_EXPECT(harness, clear.value().canvas_clear.marks_unsaved);
PP_EXPECT(harness, !clear.value().no_op);
}
@@ -123,6 +131,7 @@ void canvas_clear_requires_live_canvas(pp::tests::Harness& harness)
PP_EXPECT(harness, missing_canvas.value().requires_canvas);
PP_EXPECT(harness, !missing_canvas.value().records_undo);
PP_EXPECT(harness, !missing_canvas.value().marks_unsaved);
PP_EXPECT(harness, !missing_canvas.value().canvas_clear.clears_canvas);
PP_EXPECT(harness, missing_canvas.value().no_op);
}
}
@@ -165,6 +174,9 @@ void executor_dispatches_to_service_boundary(pp::tests::Harness& harness)
const auto status = pp::app::execute_main_toolbar_plan(clear_canvas.value(), services);
PP_EXPECT(harness, status.ok());
PP_EXPECT(harness, services.clear_canvas_calls == 1);
PP_EXPECT(harness, services.last_clear.clears_canvas);
PP_EXPECT(harness, services.last_clear.records_undo);
PP_EXPECT(harness, services.last_clear.marks_unsaved);
}
auto redo_empty = pp::app::plan_main_toolbar_command(pp::app::MainToolbarCommand::redo);