diff --git a/shell/browser/api/electron_api_web_contents.cc b/shell/browser/api/electron_api_web_contents.cc index d239aa257bc..9f53da4bb0a 100644 --- a/shell/browser/api/electron_api_web_contents.cc +++ b/shell/browser/api/electron_api_web_contents.cc @@ -1807,18 +1807,21 @@ void WebContents::Print(gin_helper::Arguments* args) { settings.SetIntKey(printing::kSettingMarginsType, margin_type); if (margin_type == printing::CUSTOM_MARGINS) { + base::Value custom_margins(base::Value::Type::DICTIONARY); int top = 0; margins.Get("top", &top); - settings.SetIntKey(printing::kSettingMarginTop, top); + custom_margins.SetIntKey(printing::kSettingMarginTop, top); int bottom = 0; margins.Get("bottom", &bottom); - settings.SetIntKey(printing::kSettingMarginBottom, bottom); + custom_margins.SetIntKey(printing::kSettingMarginBottom, bottom); int left = 0; margins.Get("left", &left); - settings.SetIntKey(printing::kSettingMarginLeft, left); + custom_margins.SetIntKey(printing::kSettingMarginLeft, left); int right = 0; margins.Get("right", &right); - settings.SetIntKey(printing::kSettingMarginRight, right); + custom_margins.SetIntKey(printing::kSettingMarginRight, right); + settings.SetPath(printing::kSettingMarginsCustom, + std::move(custom_margins)); } } else { settings.SetIntKey(printing::kSettingMarginsType, diff --git a/spec-main/api-web-contents-spec.ts b/spec-main/api-web-contents-spec.ts index b4410266af5..1d4d3b75dd3 100644 --- a/spec-main/api-web-contents-spec.ts +++ b/spec-main/api-web-contents-spec.ts @@ -135,9 +135,18 @@ describe('webContents module', () => { }).to.throw('Unsupported pageSize: i-am-a-bad-pagesize') }) - it('does not crash', () => { + it('does not crash with custom margins', () => { expect(() => { - w.webContents.print({ silent: true }) + w.webContents.print({ + silent: true, + margins: { + marginType: 'custom', + top: 1, + bottom: 1, + left: 1, + right: 1 + } + }) }).to.not.throw() }) })