Commit f92af02f authored by dpapad's avatar dpapad Committed by Commit Bot

PDF Viewer: Add type checking for layout_test and page_change_test.

Moreover increased test coverage by removing assignment to the
private |isFormFieldFocused_| property, and simulating a
'formFocusChange' event instead, which ends up updating
|isFormFieldFocused_| via the respective prod codepath.

Bug: 1000989
Change-Id: Iefbb69104921edccb6a4a9d9671d1b1c2cb0d7ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2317715Reviewed-by: default avatarJohn Lee <johntlee@chromium.org>
Commit-Queue: dpapad <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791613}
parent 46d6631f
......@@ -20,14 +20,14 @@ js_type_check("closure_compile") {
#":bookmarks_test",
":download_controls_test",
":gesture_detector_test",
":layout_test",
#":layout_test",
#":material_elements_test",
#":metrics_test",
#":navigator_test",
":nobeep_test",
":page_change_test",
#":page_change_test",
#":params_parser_test",
#":printing_icon_test",
#":redirects_fail_test",
......@@ -56,8 +56,10 @@ js_library("basic_plugin_test") {
js_library("basic_test") {
deps = [
"//chrome/browser/resources/pdf:pdf_viewer",
"//chrome/browser/resources/pdf:pdf_viewer_utils",
"//chrome/browser/resources/pdf/elements:viewer-pdf-toolbar",
"//chrome/browser/resources/pdf/elements:viewer-toolbar-dropdown",
"//third_party/polymer/v3_0/components-chromium/iron-test-helpers:mock-interactions",
]
externs_list = [ "$externs_path/test.js" ]
}
......@@ -78,6 +80,14 @@ js_library("gesture_detector_test") {
externs_list = [ "$externs_path/test.js" ]
}
js_library("layout_test") {
deps = [
"//chrome/browser/resources/pdf:pdf_scripting_api",
"//chrome/browser/resources/pdf:pdf_viewer",
]
externs_list = [ "$externs_path/test.js" ]
}
js_library("download_controls_test") {
deps = [
":test_util",
......@@ -99,6 +109,14 @@ js_library("nobeep_test") {
externs_list = [ "$externs_path/test.js" ]
}
js_library("page_change_test") {
deps = [
"//chrome/browser/resources/pdf:pdf_viewer",
"//third_party/polymer/v3_0/components-chromium/iron-test-helpers:mock-interactions",
]
externs_list = [ "$externs_path/test.js" ]
}
js_library("test_util") {
deps = [
"//chrome/browser/resources/pdf:viewport",
......
......@@ -4,7 +4,6 @@
import {getFilenameFromURL, PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js';
import {shouldIgnoreKeyEvents} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer_utils.js';
import {$} from 'chrome://resources/js/util.m.js';
import {pressAndReleaseKeyOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
const tests = [
......@@ -94,13 +93,13 @@ const tests = [
dropdown.$.button.click();
chrome.test.assertTrue(dropdown.dropdownOpen);
pressAndReleaseKeyOn(document, ESC_KEY, '', 'Escape');
pressAndReleaseKeyOn(document.documentElement, ESC_KEY, '', 'Escape');
chrome.test.assertFalse(
dropdown.dropdownOpen, 'Escape key closes dropdown');
chrome.test.assertTrue(
toolbar.opened, 'First escape key does not close toolbar');
pressAndReleaseKeyOn(document, ESC_KEY, '', 'Escape');
pressAndReleaseKeyOn(document.documentElement, ESC_KEY, '', 'Escape');
chrome.test.assertFalse(toolbar.opened, 'Second escape key closes toolbar');
chrome.test.succeed();
......
......@@ -3,16 +3,19 @@
// found in the LICENSE file.
import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js';
import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js';
// Tests common to all PDFs.
const tests = [
function testLayoutOptions() {
const viewer = /** @type {!PDFViewerElement} */ (
document.body.querySelector('#viewer'));
chrome.test.assertEq(
{
defaultPageOrientation: 0,
twoUpViewEnabled: false,
},
window.viewer.viewport.getLayoutOptions());
viewer.viewport.getLayoutOptions());
chrome.test.succeed();
},
];
......@@ -21,6 +24,8 @@ const tests = [
const perLayoutTests = {
'test-layout3.pdf': [
function testDimensions3() {
const viewer = /** @type {!PDFViewerElement} */ (
document.body.querySelector('#viewer'));
chrome.test.assertEq(
{
width: 103,
......@@ -33,6 +38,8 @@ const perLayoutTests = {
'test-layout4.pdf': [
function testDimensions4() {
const viewer = /** @type {!PDFViewerElement} */ (
document.body.querySelector('#viewer'));
chrome.test.assertEq(
{
width: 143,
......
......@@ -2,16 +2,33 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js';
import {pressAndReleaseKeyOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
/** @return {!PDFViewerElement} */
function getViewer() {
return /** @type {!PDFViewerElement} */ (
document.body.querySelector('pdf-viewer'));
}
/** @param {boolean} focused */
function simulateFormFocusChange(focused) {
const plugin = getViewer().shadowRoot.querySelector('embed');
plugin.dispatchEvent(
new MessageEvent('message', {data: {type: 'formFocusChange', focused}}));
}
function resetDocument() {
document.querySelector('pdf-viewer').viewport.goToPage(0);
document.querySelector('pdf-viewer').viewport.setZoom(1);
document.querySelector('pdf-viewer').isFormFieldFocused_ = false;
const viewer = getViewer();
viewer.viewport.goToPage(0);
viewer.viewport.setZoom(1);
simulateFormFocusChange(false);
}
/** @return {number} */
function getCurrentPage() {
return document.querySelector('pdf-viewer').viewport.getMostVisiblePage();
return getViewer().viewport.getMostVisiblePage();
}
const tests = [
......@@ -20,11 +37,11 @@ const tests = [
*/
function testPageChangesWithArrows() {
// Right arrow -> Go to page 2.
pressAndReleaseKeyOn(document, 39, '', 'ArrowRight');
pressAndReleaseKeyOn(document.documentElement, 39, '', 'ArrowRight');
chrome.test.assertEq(1, getCurrentPage());
// Left arrow -> Back to page 1.
pressAndReleaseKeyOn(document, 37, '', 'ArrowLeft');
pressAndReleaseKeyOn(document.documentElement, 37, '', 'ArrowLeft');
chrome.test.assertEq(0, getCurrentPage());
resetDocument();
......@@ -38,13 +55,13 @@ const tests = [
function testPageDoesntChangeWhenFormFocused() {
// This should be set by a message from plugin -> page when a field is
// focused.
document.querySelector('pdf-viewer').isFormFieldFocused_ = true;
simulateFormFocusChange(true);
// Page should not change when left/right are pressed.
pressAndReleaseKeyOn(document, 39, '', 'ArrowLeft');
pressAndReleaseKeyOn(document.documentElement, 39, '', 'ArrowLeft');
chrome.test.assertEq(0, getCurrentPage());
pressAndReleaseKeyOn(document, 37, '', 'ArrowRight');
pressAndReleaseKeyOn(document.documentElement, 37, '', 'ArrowRight');
chrome.test.assertEq(0, getCurrentPage());
resetDocument();
......@@ -52,18 +69,18 @@ const tests = [
},
/**
* Test that when the document is in fit to page, pressing page up/page down
* changes page back/forth.
* Test that when the document.documentElement is in fit to page, pressing
* page up/page down changes page back/forth.
*/
function testPageDownInFitPage() {
document.querySelector('pdf-viewer').viewport.fitToPage();
getViewer().viewport.fitToPage();
// Page down -> Go to page 2.
pressAndReleaseKeyOn(document, 34, '', 'PageDown');
pressAndReleaseKeyOn(document.documentElement, 34, '', 'PageDown');
chrome.test.assertEq(1, getCurrentPage());
// Page up -> Back to page 1.
pressAndReleaseKeyOn(document, 33, '', 'PageUp');
pressAndReleaseKeyOn(document.documentElement, 33, '', 'PageUp');
chrome.test.assertEq(0, getCurrentPage());
resetDocument();
......
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