Commit 94136bd0 authored by rbpotter's avatar rbpotter Committed by Commit Bot

PDF Viewer Update: Remove the zoom toolbar when flag is on

Remove the zoom toolbar from the UI when the PDFViewerUpdate flag is
on, since zoom controls will be located in the main toolbar in this
case.

Bug: 1099550
Change-Id: I754c2e69130da4b8463a2d928ba7af8656ee1ec2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2269486
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatardpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#783778}
parent e752cc67
...@@ -43,10 +43,12 @@ ...@@ -43,10 +43,12 @@
on-password-submitted="onPasswordSubmitted_"> on-password-submitted="onPasswordSubmitted_">
</viewer-password-screen> </viewer-password-screen>
<viewer-zoom-toolbar id="zoom-toolbar" <template is="dom-if" if="[[!pdfViewerUpdateEnabled_]]">
on-fit-to-changed="onFitToChanged" <viewer-zoom-toolbar id="zoom-toolbar"
on-zoom-in="onZoomIn" on-zoom-out="onZoomOut"> on-fit-to-changed="onFitToChanged"
</viewer-zoom-toolbar> on-zoom-in="onZoomIn" on-zoom-out="onZoomOut">
</viewer-zoom-toolbar>
</template>
<viewer-error-screen id="error-screen"></viewer-error-screen> <viewer-error-screen id="error-screen"></viewer-error-screen>
......
...@@ -220,11 +220,6 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -220,11 +220,6 @@ class PDFViewerElement extends PDFViewerBaseElement {
return /** @type {!HTMLDivElement} */ (this.$$('#sizer')); return /** @type {!HTMLDivElement} */ (this.$$('#sizer'));
} }
/** @override */
getZoomToolbar() {
return /** @type {!ViewerZoomToolbarElement} */ (this.$$('#zoom-toolbar'));
}
/** @override */ /** @override */
getErrorScreen() { getErrorScreen() {
return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen')); return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen'));
...@@ -238,6 +233,14 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -238,6 +233,14 @@ class PDFViewerElement extends PDFViewerBaseElement {
return /** @type {!ViewerPdfToolbarElement} */ (this.$$('#toolbar')); return /** @type {!ViewerPdfToolbarElement} */ (this.$$('#toolbar'));
} }
/**
* @return {!ViewerZoomToolbarElement}
* @private
*/
getZoomToolbar_() {
return /** @type {!ViewerZoomToolbarElement} */ (this.$$('#zoom-toolbar'));
}
/** @override */ /** @override */
getBackgroundColor() { getBackgroundColor() {
return BACKGROUND_COLOR; return BACKGROUND_COLOR;
...@@ -290,9 +293,10 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -290,9 +293,10 @@ class PDFViewerElement extends PDFViewerBaseElement {
} }
}); });
this.toolbarManager_ = new ToolbarManager( if (!this.pdfViewerUpdateEnabled_) {
window, this.pdfViewerUpdateEnabled_ ? null : this.getToolbar_(), this.toolbarManager_ = new ToolbarManager(
this.getZoomToolbar()); window, this.getToolbar_(), this.getZoomToolbar_());
}
// Setup the keyboard event listener. // Setup the keyboard event listener.
document.addEventListener( document.addEventListener(
...@@ -311,6 +315,44 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -311,6 +315,44 @@ class PDFViewerElement extends PDFViewerBaseElement {
} }
} }
/**
* Helper for handleKeyEvent_ dealing with events that control toolbars.
* @param {!KeyboardEvent} e the event to handle.
* @private
*/
handleToolbarKeyEvent_(e) {
if (this.pdfViewerUpdateEnabled_) {
// TODO: Add handling for any relevant hotkeys for the new unified
// toolbar.
return;
}
switch (e.key) {
case 'Tab':
this.toolbarManager_.showToolbarsForKeyboardNavigation();
return;
case 'Escape':
this.toolbarManager_.hideSingleToolbarLayer();
return;
case 'g':
if (this.toolbarEnabled_ && (e.ctrlKey || e.metaKey) && e.altKey) {
this.toolbarManager_.showToolbars();
this.getToolbar_().selectPageNumber();
}
return;
case '\\':
if (e.ctrlKey) {
this.getZoomToolbar_().fitToggleFromHotKey();
}
return;
}
// Show toolbars as a fallback.
if (!(e.shiftKey || e.ctrlKey || e.altKey)) {
this.toolbarManager_.showToolbars();
}
}
/** /**
* Handle key events. These may come from the user directly or via the * Handle key events. These may come from the user directly or via the
* scripting API. * scripting API.
...@@ -322,7 +364,9 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -322,7 +364,9 @@ class PDFViewerElement extends PDFViewerBaseElement {
return; return;
} }
this.toolbarManager_.hideToolbarsAfterTimeout(); if (!this.pdfViewerUpdateEnabled_) {
this.toolbarManager_.hideToolbarsAfterTimeout();
}
// Let the viewport handle directional key events. // Let the viewport handle directional key events.
if (this.viewport.handleDirectionalKeyEvent(e, this.isFormFieldFocused_)) { if (this.viewport.handleDirectionalKeyEvent(e, this.isFormFieldFocused_)) {
...@@ -330,12 +374,6 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -330,12 +374,6 @@ class PDFViewerElement extends PDFViewerBaseElement {
} }
switch (e.key) { switch (e.key) {
case 'Tab':
this.toolbarManager_.showToolbarsForKeyboardNavigation();
return;
case 'Escape':
this.toolbarManager_.hideSingleToolbarLayer();
return;
case 'a': case 'a':
if (e.ctrlKey || e.metaKey) { if (e.ctrlKey || e.metaKey) {
this.pluginController.selectAll(); this.pluginController.selectAll();
...@@ -343,22 +381,11 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -343,22 +381,11 @@ class PDFViewerElement extends PDFViewerBaseElement {
e.preventDefault(); e.preventDefault();
} }
return; return;
case 'g':
if (this.toolbarEnabled_ && (e.ctrlKey || e.metaKey) && e.altKey) {
this.toolbarManager_.showToolbars();
this.getToolbar_().selectPageNumber();
}
return;
case '[': case '[':
if (e.ctrlKey) { if (e.ctrlKey) {
this.rotateCounterclockwise(); this.rotateCounterclockwise();
} }
return; return;
case '\\':
if (e.ctrlKey) {
this.getZoomToolbar().fitToggleFromHotKey();
}
return;
case ']': case ']':
if (e.ctrlKey) { if (e.ctrlKey) {
this.rotateClockwise(); this.rotateClockwise();
...@@ -366,10 +393,8 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -366,10 +393,8 @@ class PDFViewerElement extends PDFViewerBaseElement {
return; return;
} }
// Show toolbars as a fallback. // Handle toolbar related key events.
if (!(e.shiftKey || e.ctrlKey || e.altKey)) { this.handleToolbarKeyEvent_(e);
this.toolbarManager_.showToolbars();
}
} }
/** /**
...@@ -452,6 +477,10 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -452,6 +477,10 @@ class PDFViewerElement extends PDFViewerBaseElement {
onFitToChanged(e) { onFitToChanged(e) {
super.onFitToChanged(e); super.onFitToChanged(e);
if (this.pdfViewerUpdateEnabled_) {
return;
}
if (e.detail.fittingType === FittingType.FIT_TO_PAGE || if (e.detail.fittingType === FittingType.FIT_TO_PAGE ||
e.detail.fittingType === FittingType.FIT_TO_HEIGHT) { e.detail.fittingType === FittingType.FIT_TO_HEIGHT) {
this.toolbarManager_.forceHideTopToolbar(); this.toolbarManager_.forceHideTopToolbar();
...@@ -467,7 +496,9 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -467,7 +496,9 @@ class PDFViewerElement extends PDFViewerBaseElement {
onTwoUpViewChanged_(e) { onTwoUpViewChanged_(e) {
this.currentController.setTwoUpView( this.currentController.setTwoUpView(
e.detail === TwoUpViewAction.TWO_UP_VIEW_ENABLE); e.detail === TwoUpViewAction.TWO_UP_VIEW_ENABLE);
this.toolbarManager_.forceHideTopToolbar(); if (!this.pdfViewerUpdateEnabled_) {
this.toolbarManager_.forceHideTopToolbar();
}
this.getToolbar_().annotationAvailable = this.getToolbar_().annotationAvailable =
(e.detail !== TwoUpViewAction.TWO_UP_VIEW_ENABLE); (e.detail !== TwoUpViewAction.TWO_UP_VIEW_ENABLE);
...@@ -514,7 +545,7 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -514,7 +545,7 @@ class PDFViewerElement extends PDFViewerBaseElement {
this.getToolbar_().loadProgress = progress; this.getToolbar_().loadProgress = progress;
} }
super.updateProgress(progress); super.updateProgress(progress);
if (progress === 100) { if (progress === 100 && !this.pdfViewerUpdateEnabled_) {
this.toolbarManager_.hideToolbarsAfterTimeout(); this.toolbarManager_.hideToolbarsAfterTimeout();
} }
} }
...@@ -538,23 +569,25 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -538,23 +569,25 @@ class PDFViewerElement extends PDFViewerBaseElement {
const horizontalScrollbarWidth = const horizontalScrollbarWidth =
hasScrollbars.horizontal ? scrollbarWidth : 0; hasScrollbars.horizontal ? scrollbarWidth : 0;
// Shift the zoom toolbar to the left by half a scrollbar width. This if (!this.pdfViewerUpdateEnabled_) {
// gives a compromise: if there is no scrollbar visible then the toolbar // Shift the zoom toolbar to the left by half a scrollbar width. This
// will be half a scrollbar width further left than the spec but if there // gives a compromise: if there is no scrollbar visible then the toolbar
// is a scrollbar visible it will be half a scrollbar width further right // will be half a scrollbar width further left than the spec but if there
// than the spec. In RTL layout normally, the zoom toolbar is on the left // is a scrollbar visible it will be half a scrollbar width further right
// left side, but the scrollbar is still on the right, so this is not // than the spec. In RTL layout normally, the zoom toolbar is on the left
// necessary. // left side, but the scrollbar is still on the right, so this is not
const zoomToolbar = this.getZoomToolbar(); // necessary.
if (!isRTL()) { const zoomToolbar = this.getZoomToolbar_();
zoomToolbar.style.right = if (!isRTL()) {
-verticalScrollbarWidth + (scrollbarWidth / 2) + 'px'; zoomToolbar.style.right =
} -verticalScrollbarWidth + (scrollbarWidth / 2) + 'px';
// Having a horizontal scrollbar is much rarer so we don't offset the }
// toolbar from the bottom any more than what the spec says. This means // Having a horizontal scrollbar is much rarer so we don't offset the
// that when there is a scrollbar visible, it will be a full scrollbar // toolbar from the bottom any more than what the spec says. This means
// width closer to the bottom of the screen than usual, but this is ok. // that when there is a scrollbar visible, it will be a full scrollbar
zoomToolbar.style.bottom = -horizontalScrollbarWidth + 'px'; // width closer to the bottom of the screen than usual, but this is ok.
zoomToolbar.style.bottom = -horizontalScrollbarWidth + 'px';
}
// Update the page indicator. // Update the page indicator.
const visiblePage = this.viewport.getMostVisiblePage(); const visiblePage = this.viewport.getMostVisiblePage();
...@@ -644,6 +677,14 @@ class PDFViewerElement extends PDFViewerBaseElement { ...@@ -644,6 +677,14 @@ class PDFViewerElement extends PDFViewerBaseElement {
assertNotReached('Unknown message type received: ' + data.type); assertNotReached('Unknown message type received: ' + data.type);
} }
/** @override */
forceFit(view) {
if (!this.pdfViewerUpdateEnabled_) {
this.getZoomToolbar_().forceFit(view);
}
// TODO: Add handling for the case where the new toolbar is enabled.
}
/** @override */ /** @override */
setDocumentDimensions(documentDimensions) { setDocumentDimensions(documentDimensions) {
super.setDocumentDimensions(documentDimensions); super.setDocumentDimensions(documentDimensions);
......
...@@ -134,16 +134,16 @@ export class PDFViewerBaseElement extends PolymerElement { ...@@ -134,16 +134,16 @@ export class PDFViewerBaseElement extends PolymerElement {
getSizer() {} getSizer() {}
/** /**
* @return {!ViewerZoomToolbarElement} * @return {!ViewerErrorScreenElement}
* @protected * @protected
*/ */
getZoomToolbar() {} getErrorScreen() {}
/** /**
* @return {!ViewerErrorScreenElement} * @param {!FittingType} view
* @protected * @protected
*/ */
getErrorScreen() {} forceFit(view) {}
/** /**
* @param {string} query * @param {string} query
...@@ -502,7 +502,7 @@ export class PDFViewerBaseElement extends PolymerElement { ...@@ -502,7 +502,7 @@ export class PDFViewerBaseElement extends PolymerElement {
if (params.view) { if (params.view) {
this.isUserInitiatedEvent = false; this.isUserInitiatedEvent = false;
this.getZoomToolbar().forceFit(params.view); this.forceFit(params.view);
if (params.viewPosition) { if (params.viewPosition) {
const zoomedPositionShift = const zoomedPositionShift =
params.viewPosition * this.viewport_.getZoom(); params.viewPosition * this.viewport_.getZoom();
......
...@@ -55,11 +55,6 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -55,11 +55,6 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
return /** @type {!HTMLDivElement} */ (this.$$('#sizer')); return /** @type {!HTMLDivElement} */ (this.$$('#sizer'));
} }
/** @override */
getZoomToolbar() {
return /** @type {!ViewerZoomToolbarElement} */ (this.$$('#zoom-toolbar'));
}
/** @override */ /** @override */
getErrorScreen() { getErrorScreen() {
return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen')); return /** @type {!ViewerErrorScreenElement} */ (this.$$('#error-screen'));
...@@ -70,12 +65,20 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -70,12 +65,20 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
return PRINT_PREVIEW_BACKGROUND_COLOR; return PRINT_PREVIEW_BACKGROUND_COLOR;
} }
/**
* @return {!ViewerZoomToolbarElement}
* @private
*/
getZoomToolbar_() {
return /** @type {!ViewerZoomToolbarElement} */ (this.$$('#zoom-toolbar'));
}
/** @param {!BrowserApi} browserApi */ /** @param {!BrowserApi} browserApi */
init(browserApi) { init(browserApi) {
super.init(browserApi); super.init(browserApi);
this.toolbarManager_ = this.toolbarManager_ =
new ToolbarManager(window, null, this.getZoomToolbar()); new ToolbarManager(window, null, this.getZoomToolbar_());
// Setup the keyboard event listener. // Setup the keyboard event listener.
document.addEventListener( document.addEventListener(
...@@ -120,7 +123,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -120,7 +123,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
return; return;
case '\\': case '\\':
if (e.ctrlKey) { if (e.ctrlKey) {
this.getZoomToolbar().fitToggleFromHotKey(); this.getZoomToolbar_().fitToggleFromHotKey();
} }
return; return;
case ']': case ']':
...@@ -165,7 +168,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -165,7 +168,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
// than the spec. In LTR layout, the zoom toolbar is on the left // than the spec. In LTR layout, the zoom toolbar is on the left
// left side, but the scrollbar is still on the right, so this is not // left side, but the scrollbar is still on the right, so this is not
// necessary. // necessary.
const zoomToolbar = this.getZoomToolbar(); const zoomToolbar = this.getZoomToolbar_();
if (isRTL()) { if (isRTL()) {
zoomToolbar.style.right = zoomToolbar.style.right =
-verticalScrollbarWidth + (scrollbarWidth / 2) + 'px'; -verticalScrollbarWidth + (scrollbarWidth / 2) + 'px';
...@@ -235,7 +238,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -235,7 +238,7 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
if (!this.inPrintPreviewMode_) { if (!this.inPrintPreviewMode_) {
this.inPrintPreviewMode_ = true; this.inPrintPreviewMode_ = true;
this.isUserInitiatedEvent = false; this.isUserInitiatedEvent = false;
this.getZoomToolbar().forceFit(FittingType.FIT_TO_PAGE); this.forceFit(FittingType.FIT_TO_PAGE);
this.isUserInitiatedEvent = true; this.isUserInitiatedEvent = true;
} }
...@@ -337,10 +340,14 @@ class PDFViewerPPElement extends PDFViewerBaseElement { ...@@ -337,10 +340,14 @@ class PDFViewerPPElement extends PDFViewerBaseElement {
return this.isPrintPreviewLoadingFinished_; return this.isPrintPreviewLoadingFinished_;
} }
/** @override */
forceFit(view) {
this.getZoomToolbar_().forceFit(view);
}
/** @override */ /** @override */
handleStrings(strings) { handleStrings(strings) {
super.handleStrings(strings); super.handleStrings(strings);
if (!strings) { if (!strings) {
return; return;
} }
......
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