Closed Bug 1299593 Opened 8 years ago Closed 8 years ago

Microsoft Dynamics CRM 2011 Lookup Error since Firefox Version 48.0.2 due to Array.prototype.values

Categories

(Core :: JavaScript Engine, defect)

48 Branch
x86_64
Windows 7
defect
Not set
normal

Tracking

()

VERIFIED FIXED
mozilla52
Tracking Status
firefox48 --- wontfix
firefox49 + verified
relnote-firefox --- 49+
firefox50 --- fixed
firefox51 --- fixed
firefox52 --- fixed

People

(Reporter: jon.ferretti, Assigned: evilpie)

References

Details

(Keywords: dev-doc-complete, regression, site-compat)

Attachments

(4 files, 3 obsolete files)

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36

Steps to reproduce:

Our business users are receiving an error when entering data in a lookup field and pressing 'Enter' on the keyboard to perform the lookup in Microsoft Dynamics CRM 2011. 

This started occurring in FireFox after the 48.0.2 update. The same web controls work fine on Internet Explorer and in Chrome.

We experienced the exact same problem with Google Chrome when version 51.0.2704.63 m was released in May 2016. Chrome fixed this in version 52.0.2743.82 m.



Actual results:

Below is the unhandled exception thrown by CRM. It is identical to the error that was being thrown by Google:
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.NullReferenceException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #8FF307DEDetail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220970</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>System.NullReferenceException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #8FF307DE</Message>
  <Timestamp>2016-08-31T14:38:56.9692873Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText i:nil="true" />
</OrganizationServiceFault>


Expected results:

