81 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * @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
 | |
|  */
 | |
| (function(_global) {
 | |
|   var testRunner = _global['__zone_symbol__testRunner'];
 | |
|   var mark = _global['__zone_symbol__mark'];
 | |
|   var measure = _global['__zone_symbol__measure'];
 | |
|   var zone = _global['__zone_symbol__callbackZone'];
 | |
|   var button;
 | |
|   var testTarget = {
 | |
|     title: 'addEventListener',
 | |
|     times: 10,
 | |
|     before: function() {
 | |
|       button = document.createElement('button');
 | |
|       document.body.appendChild(button);
 | |
|       _global['__zone_symbol__callbackContext'].measureName = 'addEventListener_callback';
 | |
|       _global['__zone_symbol__callbackContext'].type = 'eventTask';
 | |
|       _global['__zone_symbol__callbackContext'].source = 'addEventListener';
 | |
|     },
 | |
|     after: function() {
 | |
|       document.body.removeChild(button);
 | |
|       button = null;
 | |
|     },
 | |
|     apis: [
 | |
|       {
 | |
|         supportClear: true,
 | |
|         method: 'addEventListener',
 | |
|         nativeMethod: '__zone_symbol__addEventListener',
 | |
|         clearMethod: 'removeEventListener',
 | |
|         nativeClearMethod: '__zone_symbol__removeEventListener',
 | |
|         run: function() {
 | |
|           var listener = function() {};
 | |
|           button.addEventListener('click', listener);
 | |
|           return listener;
 | |
|         },
 | |
|         runClear: function(timerId) { return button.removeEventListener('click', timerId); },
 | |
|         nativeRun: function() {
 | |
|           var listener = function() {};
 | |
|           button['__zone_symbol__addEventListener']('click', listener);
 | |
|           return listener;
 | |
|         },
 | |
|         nativeRunClear: function(timerId) {
 | |
|           return button['__zone_symbol__removeEventListener']('click', timerId);
 | |
|         }
 | |
|       },
 | |
|       {
 | |
|         isCallback: true,
 | |
|         supportClear: false,
 | |
|         method: 'addEventListener_callback',
 | |
|         nativeMethod: 'native_addEventListener_callback',
 | |
|         run: function() {
 | |
|           var listener = function() {};
 | |
|           zone.run(function() { button.addEventListener('click', listener); });
 | |
|           var event = document.createEvent('Event');
 | |
|           event.initEvent('click', true, true);
 | |
|           button.dispatchEvent(event);
 | |
|           button.removeEventListener('click', listener);
 | |
|         },
 | |
|         nativeRun: function() {
 | |
|           var func = function() {};
 | |
|           var listener = function() {
 | |
|             mark('native_addEventListener_callback');
 | |
|             func.apply(this, arguments);
 | |
|             measure('native_addEventListener_callback', 'native_addEventListener_callback');
 | |
|           };
 | |
|           button['__zone_symbol__addEventListener']('click', listener);
 | |
|           var event = document.createEvent('Event');
 | |
|           event.initEvent('click', true, true);
 | |
|           button.dispatchEvent(event);
 | |
|           button['__zone_symbol__removeEventListener']('click', listener);
 | |
|         }
 | |
|       }
 | |
|     ],
 | |
|   };
 | |
|   return testRunner(testTarget);
 | |
| }(typeof window === 'undefined' ? global : window));
 |