feat: add webContents 'zoom-changed' event (#17747)
This commit is contained in:
		
					parent
					
						
							
								23b0487e9b
							
						
					
				
			
			
				commit
				
					
						6609138959
					
				
			
		
					 4 changed files with 52 additions and 0 deletions
				
			
		|  | @ -636,6 +636,10 @@ content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent( | ||||||
|   return content::KeyboardEventProcessingResult::NOT_HANDLED; |   return content::KeyboardEventProcessingResult::NOT_HANDLED; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void WebContents::ContentsZoomChange(bool zoom_in) { | ||||||
|  |   Emit("zoom-changed", zoom_in ? "in" : "out"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void WebContents::EnterFullscreenModeForTab( | void WebContents::EnterFullscreenModeForTab( | ||||||
|     content::WebContents* source, |     content::WebContents* source, | ||||||
|     const GURL& origin, |     const GURL& origin, | ||||||
|  |  | ||||||
|  | @ -369,6 +369,7 @@ class WebContents : public mate::TrackableObject<WebContents>, | ||||||
|   content::KeyboardEventProcessingResult PreHandleKeyboardEvent( |   content::KeyboardEventProcessingResult PreHandleKeyboardEvent( | ||||||
|       content::WebContents* source, |       content::WebContents* source, | ||||||
|       const content::NativeWebKeyboardEvent& event) override; |       const content::NativeWebKeyboardEvent& event) override; | ||||||
|  |   void ContentsZoomChange(bool zoom_in) override; | ||||||
|   void EnterFullscreenModeForTab( |   void EnterFullscreenModeForTab( | ||||||
|       content::WebContents* source, |       content::WebContents* source, | ||||||
|       const GURL& origin, |       const GURL& origin, | ||||||
|  |  | ||||||
|  | @ -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. | 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' | #### Event: 'devtools-opened' | ||||||
| 
 | 
 | ||||||
| Emitted when DevTools is opened. | Emitted when DevTools is opened. | ||||||
|  |  | ||||||
|  | @ -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', () => { |   describe('devtools window', () => { | ||||||
|     let testFn = it |     let testFn = it | ||||||
|     if (process.platform === 'darwin' && isCi) { |     if (process.platform === 'darwin' && isCi) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Milan Burda
				Milan Burda