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({ ...@@ -491,8 +491,7 @@ Polymer({
'documentSettings.isPdf, documentSettings.hasCssMediaStyles, ' + 'documentSettings.isPdf, documentSettings.hasCssMediaStyles, ' +
'documentSettings.hasSelection)', 'documentSettings.hasSelection)',
'updateHeaderFooterAvailable_(' + 'updateHeaderFooterAvailable_(' +
'margins, settings.margins.value, ' + 'margins, settings.margins.value, settings.mediaSize.value)',
'settings.customMargins.value, settings.mediaSize.value)',
], ],
/** @private {boolean} */ /** @private {boolean} */
...@@ -798,28 +797,19 @@ Polymer({ ...@@ -798,28 +797,19 @@ Polymer({
} }
// Otherwise, availability depends on the margins. // Otherwise, availability depends on the margins.
let available = false;
const marginsType = const marginsType =
/** @type {!MarginsType} */ (this.getSettingValue('margins')); /** @type {!MarginsType} */ (this.getSettingValue('margins'));
switch (marginsType) { if (marginsType === MarginsType.NO_MARGINS) {
case MarginsType.DEFAULT: return false;
available = !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;
if (marginsType === MarginsType.MINIMUM) {
return true;
}
return !this.margins ||
this.margins.get(CustomMarginsOrientation.TOP) > 0 ||
this.margins.get(CustomMarginsOrientation.BOTTOM) > 0;
}, },
/** /**
......
...@@ -421,33 +421,46 @@ suite('ModelSettingsAvailabilityTest', function() { ...@@ -421,33 +421,46 @@ suite('ModelSettingsAvailabilityTest', function() {
// Default margins + letter paper + HTML page. // Default margins + letter paper + HTML page.
assertTrue(model.settings.headerFooter.available); 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 // Set margins to NONE
model.set('settings.margins.value', MarginsType.NO_MARGINS); model.set('settings.margins.value', MarginsType.NO_MARGINS);
assertFalse(model.settings.headerFooter.available); 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. // Custom margins of 0.
model.set('settings.margins.value', MarginsType.CUSTOM); model.set('settings.margins.value', MarginsType.CUSTOM);
model.set( model.set(
'settings.customMargins.value', 'settings.customMargins.value',
{marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0}); {marginTop: 0, marginLeft: 0, marginRight: 0, marginBottom: 0});
model.set('margins', new Margins(0, 0, 0, 0));
assertFalse(model.settings.headerFooter.available); assertFalse(model.settings.headerFooter.available);
// Custom margins of 36 -> header/footer available // Custom margins of 36 -> header/footer available
model.set( model.set(
'settings.customMargins.value', 'settings.customMargins.value',
{marginTop: 36, marginLeft: 36, marginRight: 36, marginBottom: 36}); {marginTop: 36, marginLeft: 36, marginRight: 36, marginBottom: 36});
model.set('margins', new Margins(36, 36, 36, 36));
assertTrue(model.settings.headerFooter.available); assertTrue(model.settings.headerFooter.available);
// Zero top and bottom -> header/footer unavailable // Zero top and bottom -> header/footer unavailable
model.set( model.set(
'settings.customMargins.value', 'settings.customMargins.value',
{marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 0}); {marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 0});
model.set('margins', new Margins(0, 36, 0, 36));
assertFalse(model.settings.headerFooter.available); assertFalse(model.settings.headerFooter.available);
// Zero top and nonzero bottom -> header/footer available // Zero top and nonzero bottom -> header/footer available
model.set( model.set(
'settings.customMargins.value', 'settings.customMargins.value',
{marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 36}); {marginTop: 0, marginLeft: 36, marginRight: 36, marginBottom: 36});
model.set('margins', new Margins(0, 36, 36, 36));
assertTrue(model.settings.headerFooter.available); assertTrue(model.settings.headerFooter.available);
// Small paper sizes // 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