Commit 86bbf038 authored by rbpotter's avatar rbpotter Committed by Commit Bot

Print Preview: Update header/footer availability based on doc margins

Updating the custom margins setting will always result in a
corresponding update to the document margins reported from the backend,
so adjust header/footer availability based on these margins rather than
the custom margins setting value. This prevents unnecessary extra calls
to the observer, and fixes a bug where the custom margins setting being
initially empty caused the header/footer checkbox to disappear.

Bug: 1051810
Change-Id: I851947d3e6b102154910c401ead79aed1666f43e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2063869Reviewed-by: default avatarDaniel Hosseinian <dhoss@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#742744}
parent 65f511c1
......@@ -491,8 +491,7 @@ Polymer({
'documentSettings.isPdf, documentSettings.hasCssMediaStyles, ' +
'documentSettings.hasSelection)',
'updateHeaderFooterAvailable_(' +
'margins, settings.margins.value, ' +
'settings.customMargins.value, settings.mediaSize.value)',
'margins, settings.margins.value, settings.mediaSize.value)',
],
/** @private {boolean} */
......@@ -798,28 +797,19 @@ Polymer({
}
// Otherwise, availability depends on the margins.
let available = false;
const marginsType =
/** @type {!MarginsType} */ (this.getSettingValue('margins'));
switch (marginsType) {
case MarginsType.DEFAULT:
available = !this.margins ||
if (marginsType === MarginsType.NO_MARGINS) {
return false;
}
if (marginsType === MarginsType.MINIMUM) {
return true;
}
return !this.margins ||
this.margins.get(CustomMarginsOrientation.TOP) > 0 ||
this.margins.get(CustomMarginsOrientation.BOTTOM) > 0;
break;
case MarginsType.NO_MARGINS:
break;
case MarginsType.MINIMUM:
available = true;
break;
case MarginsType.CUSTOM:
const margins = this.getSettingValue('customMargins');
available = margins.marginTop > 0 || margins.marginBottom > 0;
break;
default:
break;
}
return available;
},
/**
......
......@@ -421,33 +421,46 @@ suite('ModelSettingsAvailabilityTest', function() {
// Default margins + letter paper + HTML page.
assertTrue(model.settings.headerFooter.available);
// Custom margins initializes with customMargins undefined and margins
// values matching the defaults.
model.set('settings.margins.value', MarginsType.CUSTOM);
assertTrue(model.settings.headerFooter.available);
// Set margins to NONE
model.set('settings.margins.value', MarginsType.NO_MARGINS);
assertFalse(model.settings.headerFooter.available);
// Set margins to MINIMUM
model.set('settings.margins.value', MarginsType.MINIMUM);
assertTrue(model.settings.headerFooter.available);
// Custom margins of 0.
model.set('settings.margins.value', MarginsType.CUSTOM);
model.set(
'settings.customMargins.value',
{marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0});
model.set('margins', new Margins(0, 0, 0, 0));
assertFalse(model.settings.headerFooter.available);
// Custom margins of 36 -> header/footer available
model.set(
'settings.customMargins.value',
{marginTop: 36, marginLeft: 36, marginRight: 36, marginBottom: 36});
model.set('margins', new Margins(36, 36, 36, 36));
assertTrue(model.settings.headerFooter.available);
// Zero top and bottom -> header/footer unavailable
model.set(
'settings.customMargins.value',
{marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 0});
model.set('margins', new Margins(0, 36, 0, 36));
assertFalse(model.settings.headerFooter.available);
// Zero top and nonzero bottom -> header/footer available
model.set(
'settings.customMargins.value',
{marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 36});
model.set('margins', new Margins(0, 36, 36, 36));
assertTrue(model.settings.headerFooter.available);
// Small paper sizes
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment