Commit ede3c528 authored by dpapad's avatar dpapad Committed by Chromium LUCI CQ

PDF Viewer: Restore focus after exiting Presentation Mode.

This is necessary so that up/down arrow keys trigger scrolling of
the PDF document after exiting Presentation mode.

Bug: 1148478
Change-Id: Ie64d1e3deb5763a43ef4dc7f094065992b5eb4c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2597770
Commit-Queue: dpapad <dpapad@chromium.org>
Auto-Submit: dpapad <dpapad@chromium.org>
Reviewed-by: default avatarDaniel Hosseinian <dhoss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840131}
parent f5d386b4
...@@ -735,6 +735,9 @@ export class PDFViewerElement extends PDFViewerBaseElement { ...@@ -735,6 +735,9 @@ export class PDFViewerElement extends PDFViewerBaseElement {
assert(document.fullscreenElement === null); assert(document.fullscreenElement === null);
scroller.removeEventListener('wheel', onWheel); scroller.removeEventListener('wheel', onWheel);
this.pluginController_.setReadOnly(false); this.pluginController_.setReadOnly(false);
// Ensure that directional keys still work after exiting.
this.shadowRoot.querySelector('embed').focus();
}); });
// Nothing else to do here. The viewport will be updated as a result // Nothing else to do here. The viewport will be updated as a result
......
...@@ -137,6 +137,7 @@ js_library("fullscreen_test") { ...@@ -137,6 +137,7 @@ js_library("fullscreen_test") {
"//chrome/browser/resources/pdf:pdf_viewer", "//chrome/browser/resources/pdf:pdf_viewer",
"//third_party/polymer/v3_0/components-chromium/iron-test-helpers:mock-interactions", "//third_party/polymer/v3_0/components-chromium/iron-test-helpers:mock-interactions",
"//ui/webui/resources/js:cr.m", "//ui/webui/resources/js:cr.m",
"//ui/webui/resources/js:util.m",
] ]
externs_list = [ "$externs_path/test.js" ] externs_list = [ "$externs_path/test.js" ]
} }
......
...@@ -7,6 +7,7 @@ import {FittingType} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/c ...@@ -7,6 +7,7 @@ import {FittingType} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/c
import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js'; import {PDFScriptingAPI} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_scripting_api.js';
import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js'; import {PDFViewerElement} from 'chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/pdf_viewer.js';
import {isMac} from 'chrome://resources/js/cr.m.js'; import {isMac} from 'chrome://resources/js/cr.m.js';
import {getDeepActiveElement} from 'chrome://resources/js/util.m.js';
import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js'; import {keyDownOn} from 'chrome://resources/polymer/v3_0/iron-test-helpers/mock-interactions.js';
import {createWheelEvent} from './test_util.js'; import {createWheelEvent} from './test_util.js';
...@@ -140,6 +141,16 @@ const tests = [ ...@@ -140,6 +141,16 @@ const tests = [
chrome.test.succeed(); chrome.test.succeed();
}); });
}, },
// Note: The following test needs to be the last one, because subsequent calls
// to requestFullScreen() fail with an "API can only be initiated by a user
// gesture" error.
async function testFocusAfterExiting() {
await ensureFullscreen();
document.exitFullscreen();
await eventToPromise('fullscreenchange', scroller);
chrome.test.assertEq('EMBED', getDeepActiveElement().nodeName);
chrome.test.succeed();
},
]; ];
chrome.test.runTests(tests); chrome.test.runTests(tests);
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