feat: add webContents 'zoom-changed' event (#17747)

This commit is contained in:
Milan Burda 2019-05-14 08:40:40 +02:00 committed by Alexey Kuzmin
parent 23b0487e9b
commit 6609138959
4 changed files with 52 additions and 0 deletions

View file

@ -636,6 +636,10 @@ content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent(
return content::KeyboardEventProcessingResult::NOT_HANDLED;
}
void WebContents::ContentsZoomChange(bool zoom_in) {
Emit("zoom-changed", zoom_in ? "in" : "out");
}
void WebContents::EnterFullscreenModeForTab(
content::WebContents* source,
const GURL& origin,

View file

@ -369,6 +369,7 @@ class WebContents : public mate::TrackableObject<WebContents>,
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override;
void ContentsZoomChange(bool zoom_in) override;
void EnterFullscreenModeForTab(
content::WebContents* source,
const GURL& origin,

View file

@ -374,6 +374,14 @@ Emitted when the window enters a full-screen state triggered by HTML API.
Emitted when the window leaves a full-screen state triggered by HTML API.
#### Event: 'zoom-changed'
Returns:
* `event` Event
* `zoomDirection` String - Can be `in` or `out`.
Emitted when the user is requesting to change the zoom level using the mouse wheel.
#### Event: 'devtools-opened'
Emitted when DevTools is opened.

View file

@ -345,6 +345,45 @@ describe('webContents module', () => {
})
})
describe('zoom-changed', () => {
beforeEach(function () {
// On Mac, zooming isn't done with the mouse wheel.
if (process.platform === 'darwin') {
return closeWindow(w).then(() => {
w = null
this.skip()
})
}
})
it('is emitted with the correct zooming info', async () => {
w.loadFile(path.join(fixtures, 'pages', 'base-page.html'))
await emittedOnce(w.webContents, 'did-finish-load')
const testZoomChanged = async ({ zoomingIn }) => {
const promise = emittedOnce(w.webContents, 'zoom-changed')
w.webContents.sendInputEvent({
type: 'mousewheel',
x: 300,
y: 300,
deltaX: 0,
deltaY: zoomingIn ? 1 : -1,
wheelTicksX: 0,
wheelTicksY: zoomingIn ? 1 : -1,
phase: 'began',
modifiers: ['control', 'meta']
})
const [, zoomDirection] = await promise
expect(zoomDirection).to.equal(zoomingIn ? 'in' : 'out')
}
await testZoomChanged({ zoomingIn: true })
await testZoomChanged({ zoomingIn: false })
})
})
describe('devtools window', () => {
let testFn = it
if (process.platform === 'darwin' && isCi) {