Before Firefox version 48.0.2 the lookups could be performed in CRM without error.
OS: Unspecified → Windows 7
Hardware: Unspecified → x86_64
Jon, there is way to have access into Microsoft Dynamics CRM 2011 to test this? In the browser console do you see any errors?
Component: Untriaged → DOM
Product: Firefox → Core
NI Jon for comment 1
Flags: needinfo?(jon.ferretti)
(In reply to ovidiu boca[:Ovidiu] from comment #1)
> Jon, there is way to have access into Microsoft Dynamics CRM 2011 to test
> this? In the browser console do you see any errors?

Hello,
I have not used the browser console before but I had it up while recreating the issue and an error was logged: "unreachable code after return statement [Learn More]"

The [Learn More] link points to: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Stmt_after_return

The full lookup.js error can be seen below:
lookup.js:1:9428

var LookupBrowse=1,LookupShowColumns=2,LookupMultiSelect=4;function LookupItem(){this.id="";this.name="";this.html="";this.type="";this.values=null;this.keyValues=null;this.category=null;this.ambiguousRecordsXml=null;this.selected=false;this.displayclass=""}function LookupItems(){this.items=[]}function LookupItemData(name,value){this.name=name;this.value=value}function LookupArgsClass(){this.items=null;this.customViews=null;this.availableViews=null}function LookupControlItem(sId,iType,sName,sOnclick,sDisplayClass,sData,sTypeName,iCategory,sAmbiguousRecordsXml,bSelected){this.id=sId;this.type=iType;this.name=sName;this.onclick=sOnclick;this.displayClass=sDisplayClass;this.data=sData;this.typename=sTypeName;this.category=iCategory;this.ambiguousRecordsXml=sAmbiguousRecordsXml;this.selected=bSelected}function CustomView(id,iRecordTypeId,sName,sFetchXml,sLayoutXml){this.id=id;this.recordType=iRecordTypeId;this.name=sName;this.fetchXml=sFetchXml;this.layoutXml=sLayoutXml;this.Type=0}function LookupObjectsForOutlook(lookupField){if(!IsNull(lookupField)){lookupField=Mscrm.FormControlInputBehavior.GetBehavior(lookupField);lookupField.Lookup()}}function LookupObjectsWithCallback(callbackReference,lookupField,lookupStyle,lookupTypes,lookupBrowse,bindingColumns,additionalParams,showNew,showProp,bPopulateLookup,defaultType,searchString,dataProviderOverride,defaultViewId,customViews,filterRelationshipId,rId,rType,rDependAttr,allowFilterOff,disableQuickFind,disableViewPicker,viewsIds){return LookupObjects(lookupField,lookupStyle,lookupTypes,lookupBrowse,bindingColumns,additionalParams,showNew,showProp,bPopulateLookup,defaultType,searchString,dataProviderOverride,defaultViewId,customViews,filterRelationshipId,rId,rType,rDependAttr,allowFilterOff,disableQuickFind,disableViewPicker,viewsIds,"",callbackReference)}function LookupObjects(lookupField,lookupStyle,lookupTypes,lookupBrowse,bindingColumns,additionalParams,showNew,showProp,bPopulateLookup,defaultType,searchString,dataProviderOverride,defaultViewId,customViews,filterRelationshipId,rId,rType,rDependAttr,allowFilterOff,disableQuickFind,disableViewPicker,viewsIds){LookupObjects(lookupField,lookupStyle,lookupTypes,lookupBrowse,bindingColumns,additionalParams,showNew,showProp,bPopulateLookup,defaultType,searchString,dataProviderOverride,defaultViewId,customViews,filterRelationshipId,rId,rType,rDependAttr,allowFilterOff,disableQuickFind,disableViewPicker,viewsIds,"",null)}function LookupObjects(lookupField,lookupStyle,lookupTypes,lookupBrowse,bindingColumns,additionalParams,showNew,showProp,bPopulateLookup,defaultType,searchString,dataProviderOverride,defaultViewId,customViews,filterRelationshipId,rId,rType,rDependAttr,allowFilterOff,disableQuickFind,disableViewPicker,viewsIds,crmAttributeId,callbackReference){var args=new LookupArgsClass;args.customViews=customViews;args.availableViews=viewsIds;if(lookupField!=null){args.items=[];for(var a=lookupField.getElementsByTagName("SPAN"),bSetSearchString=searchString===""||IsNull(searchString),tempDefaultType=defaultType,i=a.length-1;i>=0;i--)if(a[i].getAttribute("wrapper")!="true"){var item=a[i];if(item.getAttribute("otype")!=="0"||item.getAttribute("otypename")!==""||!IsNull(item.getAttribute("activitypartyid"))){args.items.push(item);tempDefaultType=item.getAttribute("otype")}else{if(bSetSearchString==true)searchString=XUI.Html.GetText(item);if(searchString===XUI.Html.GetText(item)&&!IsNull(item.getAttribute("ambiguousRecordsXml")))for(var oXmlDoc=XUI.Xml.LoadXml(item.getAttribute("ambiguousRecordsXml")),oRecords=XUI.Xml.SelectNodes(oXmlDoc,"/records/record",null),oLookupCtrl=getLookupControlFromItemSpan(item),iaLookupTypes=oLookupCtrl.get_lookupTypes().split(","),j=0;j<oRecords.length;j++){var iObjectType=parseInt(oRecords[j].getAttribute("otype"),10);if(j==0)tempDefaultType=iObjectType;else if(iObjectType!=tempDefaultType)for(var k=0;k<iaLookupTypes.length;k++)if(iaLookupTypes[k]==tempDefaultType)break;else if(iaLookupTypes[k]==iObjectType){tempDefaultType=iObjectType;break}}}}if(tempDefaultType!=defaultType)for(var lookupTypesArr=lookupTypes.split(","),i=0;i<lookupTypesArr.length;i++)if(lookupTypesArr[i]==tempDefaultType){defaultType=tempDefaultType;defaultViewId=null;break}args.items.reverse()}var bIsSubjectLookup=lookupStyle.toUpperCase()==="SUBJECT",oUrl=bIsSubjectLookup?Mscrm.CrmUri.create("/_controls/lookup/lookupsubject.aspx"):Mscrm.CrmUri.create("/_controls/lookup/lookupinfo.aspx");oUrl.get_query()["browse"]=lookupBrowse;if(!bIsSubjectLookup){if(!IsNull(disableViewPicker))oUrl.get_query()["DisableViewPicker"]=disableViewPicker;if(!IsNull(disableQuickFind))oUrl.get_query()["DisableQuickFind"]=disableQuickFind;if(!IsNull(allowFilterOff))oUrl.get_query()["AllowFilterOff"]=allowFilterOff}if(!bIsSubjectLookup)oUrl.get_query()["LookupStyle"]=lookupStyle;if(typeof dataProviderOverride!="undefined"&&!IsNull(dataProviderOverride)&&dataProviderOverride!="")oUrl.get_query()["DataProvider"]=dataProviderOverride;if(bindingColumns)oUrl.get_query()["bindingcolumns"]=bindingColumns;additionalParams&&additionalParams.length>0&&oUrl.appendToQuery(additionalParams);if(showNew)if(!additionalParams||additionalParams&&additionalParams.indexOf("ShowNewButton=")===-1)oUrl.get_query()["ShowNewButton"]=showNew;var lookTypeCode=parseInt(lookupTypes,10);if(lookTypeCode==Annotation||lookTypeCode==IncidentResolution)oUrl.get_query()["EnableNewButton"]=0;if(lookTypeCode==CustomerAddress){var currentForm=GetCurrentForm(lookupField);if(!IsNull(currentForm)&&currentForm.ObjectTypeCode==ContractDetail){rType=GetParam(additionalParams,"rType");rId=CrmEncodeDecode.CrmUrlDecode(GetParam(additionalParams,"rId"));oUrl.get_query()["parentType"]=rType;oUrl.get_query()["parentId"]=rId}}if(filterRelationshipId){oUrl.get_query()["relationshipid"]=filterRelationshipId;oUrl.get_query()["rId"]=rId;oUrl.get_query()["rType"]=rType;oUrl.get_query()["rDependAttr"]=rDependAttr}if(showProp)oUrl.get_query()["ShowPropButton"]=showProp;if(!IsNull(defaultType))oUrl.get_query()["DefaultType"]=defaultType;if(searchString)oUrl.get_query()["search"]=searchString;if(defaultViewId&&defaultViewId.length>0)oUrl.get_query()["DefaultViewId"]=defaultViewId;oUrl.get_query()["objecttypes"]=lookupTypes;if(crmAttributeId!=""&&!bIsSubjectLookup&&oUrl.toString().length>=2048){oUrl.get_query()["objecttypes"]=null;oUrl.get_query()["crmattributeid"]=crmAttributeId}var oFeatures=BuildFeatures(lookupStyle);if(oFeatures==null)return;bPopulateLookup="undefined"==typeof bPopulateLookup?true:bPopulateLookup;var parameters=[lookupField,bPopulateLookup,callbackReference],callbackFunctionObject=Mscrm.Utilities.createCallbackFunctionObject("buildAndReturnLookupItems",this,parameters),lookupItems=openStdDlgWithCallback(oUrl,args,oFeatures.width,oFeatures.height,callbackFunctionObject,true);Mscrm.Utilities.isModalDialogSupported()&&buildAndReturnLookupItems(lookupItems,lookupField,bPopulateLookup);return lookupItems}function buildAndReturnLookupItems(lookupItems,lookupField,bPopulateLookup,callbackReference){lookupItems!=null&&lookupField!=null&&bPopulateLookup&&BuildField(lookupField,lookupItems);Mscrm.Utilities.executeFunctionIfModeless(callbackReference,lookupItems)}function GetCurrentForm(element){var o=element;while(!IsNull(o)&&o.tagName!="FORM")o=o.parentNode;if(IsNull(o))return null;return o.className=="ms-crm-Form"?$find(o.id):null}function GetParam(params,name){if(!IsNull(params)&&params!=""){var i=params.indexOf(name);if(i>-1){var iEnd=params.indexOf("&",i),iNameEnd=params.indexOf("=",i);if(iEnd==-1)iEnd=params.length;return params.substring(iNameEnd+1,iEnd)}}return ""}function BuildFieldSpan(lookupField,lookupItems){for(var html="",len=lookupItems.items.length,spanElementFormat='<span class="ms-crm-Lookup-Item" oid="{0}" otype="{1}" selected="{2}">{3}</span>',i=0;i<len;++i){var item=lookupItems.items[i];html+=i>0?" ":"";html+=String.format(spanElementFormat,item.id,item.type,item.selected,item.html)}if(html.length==0)html="&nbsp;";return html}function BuildField(lookupField,lookupItems){lookupField.innerHTML=BuildFieldSpan(lookupField,lookupItems)}function BuildFeatures(lookupStyle){var oFeatures={};switch(lookupStyle){case "multi":oFeatures.height=window.UseTabletExperience?630:600;oFeatures.width=window.UseTabletExperience?680:600;break;case "single":oFeatures.height=window.UseTabletExperience?630:600;oFeatures.width=window.UseTabletExperience?680:600;break;case "subject":oFeatures.height=450;oFeatures.width=500;break;default:alert(LOCID_LOOKUPSTYLE_NOT_SET+lookupStyle);return null}return oFeatures}var _iClickTimer,_clickedElement;function handleGridClick(domEventObject){if(_iClickTimer==null){domEventObject.stopPropagation();o=domEventObject.target;while(o.tagName!="SPAN")o=o.parentNode;_clickedElement=o;if(window.UseTabletExperience)openlui(domEventObject);else{var func=function(){openlui(domEventObject)};_iClickTimer=window.setTimeout(func,500)}}}function handleLookupAnchorClick(domEventObject){o=domEventObject.target;while(o.tagName!="SPAN")o=XUI.Html.DomUtils.GetFirstChild(o);_clickedElement=o;openlui(domEventObject,o)}function clearTimer(){window.clearTimeout(_iClickTimer);_iClickTimer=null}function openDisabledLui(domEventObject){(domEventObject.keyCode==KEY_ENTER||domEventObject.keyCode==KEY_SPACE)&&openlui(domEventObject,domEventObject.target)}var _oEnhancedPreview=null;function showPreviewRowWindowTemp(oTr,top,left){return;if(IsNull(oTr)||IsNull(oTr.otype)||IsNull(oTr.oid))return;if(IsNull(_oEnhancedPreview))_oEnhancedPreview=new Mscrm.EnhancedPreviewControl;_oEnhancedPreview.show(top,left,oTr.otype,oTr.oid,oTr)}function handleGridRightClick(domEventObject){domEventObject.stopPropagation();domEventObject.preventDefault();o=domEventObject.target;if(o.getAttribute("wrapper")=="true")o=o.parentNode;while(o.tagName!="SPAN")o=o.parentNode}var _oAmbiguousPopup=null;function openlui(domEventObject,o){var bIsATEvent=false;if(IsNull(domEventObject)&&IsNull(o)){o=_clickedElement;clearTimer()}else if(IsNull(o)){o=domEventObject.target;bIsATEvent=o.className=="atLink";while(o.tagName!="SPAN"||o.getAttribute("wrapper")=="true")o=o.parentNode;clearTimer()}if(o.getAttribute("otype")==UnresolvedAddress)resolveAddress(o.getAttribute("otype"),o.getAttribute("oid"));else if(o.getAttribute("category")==LookupItemCategories.AMBIGUOUS){var oXmlDoc=XUI.Xml.LoadXml(o.getAttribute("ambiguousRecordsXml"));if(IsNull(_oAmbiguousPopup))_oAmbiguousPopup=createMenu();else _oAmbiguousPopup.clear();var notificationitem=Mscrm.MenuItem.createMenuItem(LOCID_LOOKUPAMBIGUOUSTITLE),listItem=document.createElement("li");listItem.style.height="22px";listItem.innerHTML=String.format('<div class="Notifications" style="text-align:center;height:18px;padding-top:2px">{0}</div>',LOCID_LOOKUPAMBIGUOUSTITLE);notificationitem.set_itemContents(listItem);notificationitem.set_isFocusable(false);_oAmbiguousPopup.addItem(notificationitem);for(var oLookupCtrl=getLookupControlFromItemSpan(o),oRecords=XUI.Xml.SelectNodes(oXmlDoc,"/records/record",null),i=0;i<oRecords.length;i++){var item=Mscrm.MenuItem.createMenuItem(oRecords[i].getAttribute("oname"));item.set_iconPath(oLookupCtrl.GetLookupTypeIcon(parseInt(oRecords[i].getAttribute("otype"),10)).get_source());item.set_tooltip(oRecords[i].getAttribute("oname"));item.set_stylePrefix(Mscrm.MenuStyles.lookupMruStylePrefix);item.set_reference(i);var sCallBack=Function.createDelegate(this,function(menuItem){var oItem=new resolveAmbiguousItem(o,oRecords[menuItem.get_reference()]);oItem.Execute()});item.set_actionCallback(sCallBack);_oAmbiguousPopup.addItem(item)}var anchorItem=Mscrm.MenuItem.createMenuItem(LOCID_LOOKMORERECORDS_AMBIGUOUS);anchorItem.set_stylePrefix(Mscrm.MenuStyles.lookupMruStylePrefix);var sCallBack=Function.createDelegate(this,function(menuItem){(new showLookupDialogForAmbiguous(oLookupCtrl,XUI.Html.GetText(o))).Execute()});anchorItem.set_actionCallback(sCallBack);anchorItem.get_itemContents().style.textAlign="center";if(!IsNull(XUI.DomUtilities.GetFirstChild(XUI.DomUtilities.GetChildElementAt(anchorItem.get_itemContents(),1)))){var rootSpan=XUI.DomUtilities.GetFirstChild(XUI.DomUtilities.GetChildElementAt(anchorItem.get_itemContents(),1));if(!IsNull(XUI.DomUtilities.GetFirstChild(rootSpan))){var leftSpan=XUI.DomUtilities.GetFirstChild(rootSpan);leftSpan.style.display="none"}}var className=anchorItem.get_itemClassName()+" popupMoreLinkItem";anchorItem.set_itemClassName(className);anchorItem.get_itemContents().className+=" popupMoreLinkItem";_oAmbiguousPopup.addItem(anchorItem);SetPopupDimension(_oAmbiguousPopup,oLookupCtrl);_oAmbiguousPopup.show()}else if(o.getAttribute("category")==LookupItemCategories.UNKNOWN){var oLookupCtrl=getLookupControlFromItemSpan(o);oLookupCtrl.Lookup(true,false,XUI.Html.GetText(o))}else if(o.getAttribute("category")!=LookupItemCategories.UNKNOWN_TYPE){if(window.UseTabletExperience&&!IsNull(window.parent)&&!IsNull(window.parent.$get("crmFormSubmitId"))&&window.parent.$get("crmFormSubmitId").value==o.getAttribute("oid")){o.parentNode.parentNode.style.textDecoration="none";return}openObj(o.getAttribute("otype"),o.getAttribute("oid"))}}function createMenu(){var menu=Mscrm.Menu.createMenu();menu.set_stylePrefix(Mscrm.MenuStyles.lookupMruStylePrefix);menu.set_propagateStyle(false);return menu}function SetPopupDimension(popupControl,oLookupCtrl){var lookupTextElement=XUI.Html.DomUtils.GetFirstChild(oLookupCtrl.get_rootControl()),xyPos=Mscrm.Utilities.getXYPos(lookupTextElement,!Mscrm.Utilities.get_isLeftToRight()),x=parseInt(xyPos["x"],10),y=parseInt(xyPos["y"],10),w=lookupTextElement.scrollWidth,h=lookupTextElement.scrollHeight;if(!Mscrm.Utilities.get_isLeftToRight()){x+=lookupTextElement.scrollWidth;if(Sys.Browser.agent===Sys.Browser.InternetExplorer)x+=8}if(w<190)w=190;if(w>400)w=400;if(Mscrm.Utilities.get_isLeftToRight())x=x+1;else x=x-1;y=y+h;popupControl.set_top(y);popupControl.set_left(x);popupControl.set_width(w)}function getLookupControlFromItemSpan(oItemSpan){for(var lookupTable=oItemSpan.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode,tableCells=lookupTable.getElementsByTagName("td"),i=0;i<tableCells.length;i++)if(tableCells[i].className=="Lookup_RenderButton_td")return Mscrm.FormControlInputBehavior.GetElementBehavior(XUI.Html.DomUtils.GetFirstChild(tableCells[i]));return null}function resolveAmbiguousItem(oItem,oChangeToRecord){this.Execute=_execute;function _execute(){!IsNull(_oAmbiguousPopup)&&_oAmbiguousPopup.hide();for(var aoValues=[],aoKeyValues={},oLookupCtrl=getLookupControlFromItemSpan(oItem),oLookupItem=new LookupControlItem(oChangeToRecord.getAttribute("oid"),oChangeToRecord.getAttribute("otype"),oChangeToRecord.getAttribute("oname"),null,"ms-crm-Lookup-Item",null,null,false),i=0,len=oChangeToRecord.childNodes.length;i<len;i++){var oNode=oChangeToRecord.childNodes[i],sName=oNode.nodeName,sValue=XUI.Xml.GetText(oNode);aoValues.push(new LookupItemData(sName,sValue));aoKeyValues[sName]=new LookupItemData(sName,sValue)}oLookupItem.values=aoValues;oLookupItem.keyValues=aoKeyValues;oLookupCtrl.UpdateItem(oItem.getAttribute("oid"),oLookupItem,true)}}function showLookupDialogForAmbiguous(oLookupControl,sSearchString){this.Execute=_execute;function _execute(){oLookupControl.Lookup(true,false,sSearchString)}}var LookupItemCategories=null;populateLookupItemCategories();function populateLookupItemCategories(){if(IsNull(LookupItemCategories)){LookupItemCategories={};LookupItemCategories.NONE=0;LookupItemCategories.AMBIGUOUS=1;LookupItemCategories.UNKNOWN=2;LookupItemCategories.UNKNOWN_EMAIL=3;LookupItemCategories.NON_ENTITY=4;LookupItemCategories.UNKNOWN_TYPE=5;LookupItemCategories.MRU_ITEM=6}}function subjectJstree(treeDiv,jsonTree_Data,control_id){var is_rtl=window.LOCID_UI_DIR.toUpperCase()=="RTL"?true:false,treeBehavior=Mscrm.FormControlInputBehavior.GetBehavior(control_id+"_i"),urltheme=null;if(Mscrm.InlineEditUtility.get_highContrastEnabled())urltheme="/_Static/_common/scripts/jstree_highcontrast.css";else urltheme="/_Static/_common/scripts/jstree.css";treeDiv.jstree({json_data:jsonTree_Data,themes:{dots:false,icons:false,url:urltheme},core:{animation:200,rtl:is_rtl},plugins:["themes","json_data","ui","wholerow","hotkeys"],hotkeys:{"return":function(){var hoveredObj=$(".jstree-hovered"),subjectItem=hoveredObj.first().text().trim();this.data.ui.hovered&&treeBehavior.selectInlineSubjectItem(subjectItem,this.data.ui.hovered.data().subjectid);treeBehavior.closeTreeDialog()}}});treeDiv.bind("select_node.jstree",function(e,data){treeBehavior.selectInlineSubjectItem(data.inst.get_json()[0].data,data.inst.get_json()[0].metadata.subjectid);treeBehavior.closeTreeDialog()});treeDiv.bind("loaded.jstree open_node.jstree close_node.jstree",function(){adjustForHighContrast()})}function adjustForHighContrast(){if(Mscrm.InlineEditUtility.get_highContrastEnabled()){var circleUnicodeChar="\u25cb",rightArrowUnicodeChar="\u2192",leftArrowUnicodeChar="\u2190",southEastArrowUnicodeChar="\u2198",southWestArrowUnicodeChar="\u2199";$(".jstree-default .jstree-no-dots .jstree-leaf > ins").text(circleUnicodeChar);if(Mscrm.Utilities.get_isLeftToRight()){$(".jstree-default .jstree-no-dots .jstree-closed > ins").text(rightArrowUnicodeChar);$(".jstree-default .jstree-no-dots .jstree-open > ins").text(southEastArrowUnicodeChar)}else{$(".jstree-default .jstree-no-dots .jstree-closed > ins").text(leftArrowUnicodeChar);$(".jstree-default .jstree-no-dots .jstree-open > ins").text(southWestArrowUnicodeChar)}}}function updateParentLookup(entityRecord,lookupParentControlId){if(entityRecord!=null){var oLookupItem=new LookupControlItem(entityRecord.Id,entityRecord.TypeCode,entityRecord.Name,"openlui(new Sys.UI.DomEvent(event)); return false;","ms-crm-Lookup-Item","",entityRecord.TypeName,false),oLookupCtrl=Mscrm.FormControlInputBehavior.GetBehavior(lookupParentControlId);oLookupCtrl!=null&&oLookupCtrl.selectAndRaiseEvent(oLookupItem)}}
Flags: needinfo?(jon.ferretti)
Jon, it would be really helpful if we could narrow down when this happened (a lot of changes can happen over 6 weeks). Is it at all possible for us to get access to a live site with a test account or something? Otherwise, would you be willing to help us find the change that caused it? We have a tool that largely automates the process and shouldn't take more than 10-15min once you start.
Flags: needinfo?(jon.ferretti)
(In reply to Ryan VanderMeulen [:RyanVM] from comment #4)
> Jon, it would be really helpful if we could narrow down when this happened
> (a lot of changes can happen over 6 weeks). Is it at all possible for us to
> get access to a live site with a test account or something? Otherwise, would
> you be willing to help us find the change that caused it? We have a tool
> that largely automates the process and shouldn't take more than 10-15min
> once you start.

Hi Ryan,
I don't think I would be able to provide access to our internal CRM application, even with a test account. This is an outdated version of CRM that will be replaced next year so it has, and will continue to be left alone. We have not made any changes on our side to CRM and no updates have been applied. By reviewing the Firefox upgrade history for many users and relating that back to when we began getting reports of this issue, I can say that this started happening after Firefox 48.0.1 was released, about 2-3 weeks ago. There were no cases of it occurring in version 47.x or 48.0, this didn't start until after 48.0.1. 

Hope this helps! I am unable to provide access to our environment for testing purposes.
Thanks for all your help,
Jon
Flags: needinfo?(jon.ferretti)
Thanks Jon for all your informations, like Ryan said, we have a tool called mozregression that can help to narrow down the change that cause this issue.
Here is the link to mozregression: http://mozilla.github.io/mozregression/install.html. Please take a look and tell us if you are willing to give it a try, that way we can guide you what steps to take.

Jon it will help us if you can install Firefox Nightly 51.0a1 from here https://nightly.mozilla.org/ and retest the problem to see if you can reproduce it.
Flags: needinfo?(jon.ferretti)
(In reply to ovidiu boca[:Ovidiu] from comment #6)
> Thanks Jon for all your informations, like Ryan said, we have a tool called
> mozregression that can help to narrow down the change that cause this issue.
> Here is the link to mozregression:
> http://mozilla.github.io/mozregression/install.html. Please take a look and
> tell us if you are willing to give it a try, that way we can guide you what
> steps to take.
> 
> Jon it will help us if you can install Firefox Nightly 51.0a1 from here
> https://nightly.mozilla.org/ and retest the problem to see if you can
> reproduce it.

Hi Ovidiu,
So long as the mozregression tool can be run locally on my machine and will not impact or communicate with our production CRM environment, I would be more than happy to perform the testing. Please let me know where you would like me to start. 

Also, to test in Firefox Nightly 51.0a1 will I need to uninstall version 48.0.2 locally and then install the nightly build? If so, would you like me to do this before or after running the mozregression tool?

Thanks,
Jon
Flags: needinfo?(jon.ferretti)
First you need to install Nightly 51.0a1 from this link: https://nightly.mozilla.org/  and try to reproduce it. You don't need to uninstall version 48.0.2, but what you can do is to create a new profile and start Nightly with new profile, because this way your old profile it won't be affected in any matter. 
First of all please see if you can reproduce it on Nightly and come back with your result. 

My concern here is that this bug didn't start until after 48.0.1 and maybe using mozregression it won't help. Ryan what do you think about this?
Flags: needinfo?(ryanvm)
(In reply to ovidiu boca[:Ovidiu] from comment #8)
> First you need to install Nightly 51.0a1 from this link:
> https://nightly.mozilla.org/  and try to reproduce it. You don't need to
> uninstall version 48.0.2, but what you can do is to create a new profile and
> start Nightly with new profile, because this way your old profile it won't
> be affected in any matter. 
> First of all please see if you can reproduce it on Nightly and come back
> with your result. 
> 
> My concern here is that this bug didn't start until after 48.0.1 and maybe
> using mozregression it won't help. Ryan what do you think about this?

Just installed nightly 51.0a1 for Win32 Standard and was able to reproduce the same error.

Also, now that I have the nightly installed it launches every time I try to open Firefox 48. I am unsure how to create a new profile to keep the two installations separate.
I don't see anything obvious in the changelog between 48.0 and 48.0.1 that would be related to this. I suspect that 48 is probably affected but slipped under the radar because Fx48 barely got rolled out to anybody due to startup crashes caused by third-party security software. In other words, the vast majority of our users were updated directly from 47.x to 48.0.1.

But regardless, any fixes that landed on 48.0.1 would have landed on nightly as well prior to being uplifted to release, so mozregression should still work for pinpointing it one way or another.

To answer the question about mozregression from comment 7, mozregression is completely self-contained. It basically just automates the process of downloading different builds and running them with a clean profile so you can say "Yes, it works" or "No, it doesn't" to each. It runs locally and the only outside communication it does is the actual downloading of builds and communicating with our source repositories (hg.mozilla.org) to gather the list of changes between various builds it downloads. It won't communicate with your CRM at all. For an issue like this which is trivial to reproduce on your end, I wouldn't expect it to take more than 10-15min total to run the bisection.
(In reply to Jon from comment #9)
> Also, now that I have the nightly installed it launches every time I try to
> open Firefox 48. I am unsure how to create a new profile to keep the two
> installations separate.

The below page has more information on how to manage different profiles.
https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

At this point, you might be able to just uninstall Nightly though since you've already reproduced the issue there. FWIW, mozregression handles profiles automatically and won't touch your "real" profile in any way while it runs.
Flags: needinfo?(ryanvm)
(In reply to Ryan VanderMeulen [:RyanVM] from comment #11)
> (In reply to Jon from comment #9)
> > Also, now that I have the nightly installed it launches every time I try to
> > open Firefox 48. I am unsure how to create a new profile to keep the two
> > installations separate.
> 
> The below page has more information on how to manage different profiles.
> https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-
> firefox-profiles
> 
> At this point, you might be able to just uninstall Nightly though since
> you've already reproduced the issue there. FWIW, mozregression handles
> profiles automatically and won't touch your "real" profile in any way while
> it runs.

Nightly 51.0a1 uninstalled successfully. 

I am ready to proceed with mozregression. Shall I install the GUI or the CLI version? I'm running Win7 64-bit.
Thanks! Really appreciate you sticking with this :-)

Regarding CLI/GUI, it's up to you. If you're comfortable with a command prompt, you may find it a bit faster to work with. You'd basically start with |mozregression --good 47 --bad 48| and go from there.
(In reply to Ryan VanderMeulen [:RyanVM] from comment #13)
> Thanks! Really appreciate you sticking with this :-)
> 
> Regarding CLI/GUI, it's up to you. If you're comfortable with a command
> prompt, you may find it a bit faster to work with. You'd basically start
> with |mozregression --good 47 --bad 48| and go from there.

Of course! I'm happy to work with everyone to find the root cause. I'm comfortable with the CLI, I'm just unsure of exactly what commands to run.

What will happen when I run mozregression --good 47 --bad 48?
I installed the CLI version and ran "mozregression --good 47 --bad 48". I then tested in all builds I was prompted with and entered "good" when there was no error and "bad" when there was an error. In the end I received an error in the CLI...

ERROR: Unable to exploit the merge commit. Origin branch is mozilla-central, and the commit message for b45ee3e0 was: 
Merge m-c to a CLOSED TREE m-i

Is there a log somewhere that I can provide that will have more detail for you or does the above have what you need?

Also, I should note that errors only occurred in builds where pop-ups were blocked by default and an alert appeared stating:
"A Microsoft Dynamics CRM window was unable to open, and may have been blocked by a pop-up blocker....". 

In builds where the above alert was not received, there was no error while testing.
mozregression testing ended in ERROR. Unable to locate a log file to share. Attaching CMD window contents for the duration of the test so you can review.
I've never seen that specific message before. That said, this already gets us down to a 1-day range, so that's huge progress! Offhand, I'm wondering if bug 1251043 is related given your comment about popup blocking.

One more test, can you try the following mozregression command to further narrow it down?
mozregression --repo mozilla-inbound --good 964a638d77fa --bad a3994143ea12
(In reply to Ryan VanderMeulen [:RyanVM] from comment #17)
> I've never seen that specific message before. That said, this already gets
> us down to a 1-day range, so that's huge progress! Offhand, I'm wondering if
> bug 1251043 is related given your comment about popup blocking.
> 
> One more test, can you try the following mozregression command to further
> narrow it down?
> mozregression --repo mozilla-inbound --good 964a638d77fa --bad a3994143ea12

It is difficult to tell if Bug 1251043 is related, though the same behavior continued in the 2nd round of testing. After the "A Microsoft Dynamics CRM window was unable to open, and may have been blocked by a pop-up blocker...." alert I would add the URL, test again, and receive the error.

Attaching log of the second round of testing now.
mozregression testing returned no ERROR this time. Attaching CMD window contents for the duration of the test so you can review.
Thanks, that narrows it down to what we needed to know!
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=cdc495ec3550e43a6f183c1653346a72f2f6d880&tochange=ee890a109435989837df6bf7b860203bbe80ff4b

Jason, any thoughts as to what might be going on here?
Component: DOM → JavaScript Engine
Flags: needinfo?(jorendorff)
(In reply to Ryan VanderMeulen [:RyanVM] from comment #20)
> Thanks, that narrows it down to what we needed to know!
> https://hg.mozilla.org/integration/mozilla-inbound/
> pushloghtml?fromchange=cdc495ec3550e43a6f183c1653346a72f2f6d880&tochange=ee89
> 0a109435989837df6bf7b860203bbe80ff4b
> 
> Jason, any thoughts as to what might be going on here?

Awesome! Let me know if/when you need anything else from me.

Thank you all for your help. I'm completely blown away by the quality of support I've received here. You guys are the best.
See Also: → 1296374
Regression from 48, I'll track for 49. 
Is it possible we could find some workaround here? I am reluctant to take any more changes for 49 though we can keep it on the radar for the RC3 or in case of a 49 dot release.
(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #23)
> Regression from 48, I'll track for 49. 
> Is it possible we could find some workaround here? I am reluctant to take
> any more changes for 49 though we can keep it on the radar for the RC3 or in
> case of a 49 dot release.

The only workaround available is to alter the workflow so that the lookup field in CRM is not used. This means opening a search window instead, which can take very long to load because it reads and displays all records the lookup field queries against each time. Once loaded you can then search against the full list of results, but depending on the workflow used it is still possible to receive the error from there as well. 

As a result of the above, the only workaround our business users have is to use Google Chrome or Internet Explorer. 

As you mentioned, Google had the same problem. The most recent iteration of this began in version 51.0.2704.63m and was fixed in version 52.0.2743.82m. 

If this is confirmed as a regression issue in 48 and you do not intend to fix it in 48, or even in 49, when can a fix be expected? I only ask because the longer this remains an issue, the less likely our users will be to return to Firefox at all for use with Microsoft Dynamics CRM.
(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #23)
> Is it possible we could find some workaround here?

Taking comment 22 into account, this isn't the right question to ask.  Workarounds are something *developers* -- be it in Mozilla, or on the web -- can deliberately do, in the short term.  They are not something we ask *users* to do.  For deployed software whose breakage will be experienced by users in the field, there isn't really a workaround, as we can't tell users to "do this thing differently to avoid this code you're never going to look at or understand" -- at least, not unless there's a patch available for the deployed software.  Or just switching to another browser.
Let's see how much breaks on aurora when removing Array.prototype.values.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=00eff691634e
Jon, can you please try out the build from comment 26 and confirm that the CRM site works properly with it? You can try it out via mozregression: |mozregression --launch 00eff691634e|

Thanks!
Flags: needinfo?(jon.ferretti)
(In reply to Ryan VanderMeulen [:RyanVM] from comment #27)
> Jon, can you please try out the build from comment 26 and confirm that the
> CRM site works properly with it? You can try it out via mozregression:
> |mozregression --launch 00eff691634e|
> 
> Thanks!

Just attempted to test and received the below error after executing the statement you provided.

0:01.98 ERROR: The url 'https://hg.mozilla.org/integration/mozilla-inbound/json
-pushes?changeset=00eff691634e' returned a 404 error. Please check the validity
of the url.
Sorry, try this instead:
mozregression --launch 00eff691634e --repo try
(In reply to Ryan VanderMeulen [:RyanVM] from comment #29)
> Sorry, try this instead:
> mozregression --launch 00eff691634e --repo try

Thanks Ryan, that launched the build without error and I confirmed that the CRM lookup fields work properly without error in this build.

Let me know if you need anything else.
Thanks!
Flags: needinfo?(jon.ferretti)
Summary: Microsoft Dynamics CRM 2011 Lookup Error since Firefox Version 48.0.2 → Microsoft Dynamics CRM 2011 Lookup Error since Firefox Version 48.0.2 due to Array.prototype.values
See Also: → 1299444
evilpie is working on this - https://treeherder.mozilla.org/#/jobs?repo=try&revision=8965bda9b29e
Assignee: nobody → evilpies
Users who are on 48 are already affected, so releasing 49 with this issue won't change anything for them.

We have the RC3 build released this morning and if we don't see the intel crash there, I want to release with that build.   If we do have to do an RC4 I could potentially take this patch, but would rather defer it so as not to risk slipping the release date further. Right now, we are dependent on someone who uses this software and can see the bug, to test and verify the fix. 

We could take evilpie's patch for a potential 49 dot release.
Attached patch Disable Array.prototype.values (obsolete) — Splinter Review
Attachment #8790961 - Flags: review?(jorendorff)
Attached patch Updates js tests (obsolete) — Splinter Review
Attachment #8790963 - Flags: review?(jorendorff)
Attached patch Fix DOM and Xray test (obsolete) — Splinter Review
Attachment #8790965 - Flags: review?(bugs)
Attachment #8790965 - Flags: review?(bugs) → review+
Attachment #8790961 - Flags: review?(jorendorff) → review+
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment on attachment 8790963 [details] [diff] [review]
Updates js tests

Review of attachment 8790963 [details] [diff] [review]:
-----------------------------------------------------------------

Block-scoped function in non-strict code makes me a little queasy, but I think it would work (in a hypothetical build that has values but sees this test anyway)
Attachment #8790963 - Flags: review?(jorendorff) → review+
Flags: needinfo?(jorendorff)
Hi Tom, the patches on this one were r+d a week ago. Should we consider landing them on m-c? I am interested in uplifting the fix all the way up to 50 if the fix is low risk and has stabilized.
Flags: needinfo?(evilpies)
I generally don't want to land these patches in m-c. We didn't get any regressions reported from this during a full Nightly,Aurora,Beta cycle and we still want to keep this function in the future. I would suggest landing directly on Aurora.
Flags: needinfo?(evilpies)
Weren't we going to create a folded patch that changed the ifdef to NIGHTLY_BUILD so we could land it across all branches?
Flags: needinfo?(evilpies)
There you go.
Flags: needinfo?(evilpies)
My hero, thanks <3
Attachment #8790961 - Attachment is obsolete: true
Attachment #8790963 - Attachment is obsolete: true
Attachment #8790965 - Attachment is obsolete: true
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

Is checking isNightlyBuild okay?
Attachment #8793449 - Flags: review?(bugs)
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/caa21656dc09
Disable Array.prototype.values outside Nightly. r=jorendorff, r=smaug
Keywords: checkin-needed
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

This doesn't really make sense if we know this isn't web compatible.
The initial comment says Chrome had similar issues. How did they end up fixing this. Array.prototype.values is undefined in Chrome.

So, feels like a spec issue.
Attachment #8793449 - Flags: review?(bugs) → review-
I am still optimistic we can ship this at some point. Both Edge and Safari are shipping this, but apparently they don't have to care about legacy Microsoft software. I did file https://github.com/tc39/ecma262/issues/695 just to put this out there.
Keywords: site-compat
https://hg.mozilla.org/mozilla-central/rev/caa21656dc09
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
We need to land this on other branches still.
Status: RESOLVED → REOPENED
Keywords: leave-open
Resolution: FIXED → ---
Bug resolution tracks landing on trunk. The status flags (currently set to affected) track the branch uplifts that still need to happen.
Status: REOPENED → RESOLVED
Closed: 8 years ago8 years ago
Keywords: leave-open
Resolution: --- → FIXED
Blocks: 875433
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

Approval Request Comment
[Feature/regressing bug #]: bug 875433
[User impact if declined]: Various CRM instances like Microsoft Dynamics CRM 2011 and probably other related software like MS Outlook webmail are broken (bug 1296374, bug 1299444)
[Describe test coverage new/current, TreeHerder]: We have tests for Array.prototype.values.
[Risks and why]: Might break code that was introduced since Firefox 48, however overall web compat risk seems low because Chrome also removed this function again for the same reason.
[String/UUID change made/needed]: none
Attachment #8793449 - Flags: approval-mozilla-beta?
Attachment #8793449 - Flags: approval-mozilla-aurora?
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

This is being considered as a dot release ride-along candidate as well.
Attachment #8793449 - Flags: approval-mozilla-release?
Hello Jon, could you please verify this issue is fixed as expected on a latest Nightly build (9/23)? Thanks!
Flags: needinfo?(jon.ferretti)
Array.prototype.values was NOT removed on Nightly. So testing makes no sense.
Flags: needinfo?(jon.ferretti)
(In reply to Ritu Kothari (:ritu) from comment #52)
> Hello Jon, could you please verify this issue is fixed as expected on a
> latest Nightly build (9/23)? Thanks!

(In reply to Tom Schuster [:evilpie] from comment #53)
> Array.prototype.values was NOT removed on Nightly. So testing makes no sense.

If you do end up removing array.prototype.values and need me to test let me know. All I'll need is the mozregression command to pull down the appropriate nightly build and test.
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

I was just told that we got verification on a try build (comment 30), let's uplift it then. Aurora51+, Beta50+
Attachment #8793449 - Flags: approval-mozilla-beta?
Attachment #8793449 - Flags: approval-mozilla-beta+
Attachment #8793449 - Flags: approval-mozilla-aurora?
Attachment #8793449 - Flags: approval-mozilla-aurora+
Backed out for fetch/api/headers/headers-basic.html wpt failures.

https://hg.mozilla.org/releases/mozilla-aurora/rev/fd049ec4c2c8
https://hg.mozilla.org/releases/mozilla-beta/rev/951c4e024745

https://archive.mozilla.org/pub/firefox/tinderbox-builds/mozilla-aurora-linux-debug/1474576799/mozilla-aurora_ubuntu32_vm-debug_test-web-platform-tests-3-bm141-tests1-linux32-build22.txt.gz

TEST-UNEXPECTED-ERROR | /fetch/api/headers/headers-basic.html | TypeError: [].values is not a function

Looks like we need another test fixup here :(. We'll want to make sure it gets upstreamed too.
Flags: needinfo?(evilpies)
Turns out the backout from Beta was a bit premature as the test change the caused it was introduced for 51+ by bug 1291312. I've gone ahead and re-landed it there so it's included in Fx50 beta 2. This should also be fine to land on mozilla-release for an Fx49 dot release if/when such a thing comes to fruition.

https://hg.mozilla.org/releases/mozilla-beta/rev/0764a290e487

James, given that Google un-shipped support for Array.prototype.values as well, this definitely strikes me as something that'll need to be fixed upstream as well. We'll probably want to upstream the changes from attachment 8790965 [details] [diff] [review] as well.
Flags: needinfo?(james)
If these things are landing in mozilla-inbound under testing/web-platform/tests they are upstreamed automatically when we do a sync.
Flags: needinfo?(james)
Flags: needinfo?(evilpies)
Attachment #8794153 - Flags: review?(Ms2ger)
Comment on attachment 8794153 [details] [diff] [review]
Use Symbol.itertor instead of values() to get Iterator prototype

Review of attachment 8794153 [details] [diff] [review]:
-----------------------------------------------------------------

Fine by me, thanks.
Attachment #8794153 - Flags: review?(Ms2ger) → review+
(In reply to :Ms2ger (⌚ UTC+1/+2) from comment #62)
> Comment on attachment 8794153 [details] [diff] [review]
> Use Symbol.itertor instead of values() to get Iterator prototype
> 
> Review of attachment 8794153 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> Fine by me, thanks.

Do fix the commit message ("itertor")
Pushed by evilpies@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/4ee2dc9144c8
Use Symbol.iterator instead of values() to get Iterator prototype. r=Ms2ger
Has anyone been able to confirm this fixes the issue here or with the related Array.prototype.values problems?
See Also: → 1305776
(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #67)
> Has anyone been able to confirm this fixes the issue here or with the
> related Array.prototype.values problems?

in https://bugzilla.mozilla.org/show_bug.cgi?id=1299444#c6 a user confirmed that the issue with OWA got fixed in beta.
Comment on attachment 8793449 [details] [diff] [review]
Disable Array.prototype.values folded and nightly checked

Let's take this as a ridealong for the 49.0.2 release, planned for early next week.
Attachment #8793449 - Flags: approval-mozilla-release? → approval-mozilla-release+
Release note added for 49.0.2: Web compatibility issue with Array.prototype.values (Bug 1299593)
Jon, Firefox 49.0.2 was released yesterday and should contain the fix from this bug. Can you please verify that things are working correctly with it? Thanks!
Flags: needinfo?(jon.ferretti)
(In reply to Ryan VanderMeulen [:RyanVM] from comment #73)
> Jon, Firefox 49.0.2 was released yesterday and should contain the fix from
> this bug. Can you please verify that things are working correctly with it?
> Thanks!

Just tested in 49.0.2 and confirmed that the lookup errors are no longer an issue. Thanks for all your help!
Thanks for all the help in tracking this down!
Status: RESOLVED → VERIFIED
Flags: needinfo?(jon.ferretti)
See Also: → 1420101
Isn't it ironic, these bugs in Microsoft Dynamics CRM and Microsoft Exchange Outlook Web Access hold Chrome and Firefox back from standards compliance, while Microsoft can fix the issue in their goofy browser by making it emulate an even goofier old browser.

Why do you accept responsibility for bugs in broken obsolete Microsoft web apps?  Just because many business users are affected?

Just tell every admin who complains how to fix Microsoft's bugs (flag / userscript / extension / install new version / whatever).  I'm sure the community will spread the word.  Company admins should know how to use google and superuser.com to find answers, right?

In short, this is Microsoft's bug not Mozilla or Chrome's bug.  We can help users to fix it, but not by dropping browser features!
I agree completely with sam, this is a funny way of dealing with the bugs in web applications.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: