68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google Inc. All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| import {ifEnvSupports} from '../test-util';
 | |
| declare const global: any;
 | |
| 
 | |
| 
 | |
| describe('MutationObserver', ifEnvSupports('MutationObserver', function() {
 | |
|            let elt: HTMLDivElement;
 | |
|            const testZone = Zone.current.fork({name: 'test'});
 | |
| 
 | |
|            beforeEach(function() { elt = document.createElement('div'); });
 | |
| 
 | |
|            it('should run observers within the zone', function(done) {
 | |
|              let ob;
 | |
| 
 | |
|              testZone.run(function() {
 | |
|                ob = new MutationObserver(function() {
 | |
|                  expect(Zone.current).toBe(testZone);
 | |
|                  done();
 | |
|                });
 | |
| 
 | |
|                ob.observe(elt, {childList: true});
 | |
|              });
 | |
| 
 | |
|              elt.innerHTML = '<p>hey</p>';
 | |
|            });
 | |
| 
 | |
|            it('should only dequeue upon disconnect if something is observed', function() {
 | |
|              let ob: MutationObserver;
 | |
|              let flag = false;
 | |
|              const elt = document.createElement('div');
 | |
|              const childZone =
 | |
|                  Zone.current.fork({name: 'test', onInvokeTask: function() { flag = true; }});
 | |
| 
 | |
|              childZone.run(function() { ob = new MutationObserver(function() {}); });
 | |
| 
 | |
|              ob !.disconnect();
 | |
|              expect(flag).toBe(false);
 | |
|            });
 | |
|          }));
 | |
| 
 | |
| describe('WebKitMutationObserver', ifEnvSupports('WebKitMutationObserver', function() {
 | |
|            const testZone = Zone.current.fork({name: 'test'});
 | |
| 
 | |
|            it('should run observers within the zone', function(done) {
 | |
|              let elt: HTMLDivElement;
 | |
| 
 | |
|              testZone.run(function() {
 | |
|                elt = document.createElement('div');
 | |
| 
 | |
|                const ob = new global['WebKitMutationObserver'](function() {
 | |
|                  expect(Zone.current).toBe(testZone);
 | |
|                  done();
 | |
|                });
 | |
| 
 | |
|                ob.observe(elt, {childList: true});
 | |
|              });
 | |
| 
 | |
|              elt !.innerHTML = '<p>hey</p>';
 | |
|            });
 | |
|          }));
 |