Changeset 7610
- Timestamp:
- 07/30/08 13:10:04 (4 months ago)
- Files:
-
- trunk/openlayers/lib/OpenLayers/Events.js (modified) (4 diffs)
- trunk/openlayers/tests/Events.html (modified) (5 diffs)
- trunk/openlayers/tests/Layer/Grid.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/openlayers/lib/OpenLayers/Events.js
r7585 r7610 407 407 this.object = object; 408 408 this.element = element; 409 this.eventTypes = eventTypes;410 409 this.fallThrough = fallThrough; 411 410 this.listeners = {}; … … 419 418 // if eventTypes is specified, create a listeners list for each 420 419 // custom application event. 421 if (this.eventTypes != null) { 422 for (var i = 0; i < this.eventTypes.length; i++) { 423 this.addEventType(this.eventTypes[i]); 420 this.eventTypes = []; 421 if (eventTypes != null) { 422 for (var i = 0; i < eventTypes.length; i++) { 423 this.addEventType(eventTypes[i]); 424 424 } 425 425 } … … 458 458 addEventType: function(eventName) { 459 459 if (!this.listeners[eventName]) { 460 this.eventTypes.push(eventName); 460 461 this.listeners[eventName] = []; 461 462 } … … 533 534 register: function (type, obj, func) { 534 535 535 if ( func != null&&536 ((this.eventTypes && OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ||537 OpenLayers.Util.indexOf(this.BROWSER_EVENTS, type) != -1)) { 536 if ( (func != null) && 537 (OpenLayers.Util.indexOf(this.eventTypes, type) != -1) ) { 538 538 539 if (obj == null) { 539 540 obj = this.object; 540 541 } 541 542 var listeners = this.listeners[type]; 542 if (listeners != null) { 543 listeners.push( {obj: obj, func: func} ); 544 } 543 listeners.push( {obj: obj, func: func} ); 545 544 } 546 545 }, trunk/openlayers/tests/Events.html
r6724 r7610 13 13 var browserTypes = OpenLayers.Events.prototype.BROWSER_EVENTS; 14 14 15 var totalTests = 5 + eventTypes.length +browserTypes.length;15 var totalTests = 4 + 2*eventTypes.length + 2*browserTypes.length; 16 16 17 17 t.plan( totalTests ); … … 23 23 t.ok(events.object ==obj, " 'object' property correctly set"); 24 24 t.ok(events.element == mapDiv, " 'element' property correctly set"); 25 t.ok(events.eventTypes == eventTypes, " 'eventTypes' property correctly set");26 25 27 26 28 27 for (var i = 0; i < browserTypes.length; i++) { 29 t.ok( events.listeners[browserTypes[i]] instanceof Array, 30 "browser event: " + browserTypes[i] + " correctly registered" ); 28 var type = browserTypes[i]; 29 t.ok( events.listeners[type] instanceof Array, "browser event: " + type + " correctly registered" ); 30 t.ok( OpenLayers.Util.indexOf(events.eventTypes, type) != -1, "browser type " + type + "' correctly added to eventTypes array"); 31 31 } 32 32 for (var i = 0; i < eventTypes.length; i++) { 33 t.ok( events.listeners[eventTypes[i]] instanceof Array, 34 "custom event: " + eventTypes[i] + " correctly registered"); 33 var type = eventTypes[i]; 34 t.ok( events.listeners[type] instanceof Array, "custom event: " + type + " correctly registered"); 35 t.ok( OpenLayers.Util.indexOf(events.eventTypes, type) != -1, "eventType " + type + "' correctly added to eventTypes array"); 35 36 } 36 37 … … 40 41 "init of Events with null object/element/eventTypes still creates listeners array" ); 41 42 } 43 44 function XXXtest_Events_register(t){ 45 t.plan(4); 46 47 var ev = { 48 'object': {}, 49 'listeners': { 50 'listenerA': { 51 'push': function(options){ 52 gObjA = options.obj; 53 gFuncA = options.func; 54 } 55 }, 56 'listenerB': { 57 'push': function(options){ 58 gObjB = options.obj; 59 gFuncB = options.func; 60 } 61 } 62 }, 63 'eventTypes': ['listenerA', 'listenerB'] 64 }; 65 66 var type = null; 67 var object = null; 68 var func = null; 69 70 //func null 71 gObjA = null; gFuncA = null; gObjB = null; gFuncB = null; 72 OpenLayers.Events.prototype.register.apply(ev, [type, object, func]); 73 t.ok((gObjA == null) && (gFuncA == null) && 74 (gObjB == null) && (gFuncB == null), "no push called func null"); 75 76 //valid func, type not in ev.eventTypes 77 func = function() {}; 78 gObjA = null; gFuncA = null; gObjB = null; gFuncB = null; 79 OpenLayers.Events.prototype.register.apply(ev, [type, object, func]); 80 t.ok((gObjA == null) && (gFuncA == null) && 81 (gObjB == null) && (gFuncB == null), "no push called func null"); 82 83 //valid func, type in ev.eventTypes, null obj 84 type = 'listenerA'; 85 gObjA = null; gFuncA = null; gObjB = null; gFuncB = null; 86 OpenLayers.Events.prototype.register.apply(ev, [type, object, func]); 87 t.ok((gObjA == ev.object) && (gFuncA == func) && 88 (gObjB == null) && (gFuncB == null), "push called on listenerA's mock array when type passed in 'listenerA'. events.object taken since obj is null."); 89 90 //valid func, type in ev.eventTypes, valid obj 91 type = 'listenerB'; 92 object = {}; 93 gObjA = null; gFuncA = null; gObjB = null; gFuncB = null; 94 OpenLayers.Events.prototype.register.apply(ev, [type, object, func]); 95 t.ok((gObjA == null) && (gFuncA == null) && 96 (gObjB == object) && (gFuncB == func), "push called on listenerB's mock array when type passed in 'listenerB'."); 97 98 } 42 99 43 100 function test_Events_register_unregister(t) { … … 356 413 function test_Events_addEventType(t) { 357 414 358 t.plan( 6);415 t.plan( 8 ); 359 416 360 417 var mapDiv = OpenLayers.Util.getElement('map'); … … 370 427 var newEventType = "onFoo"; 371 428 t.ok( events.listeners[newEventType] == null, "event type not yet registered has null entry in listeners array"); 429 t.ok( OpenLayers.Util.indexOf(events.eventTypes, newEventType) == -1, "event type not yet registered not in eventTypes array"); 372 430 373 431 events.addEventType(newEventType); 374 432 t.eq( events.listeners[newEventType].length, 0, "event type passed to addEventType correctly set up" ); 433 t.ok( OpenLayers.Util.indexOf(events.eventTypes, newEventType) != -1, "event type passed to addEventType in eventTypes array"); 375 434 376 435 var func = function () {}; trunk/openlayers/tests/Layer/Grid.html
r6724 r7610 24 24 25 25 function test_Layer_Grid_constructor (t) { 26 t.plan( 5);26 t.plan( 8 ); 27 27 28 28 layer = new OpenLayers.Layer.Grid(name, url, params, null); … … 32 32 t.eq( layer.numLoadingTiles, 0, "numLoadingTiles starts at 0"); 33 33 t.ok( layer.events.listeners["tileloaded"] != null, "'tileloaded' event added to layer's event types"); 34 34 t.ok( OpenLayers.Util.indexOf(layer.events.eventTypes, 'tileloaded') != -1 ,"'tileloaded' event added to layer's event types"); 35 36 //regression testing for #1502 37 t.ok( layer.events.listeners['tileloaded'].length == 0, "no listeners for tileloaded preregister"); 38 39 var obj = {}; 40 var func = function() {}; 41 layer.events.register('tileloaded', obj, func); 42 43 t.ok( layer.events.listeners['tileloaded'].length == 1, "one listener for tileloaded after register"); 35 44 } 36 45
