Commit 05453674 authored by rbpotter's avatar rbpotter Committed by Commit Bot

PDF Viewer Update: Disable zoom buttons when at limits

Bug: 1136706
Change-Id: I3e713ae638d14b9d0d3a9af2357bd7147217d326
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2467580
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatardpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#817132}
parent 99ef163c
...@@ -186,6 +186,7 @@ ...@@ -186,6 +186,7 @@
</viewer-page-selector> </viewer-page-selector>
<span id="zoom-controls"> <span id="zoom-controls">
<cr-icon-button iron-icon="pdf:remove" title="$i18n{tooltipZoomOut}" <cr-icon-button iron-icon="pdf:remove" title="$i18n{tooltipZoomOut}"
disabled="[[isAtMinimumZoom_(zoomBounds.min, viewportZoomPercent_)]]"
aria-label="$i18n{tooltipZoomOut}" on-click="onZoomOutClick_"> aria-label="$i18n{tooltipZoomOut}" on-click="onZoomOutClick_">
</cr-icon-button> </cr-icon-button>
<input type="text" value="100%" <input type="text" value="100%"
...@@ -194,6 +195,7 @@ ...@@ -194,6 +195,7 @@
on-blur="onZoomChange_"> on-blur="onZoomChange_">
</input> </input>
<cr-icon-button iron-icon="pdf:add" title="$i18n{tooltipZoomIn}" <cr-icon-button iron-icon="pdf:add" title="$i18n{tooltipZoomIn}"
disabled="[[isAtMaximumZoom_(zoomBounds.max, viewportZoomPercent_)]]"
aria-label="$i18n{tooltipZoomIn}" on-click="onZoomInClick_"> aria-label="$i18n{tooltipZoomIn}" on-click="onZoomInClick_">
</cr-icon-button> </cr-icon-button>
</span> </span>
......
...@@ -72,10 +72,7 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -72,10 +72,7 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
pdfFormSaveEnabled: Boolean, pdfFormSaveEnabled: Boolean,
printingEnabled: Boolean, printingEnabled: Boolean,
rotated: Boolean, rotated: Boolean,
viewportZoom: { viewportZoom: Number,
type: Number,
observer: 'viewportZoomChanged_',
},
/** @type {!{min: number, max: number}} */ /** @type {!{min: number, max: number}} */
zoomBounds: Object, zoomBounds: Object,
...@@ -95,6 +92,13 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -95,6 +92,13 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
computed: 'computeFitToButtonIcon_(fittingType_)', computed: 'computeFitToButtonIcon_(fittingType_)',
}, },
/** @private */
viewportZoomPercent_: {
type: Number,
computed: 'computeViewportZoomPercent_(viewportZoom)',
observer: 'viewportZoomPercentChanged_',
},
// <if expr="chromeos"> // <if expr="chromeos">
/** @private */ /** @private */
showAnnotationsModeDialog_: { showAnnotationsModeDialog_: {
...@@ -155,6 +159,14 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -155,6 +159,14 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
'pdf:fit-to-width'; 'pdf:fit-to-width';
} }
/**
* @return {number}
* @private
*/
computeViewportZoomPercent_() {
return Math.round(100 * this.viewportZoom);
}
/** /**
* @param {string} fitToPageTooltip * @param {string} fitToPageTooltip
* @param {string} fitToWidthTooltip * @param {string} fitToWidthTooltip
...@@ -172,9 +184,8 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -172,9 +184,8 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
} }
/** @private */ /** @private */
viewportZoomChanged_() { viewportZoomPercentChanged_() {
const zoom = Math.round(this.viewportZoom * 100); this.getZoomInput_().value = `${this.viewportZoomPercent_}%`;
this.getZoomInput_().value = `${zoom}%`;
} }
// <if expr="chromeos"> // <if expr="chromeos">
...@@ -300,8 +311,7 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -300,8 +311,7 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
return; return;
} }
const zoom = Math.round(this.viewportZoom * 100); const zoomString = `${this.viewportZoomPercent_}%`;
const zoomString = `${zoom}%`;
input.value = zoomString; input.value = zoomString;
} }
...@@ -351,6 +361,24 @@ export class ViewerPdfToolbarNewElement extends PolymerElement { ...@@ -351,6 +361,24 @@ export class ViewerPdfToolbarNewElement extends PolymerElement {
this.moreMenuOpen_ = e.detail.value; this.moreMenuOpen_ = e.detail.value;
} }
/**
* @return {boolean}
* @private
*/
isAtMinimumZoom_() {
return this.zoomBounds !== undefined &&
this.viewportZoomPercent_ === this.zoomBounds.min;
}
/**
* @return {boolean}
* @private
*/
isAtMaximumZoom_() {
return this.zoomBounds !== undefined &&
this.viewportZoomPercent_ === this.zoomBounds.max;
}
// <if expr="chromeos"> // <if expr="chromeos">
/** @private */ /** @private */
onDialogClose_() { onDialogClose_() {
......
...@@ -105,6 +105,8 @@ const tests = [ ...@@ -105,6 +105,8 @@ const tests = [
function testZoomButtons() { function testZoomButtons() {
const toolbar = createToolbar(); const toolbar = createToolbar();
toolbar.zoomBounds = {min: 25, max: 500};
toolbar.viewportZoom = 1;
let zoomInCount = 0; let zoomInCount = 0;
let zoomOutCount = 0; let zoomOutCount = 0;
...@@ -112,6 +114,8 @@ const tests = [ ...@@ -112,6 +114,8 @@ const tests = [
toolbar.addEventListener('zoom-out', () => zoomOutCount++); toolbar.addEventListener('zoom-out', () => zoomOutCount++);
const zoomButtons = getCrIconButtons(toolbar, 'zoom-controls'); const zoomButtons = getCrIconButtons(toolbar, 'zoom-controls');
chrome.test.assertFalse(zoomButtons[0].disabled);
chrome.test.assertFalse(zoomButtons[1].disabled);
// Zoom out // Zoom out
chrome.test.assertEq('pdf:remove', zoomButtons[0].ironIcon); chrome.test.assertEq('pdf:remove', zoomButtons[0].ironIcon);
...@@ -119,12 +123,23 @@ const tests = [ ...@@ -119,12 +123,23 @@ const tests = [
chrome.test.assertEq(0, zoomInCount); chrome.test.assertEq(0, zoomInCount);
chrome.test.assertEq(1, zoomOutCount); chrome.test.assertEq(1, zoomOutCount);
// Set zoom to min. Zoom out is disabled.
toolbar.viewportZoom = .25;
chrome.test.assertTrue(zoomButtons[0].disabled);
chrome.test.assertFalse(zoomButtons[1].disabled);
// Zoom in // Zoom in
chrome.test.assertEq('pdf:add', zoomButtons[1].ironIcon); chrome.test.assertEq('pdf:add', zoomButtons[1].ironIcon);
zoomButtons[1].click(); zoomButtons[1].click();
chrome.test.assertEq(1, zoomInCount); chrome.test.assertEq(1, zoomInCount);
chrome.test.assertEq(1, zoomOutCount); chrome.test.assertEq(1, zoomOutCount);
// Set zoom to max. Zoom in is disabled.
toolbar.zoomBounds = {min: 25, max: 500};
toolbar.viewportZoom = 5;
chrome.test.assertFalse(zoomButtons[0].disabled);
chrome.test.assertTrue(zoomButtons[1].disabled);
chrome.test.succeed(); chrome.test.succeed();
}, },
......
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