| /* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */ |
| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = 459389; |
| var summary = 'Do not crash with JIT'; |
| var actual = ''; |
| var expect = ''; |
| |
| printBugNumber(BUGNUMBER); |
| printStatus (summary); |
| |
| print('mmmm, food!'); |
| |
| jit(true); |
| |
| var SNI = {}; |
| SNI.MetaData={}; |
| SNI.MetaData.Parameter=function() |
| { |
| var parameters={}; |
| this.addParameter=function(key,value) |
| { |
| parameters[key]=[]; |
| parameters[key].push(value); |
| }; |
| this.getParameter=function(key,separator){ |
| if(!parameters[key]) |
| { |
| return; |
| } |
| return parameters[key].join(separator); |
| }; |
| this.getKeys=function() |
| { |
| return parameters; |
| }; |
| }; |
| SNI.MetaData.Manager=function(){ |
| var m=new SNI.MetaData.Parameter(); |
| this.getParameter=m.getParameter; |
| }; |
| var MetaDataManager=SNI.MetaData.Manager; |
| SNI.Ads={ }; |
| SNI.Ads.Url=function(){ |
| var p=new SNI.MetaData.Parameter(); |
| this.addParameter=p.addParameter; |
| this.getParameter=p.getParameter; |
| }; |
| function Ad() { |
| var url=new SNI.Ads.Url(); |
| this.addParameter=url.addParameter; |
| this.getParameter=url.getParameter; |
| } |
| function DartAd() |
| AdUrl.prototype=new Ad(); |
| function AdUrl() { } |
| function AdRestriction() { |
| var p=new SNI.MetaData.Parameter(); |
| this.addParameter=p.addParameter; |
| this.getParameter=p.getParameter; |
| this.getKeys=p.getKeys; |
| } |
| function AdRestrictionManager(){ |
| this.restriction=[]; |
| this.isActive=isActive; |
| this.isMatch=isMatch; |
| this.startMatch=startMatch; |
| function isActive(ad,mdm){ |
| var value=false; |
| for(var i=0;i<this.restriction.length;i++) |
| { |
| adRestriction=this.restriction[i]; |
| value=this.startMatch(ad,mdm,adRestriction); |
| } |
| } |
| function startMatch(ad,mdm,adRestriction){ |
| for(var key in adRestriction.getKeys()){ |
| var restrictions=adRestriction.getParameter(key,','); |
| var value=mdm.getParameter(key,''); |
| match=this.isMatch(value,restrictions); |
| if(!match){ |
| value=ad.getParameter(key,'') |
| match=this.isMatch(value,restrictions); |
| } |
| } |
| } |
| function isMatch(value,restrictions){ |
| var match=false; |
| if(value) |
| { |
| splitValue=value.split(''); |
| for(var x=0;x<splitValue.length;x++){ |
| for(var a;a<restrictions.length;a++){ } |
| } |
| } |
| return match; |
| } |
| } |
| var adRestrictionManager = new AdRestrictionManager(); |
| var restrictionLeader6 = new AdRestriction(); |
| restrictionLeader6.addParameter("", ""); |
| adRestrictionManager.restriction.push(restrictionLeader6); |
| var restrictionLeader7 = new AdRestriction(); |
| restrictionLeader7.addParameter("", ""); |
| adRestrictionManager.restriction.push(restrictionLeader7); |
| function FoodAd(adtype) |
| { |
| ad=new DartAd() |
| ad.addParameter("",adtype) |
| adRestrictionManager.isActive(ad, mdManager) |
| } |
| var mdManager = new MetaDataManager() ; |
| FoodAd('P') |
| |
| jit(false); |
| |
| reportCompare(expect, actual, summary); |