8
0
Просмотр исходного кода

Fixed a broken test and improved observer's destruction process.

Aleksander Nowodzinski 6 лет назад
Родитель
Сommit
134faad5df

+ 11 - 8
packages/ckeditor5-utils/src/dom/resizeobserver.js

@@ -114,16 +114,19 @@ export default class ResizeObserver {
 	static _deleteElementCallback( element, callback ) {
 		const callbacks = ResizeObserver._getElementCallbacks( element );
 
-		// Remove the element callback.
-		callbacks.delete( callback );
-
-		// If no callbacks left for the element, also remove the element.
-		if ( !callbacks.size ) {
-			ResizeObserver._elementCallbacks.delete( element );
-			ResizeObserver._observerInstance.unobserve( element );
+		// Remove the element callback. Check if exist first in case someone
+		// called destroy() twice.
+		if ( callbacks ) {
+			callbacks.delete( callback );
+
+			// If no callbacks left for the element, also remove the element.
+			if ( !callbacks.size ) {
+				ResizeObserver._elementCallbacks.delete( element );
+				ResizeObserver._observerInstance.unobserve( element );
+			}
 		}
 
-		if ( !ResizeObserver._elementCallbacks.size ) {
+		if ( ResizeObserver._elementCallbacks && !ResizeObserver._elementCallbacks.size ) {
 			ResizeObserver._observerInstance = null;
 			ResizeObserver._elementCallbacks = null;
 		}

+ 1 - 1
packages/ckeditor5-utils/tests/dom/resizeobserver.js

@@ -212,7 +212,7 @@ describe( 'ResizeObserver()', () => {
 			expect( () => {
 				observerA.destroy();
 				observerA.destroy();
-			} ).should.not.throw;
+			} ).to.not.throw();
 		} );
 	} );