Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(362)

Side by Side Diff: pkg/mutation_observer/lib/mutation_observer.min.js

Issue 21191006: [pkg:mutation_observer] fix 12132, ie9 support (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 if(!window.MutationObserver&&!window.WebKitMutationObserver){!function(global){v ar SideTable;if(typeof WeakMap!=="undefined"&&navigator.userAgent.indexOf("Firef ox/")<0){SideTable=WeakMap}else{!function(){var defineProperty=Object.defineProp erty;var hasOwnProperty=Object.hasOwnProperty;var counter=(new Date).getTime()%1 e9;SideTable=function(){this.name="__st"+(Math.random()*1e9>>>0)+(counter++ +"__ ")};SideTable.prototype={set:function(key,value){defineProperty(key,this.name,{v alue:value,writable:true})},get:function(key){return hasOwnProperty.call(key,thi s.name)?key[this.name]:undefined},"delete":function(key){this.set(key,undefined) }}}()}var registrationsTable=new SideTable;var setImmediate=window.msSetImmediat e;if(!setImmediate){var setImmediateQueue=[];var sentinel=String(Math.random()); window.addEventListener("message",function(e){if(e.data===sentinel){var queue=se tImmediateQueue;setImmediateQueue=[];queue.forEach(function(func){func()})}});se tImmediate=function(func){setImmediateQueue.push(func);window.postMessage(sentin el,"*")}}var isScheduled=false;var scheduledObservers=[];function scheduleCallba ck(observer){scheduledObservers.push(observer);if(!isScheduled){isScheduled=true ;setImmediate(dispatchCallbacks)}}function wrapIfNeeded(node){return window.Shad owDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(node)||node}function dispat chCallbacks(){isScheduled=false;var observers=scheduledObservers;scheduledObserv ers=[];observers.sort(function(o1,o2){return o1.uid_-o2.uid_});var anyNonEmpty=f alse;observers.forEach(function(observer){var queue=observer.takeRecords();remov eTransientObserversFor(observer);if(queue.length){observer.callback_(queue,obser ver);anyNonEmpty=true}});if(anyNonEmpty)dispatchCallbacks()}function removeTrans ientObserversFor(observer){observer.nodes_.forEach(function(node){var registrati ons=registrationsTable.get(node);if(!registrations)return;registrations.forEach( function(registration){if(registration.observer===observer)registration.removeTr ansientObservers()})})}function forEachAncestorAndObserverEnqueueRecord(target,c allback){for(var node=target;node;node=node.parentNode){var registrations=regist rationsTable.get(node);if(registrations){for(var j=0;j<registrations.length;j++) {var registration=registrations[j];var options=registration.options;if(node!==ta rget&&!options.subtree)continue;var record=callback(options);if(record)registrat ion.enqueue(record)}}}}var uidCounter=0;function MutationObserver(callback){this .callback_=callback;this.nodes_=[];this.records_=[];this.uid_=++uidCounter}Mutat ionObserver.prototype={get constructor(){return MutationObserver},observe:functi on(target,options){target=wrapIfNeeded(target);if(!options.childList&&!options.a ttributes&&!options.characterData||options.attributeOldValue&&!options.attribute s||options.attributeFilter&&options.attributeFilter.length&&!options.attributes| |options.characterDataOldValue&&!options.characterData){throw new SyntaxError}va r registrations=registrationsTable.get(target);if(!registrations)registrationsTa ble.set(target,registrations=[]);var registration;for(var i=0;i<registrations.le ngth;i++){if(registrations[i].observer===this){registration=registrations[i];reg istration.removeListeners();registration.options=options;break}}if(!registration ){registration=new Registration(this,target,options);registrations.push(registra tion);this.nodes_.push(target)}registration.addListeners()},disconnect:function( ){this.nodes_.forEach(function(node){var registrations=registrationsTable.get(no de);for(var i=0;i<registrations.length;i++){var registration=registrations[i];if (registration.observer===this){registration.removeListeners();registrations.spli ce(i,1);break}}},this);this.records_=[]},takeRecords:function(){var copyOfRecord s=this.records_;this.records_=[];return copyOfRecords}};function MutationRecord( type,target){this.type=type;this.target=target;this.addedNodes=[];this.removedNo des=[];this.previousSibling=null;this.nextSibling=null;this.attributeName=null;t his.attributeNamespace=null;this.oldValue=null}function copyMutationRecord(origi nal){var record=new MutationRecord(original.type,original.target);record.addedNo des=original.addedNodes.slice();record.removedNodes=original.removedNodes.slice( );record.previousSibling=original.previousSibling;record.nextSibling=original.ne xtSibling;record.attributeName=original.attributeName;record.attributeNamespace= original.attributeNamespace;record.oldValue=original.oldValue;return record}var currentRecord,recordWithOldValue;function getRecord(type,target){return currentR ecord=new MutationRecord(type,target)}function getRecordWithOldValue(oldValue){i f(recordWithOldValue)return recordWithOldValue;recordWithOldValue=copyMutationRe cord(currentRecord);recordWithOldValue.oldValue=oldValue;return recordWithOldVal ue}function clearRecords(){currentRecord=recordWithOldValue=undefined}function r ecordRepresentsCurrentMutation(record){return record===recordWithOldValue||recor d===currentRecord}function selectRecord(lastRecord,newRecord){if(lastRecord===ne wRecord)return lastRecord;if(recordWithOldValue&&recordRepresentsCurrentMutation (lastRecord))return recordWithOldValue;return null}function Registration(observe r,target,options){this.observer=observer;this.target=target;this.options=options ;this.transientObservedNodes=[]}Registration.prototype={enqueue:function(record) {var records=this.observer.records_;var length=records.length;if(records.length> 0){var lastRecord=records[length-1];var recordToReplaceLast=selectRecord(lastRec ord,record);if(recordToReplaceLast){records[length-1]=recordToReplaceLast;return }}else{scheduleCallback(this.observer)}records[length]=record},addListeners:func tion(){this.addListeners_(this.target)},addListeners_:function(node){var options =this.options;if(options.attributes)node.addEventListener("DOMAttrModified",this ,true);if(options.characterData)node.addEventListener("DOMCharacterDataModified" ,this,true);if(options.childList)node.addEventListener("DOMNodeInserted",this,tr ue);if(options.childList||options.subtree)node.addEventListener("DOMNodeRemoved" ,this,true)},removeListeners:function(){this.removeListeners_(this.target)},remo veListeners_:function(node){var options=this.options;if(options.attributes)node. removeEventListener("DOMAttrModified",this,true);if(options.characterData)node.r emoveEventListener("DOMCharacterDataModified",this,true);if(options.childList)no de.removeEventListener("DOMNodeInserted",this,true);if(options.childList||option s.subtree)node.removeEventListener("DOMNodeRemoved",this,true)},addTransientObse rver:function(node){if(node===this.target)return;this.addListeners_(node);this.t ransientObservedNodes.push(node);var registrations=registrationsTable.get(node); if(!registrations)registrationsTable.set(node,registrations=[]);registrations.pu sh(this)},removeTransientObservers:function(){var transientObservedNodes=this.tr ansientObservedNodes;this.transientObservedNodes=[];transientObservedNodes.forEa ch(function(node){this.removeListeners_(node);var registrations=registrationsTab le.get(node);for(var i=0;i<registrations.length;i++){if(registrations[i]===this) {registrations.splice(i,1);break}}},this)},handleEvent:function(e){e.stopImmedia tePropagation();switch(e.type){case"DOMAttrModified":var name=e.attrName;var nam espace=e.relatedNode.namespaceURI;var target=e.target;var record=new getRecord(" attributes",target);record.attributeName=name;record.attributeNamespace=namespac e;var oldValue=e.attrChange===MutationEvent.ADDITION?null:e.prevValue;forEachAnc estorAndObserverEnqueueRecord(target,function(options){if(!options.attributes)re turn;if(options.attributeFilter&&options.attributeFilter.length&&options.attribu teFilter.indexOf(name)===-1&&options.attributeFilter.indexOf(namespace)===-1){re turn}if(options.attributeOldValue)return getRecordWithOldValue(oldValue);return record});break;case"DOMCharacterDataModified":var target=e.target;var record=get Record("characterData",target);var oldValue=e.prevValue;forEachAncestorAndObserv erEnqueueRecord(target,function(options){if(!options.characterData)return;if(opt ions.characterDataOldValue)return getRecordWithOldValue(oldValue);return record} );break;case"DOMNodeRemoved":this.addTransientObserver(e.target);case"DOMNodeIns erted":var target=e.relatedNode;var changedNode=e.target;var addedNodes,removedN odes;if(e.type==="DOMNodeInserted"){addedNodes=[changedNode];removedNodes=[]}els e{addedNodes=[];removedNodes=[changedNode]}var previousSibling=changedNode.previ ousSibling;var nextSibling=changedNode.nextSibling;var record=getRecord("childLi st",target);record.addedNodes=addedNodes;record.removedNodes=removedNodes;record .previousSibling=previousSibling;record.nextSibling=nextSibling;forEachAncestorA ndObserverEnqueueRecord(target,function(options){if(!options.childList)return;re turn record})}clearRecords()}};global.MutationObserver=MutationObserver}(window) } 1 if(!window.MutationObserver&&!window.WebKitMutationObserver){!function(global){v ar SideTable;if(typeof WeakMap!=="undefined"&&navigator.userAgent.indexOf("Firef ox/")<0){SideTable=WeakMap}else{!function(){var defineProperty=Object.defineProp erty;var hasOwnProperty=Object.hasOwnProperty;var counter=(new Date).getTime()%1 e9;SideTable=function(){this.name="__st"+(Math.random()*1e9>>>0)+(counter++ +"__ ")};SideTable.prototype={set:function(key,value){defineProperty(key,this.name,{v alue:value,writable:true})},get:function(key){return hasOwnProperty.call(key,thi s.name)?key[this.name]:undefined},"delete":function(key){this.set(key,undefined) }}}()}var registrationsTable=new SideTable;var setImmediate=window.msSetImmediat e;if(!setImmediate){var setImmediateQueue=[];var sentinel=String(Math.random()); window.addEventListener("message",function(e){if(e.data===sentinel){var queue=se tImmediateQueue;setImmediateQueue=[];queue.forEach(function(func){func()})}});se tImmediate=function(func){setImmediateQueue.push(func);window.postMessage(sentin el,"*")}}var isScheduled=false;var scheduledObservers=[];function scheduleCallba ck(observer){scheduledObservers.push(observer);if(!isScheduled){isScheduled=true ;setImmediate(dispatchCallbacks)}}function wrapIfNeeded(node){return window.Shad owDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(node)||node}function dispat chCallbacks(){isScheduled=false;var observers=scheduledObservers;scheduledObserv ers=[];observers.sort(function(o1,o2){return o1.uid_-o2.uid_});var anyNonEmpty=f alse;observers.forEach(function(observer){var queue=observer.takeRecords();remov eTransientObserversFor(observer);if(queue.length){observer.callback_(queue,obser ver);anyNonEmpty=true}});if(anyNonEmpty)dispatchCallbacks()}function removeTrans ientObserversFor(observer){observer.nodes_.forEach(function(node){var registrati ons=registrationsTable.get(node);if(!registrations)return;registrations.forEach( function(registration){if(registration.observer===observer)registration.removeTr ansientObservers()})})}function forEachAncestorAndObserverEnqueueRecord(target,c allback){for(var node=target;node;node=node.parentNode){var registrations=regist rationsTable.get(node);if(registrations){for(var j=0;j<registrations.length;j++) {var registration=registrations[j];var options=registration.options;if(node!==ta rget&&!options.subtree)continue;var record=callback(options);if(record)registrat ion.enqueue(record)}}}}var uidCounter=0;function MutationObserver(callback){this .callback_=callback;this.nodes_=[];this.records_=[];this.uid_=++uidCounter}Mutat ionObserver.prototype={observe:function(target,options){target=wrapIfNeeded(targ et);if(!options.childList&&!options.attributes&&!options.characterData||options. attributeOldValue&&!options.attributes||options.attributeFilter&&options.attribu teFilter.length&&!options.attributes||options.characterDataOldValue&&!options.ch aracterData){throw new SyntaxError}var registrations=registrationsTable.get(targ et);if(!registrations)registrationsTable.set(target,registrations=[]);var regist ration;for(var i=0;i<registrations.length;i++){if(registrations[i].observer===th is){registration=registrations[i];registration.removeListeners();registration.op tions=options;break}}if(!registration){registration=new Registration(this,target ,options);registrations.push(registration);this.nodes_.push(target)}registration .addListeners()},disconnect:function(){this.nodes_.forEach(function(node){var re gistrations=registrationsTable.get(node);for(var i=0;i<registrations.length;i++) {var registration=registrations[i];if(registration.observer===this){registration .removeListeners();registrations.splice(i,1);break}}},this);this.records_=[]},ta keRecords:function(){var copyOfRecords=this.records_;this.records_=[];return cop yOfRecords}};function MutationRecord(type,target){this.type=type;this.target=tar get;this.addedNodes=[];this.removedNodes=[];this.previousSibling=null;this.nextS ibling=null;this.attributeName=null;this.attributeNamespace=null;this.oldValue=n ull}MutationObserver.prototype.constructor=MutationObserver;MutationObserver.nam e="MutationObserver";MutationRecord.prototype.constructor=MutationRecord;Mutatio nRecord.name="MutationRecord";function copyMutationRecord(original){var record=n ew MutationRecord(original.type,original.target);record.addedNodes=original.adde dNodes.slice();record.removedNodes=original.removedNodes.slice();record.previous Sibling=original.previousSibling;record.nextSibling=original.nextSibling;record. attributeName=original.attributeName;record.attributeNamespace=original.attribut eNamespace;record.oldValue=original.oldValue;return record}var currentRecord,rec ordWithOldValue;function getRecord(type,target){return currentRecord=new Mutatio nRecord(type,target)}function getRecordWithOldValue(oldValue){if(recordWithOldVa lue)return recordWithOldValue;recordWithOldValue=copyMutationRecord(currentRecor d);recordWithOldValue.oldValue=oldValue;return recordWithOldValue}function clear Records(){currentRecord=recordWithOldValue=undefined}function recordRepresentsCu rrentMutation(record){return record===recordWithOldValue||record===currentRecord }function selectRecord(lastRecord,newRecord){if(lastRecord===newRecord)return la stRecord;if(recordWithOldValue&&recordRepresentsCurrentMutation(lastRecord))retu rn recordWithOldValue;return null}function Registration(observer,target,options) {this.observer=observer;this.target=target;this.options=options;this.transientOb servedNodes=[]}Registration.prototype={enqueue:function(record){var records=this .observer.records_;var length=records.length;if(records.length>0){var lastRecord =records[length-1];var recordToReplaceLast=selectRecord(lastRecord,record);if(re cordToReplaceLast){records[length-1]=recordToReplaceLast;return}}else{scheduleCa llback(this.observer)}records[length]=record},addListeners:function(){this.addLi steners_(this.target)},addListeners_:function(node){var options=this.options;if( options.attributes)node.addEventListener("DOMAttrModified",this,true);if(options .characterData)node.addEventListener("DOMCharacterDataModified",this,true);if(op tions.childList)node.addEventListener("DOMNodeInserted",this,true);if(options.ch ildList||options.subtree)node.addEventListener("DOMNodeRemoved",this,true)},remo veListeners:function(){this.removeListeners_(this.target)},removeListeners_:func tion(node){var options=this.options;if(options.attributes)node.removeEventListen er("DOMAttrModified",this,true);if(options.characterData)node.removeEventListene r("DOMCharacterDataModified",this,true);if(options.childList)node.removeEventLis tener("DOMNodeInserted",this,true);if(options.childList||options.subtree)node.re moveEventListener("DOMNodeRemoved",this,true)},addTransientObserver:function(nod e){if(node===this.target)return;this.addListeners_(node);this.transientObservedN odes.push(node);var registrations=registrationsTable.get(node);if(!registrations )registrationsTable.set(node,registrations=[]);registrations.push(this)},removeT ransientObservers:function(){var transientObservedNodes=this.transientObservedNo des;this.transientObservedNodes=[];transientObservedNodes.forEach(function(node) {this.removeListeners_(node);var registrations=registrationsTable.get(node);for( var i=0;i<registrations.length;i++){if(registrations[i]===this){registrations.sp lice(i,1);break}}},this)},handleEvent:function(e){e.stopImmediatePropagation();s witch(e.type){case"DOMAttrModified":var name=e.attrName;var namespace=e.relatedN ode.namespaceURI;var target=e.target;var record=new getRecord("attributes",targe t);record.attributeName=name;record.attributeNamespace=namespace;var oldValue=e. attrChange===MutationEvent.ADDITION?null:e.prevValue;forEachAncestorAndObserverE nqueueRecord(target,function(options){if(!options.attributes)return;if(options.a ttributeFilter&&options.attributeFilter.length&&options.attributeFilter.indexOf( name)===-1&&options.attributeFilter.indexOf(namespace)===-1){return}if(options.a ttributeOldValue)return getRecordWithOldValue(oldValue);return record});break;ca se"DOMCharacterDataModified":var target=e.target;var record=getRecord("character Data",target);var oldValue=e.prevValue;forEachAncestorAndObserverEnqueueRecord(t arget,function(options){if(!options.characterData)return;if(options.characterDat aOldValue)return getRecordWithOldValue(oldValue);return record});break;case"DOMN odeRemoved":this.addTransientObserver(e.target);case"DOMNodeInserted":var target =e.relatedNode;var changedNode=e.target;var addedNodes,removedNodes;if(e.type=== "DOMNodeInserted"){addedNodes=[changedNode];removedNodes=[]}else{addedNodes=[];r emovedNodes=[changedNode]}var previousSibling=changedNode.previousSibling;var ne xtSibling=changedNode.nextSibling;var record=getRecord("childList",target);recor d.addedNodes=addedNodes;record.removedNodes=removedNodes;record.previousSibling= previousSibling;record.nextSibling=nextSibling;forEachAncestorAndObserverEnqueue Record(target,function(options){if(!options.childList)return;return record})}cle arRecords()}};global.MutationObserver=MutationObserver}(window)}
OLDNEW
« no previous file with comments | « pkg/mutation_observer/lib/mutation_observer.js ('k') | pkg/mutation_observer/test/mutation_observer_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698